Skip to content

Instantly share code, notes, and snippets.

@abdullah
Created April 10, 2017 16:26
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save abdullah/3afb771f1f32905d3df542b6d0146ab0 to your computer and use it in GitHub Desktop.
Save abdullah/3afb771f1f32905d3df542b6d0146ab0 to your computer and use it in GitHub Desktop.
Auth actions with vuex and axios
/* eslint-disable */
import axios from 'axios';
import TokenStorage from '@/helpers/tokenStorage';
import store from '@/store';
import router from '@/router';
axios.interceptors.request.use(
config => {
const token = TokenStorage.get();
if (token) {
config.headers.Authorization = `Bearer ${token.access_token}`;
}
return config;
},
error => Promise.reject(error)
);
axios.interceptors.response.use(
response => response,
error => {
let originalRequest = error.config;
if (error.response.status === 401 && !originalRequest._retry) {
originalRequest._retry = true;
return store
.dispatch('auth/refreshToken')
.then(() => {
const token = TokenStorage.get();
originalRequest.headers.Authorization = `Bearer ${token.access_token}`;
return axios(originalRequest);
})
.catch(e => {
router.push('/login');
return Promise.reject(error);
});
}
return Promise.reject(error);
}
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment