48 lines
1.3 KiB
JavaScript
48 lines
1.3 KiB
JavaScript
import axios from 'axios';
|
|
import dispatcher from '../stores/dispatcher';
|
|
import * as GlobalAction from './GlobalAction';
|
|
|
|
let currentToken = null;
|
|
const tokenKey = 'gotify-login-key';
|
|
|
|
/**
|
|
* Set the authorization token for the next requests.
|
|
* @param {string} token the gotify application token
|
|
*/
|
|
export function setAuthorizationToken(token) {
|
|
currentToken = token;
|
|
if (token) {
|
|
localStorage.setItem(tokenKey, token);
|
|
axios.defaults.headers.common['X-Gotify-Key'] = token;
|
|
} else {
|
|
localStorage.removeItem(tokenKey);
|
|
delete axios.defaults.headers.common['X-Gotify-Key'];
|
|
}
|
|
}
|
|
|
|
axios.interceptors.response.use(null, (error) => {
|
|
if (error.response.status === 401) {
|
|
setAuthorizationToken(null);
|
|
dispatcher.dispatch({type: 'REMOVE_CURRENT_USER'});
|
|
}
|
|
|
|
console.warn('Error status', error.response.status);
|
|
return Promise.reject(error);
|
|
});
|
|
|
|
/**
|
|
* @return {string} the application token
|
|
*/
|
|
export function getToken() {
|
|
return currentToken;
|
|
}
|
|
|
|
/** Checks if the current user is logged, if so update the state. */
|
|
export function checkIfAlreadyLoggedIn() {
|
|
const key = localStorage.getItem(tokenKey);
|
|
if (key) {
|
|
setAuthorizationToken(key);
|
|
GlobalAction.initialLoad();
|
|
}
|
|
}
|