Skip to content

Instantly share code, notes, and snippets.

@fntneves
Last active May 3, 2016 08:12
Show Gist options
  • Save fntneves/22285e80c93320bcb9744912621a2a95 to your computer and use it in GitHub Desktop.
Save fntneves/22285e80c93320bcb9744912621a2a95 to your computer and use it in GitHub Desktop.
Json Web Token Interceptor for VueJS
import Auth from '../../modules/Auth';
const LOGIN_NAMED_ROUTE = 'login';
const EXPIRED_ERROR = 'token_expired';
export default function () {
return {
request: (request) => {
let token = Auth.token();
if(!token) {
this.$router.go(LOGIN_NAMED_ROUTE);
} else {
request.headers['Authorization'] = 'Bearer ' + Auth.token();
}
return request;
},
response: (response) => {
let request = response.request;
switch(response.status) {
case 401:
if(response.data.error === EXPIRED_ERROR) {
return Auth.refresh(this, () => {
return this.$http.get(request.root).then((response) => {
return response;
});
});
}
case 400:
this.$router.go(LOGIN_NAMED_ROUTE);
}
return response;
},
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment