Add axios default config

This commit is contained in:
Jannis Mattheis 2018-03-15 20:25:36 +01:00 committed by Jannis Mattheis
parent fb83281978
commit c19f5b62a0
1 changed files with 47 additions and 0 deletions

View File

@ -0,0 +1,47 @@
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();
}
}