1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import Vue from 'vue'
- import axios from 'axios'
- import VueAxios from 'vue-axios'
- import router from './routes.js'
- Vue.use(VueAxios, axios)
- Vue.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
- let token = document.head.querySelector('meta[name="csrf-token"]');
- if (token) {
- Vue.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
- } else {
- console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
- }
- Vue.axios.interceptors.request.use(function (request) {
- const authToken = localStorage.getItem('jwt')
- if(authToken) {
- request.headers.common['Authorization'] = 'Bearer ' + authToken
- }
- request.headers.common['Content-Type'] = 'application/json'
- return request
- })
- Vue.axios.interceptors.response.use(response => response, error => {
- // Return the error when we need to handle it at component level
- if( error.config.hasOwnProperty('returnError') && error.config.returnError === true ) {
- return Promise.reject(error);
- }
- // Return the error for form validation at component level
- if( error.response.status === 422 ) {
- return Promise.reject(error);
- }
- // Otherwise we push to a specific or generic error view
- let routeName = 'genericError'
- if ( error.response.status === 401 ) {
- localStorage.removeItem('jwt');
- localStorage.removeItem('user');
- routeName = 'login'
- }
-
- if ( error.response.status === 404 ) routeName = '404'
- router.push({ name: routeName, params: { err: error.response } })
- throw new Vue.axios.Cancel();
- })
|