Files
2018-05-07 15:26:23 +08:00

56 lines
1.3 KiB
JavaScript

import axios from 'axios'
import store from '~/store'
import router from '~/router'
import swal from 'sweetalert2'
import i18n from '~/plugins/i18n'
// Request interceptor
axios.interceptors.request.use(request => {
const token = store.getters['auth/token']
if (token) {
request.headers.common['Authorization'] = `Bearer ${token}`
}
const locale = store.getters['lang/locale']
if (locale) {
request.headers.common['Accept-Language'] = locale
}
// request.headers['X-Socket-Id'] = Echo.socketId()
return request
})
// Response interceptor
axios.interceptors.response.use(response => response, error => {
const { status } = error.response
if (status >= 500) {
swal({
type: 'error',
title: i18n.t('error_alert_title'),
text: i18n.t('error_alert_text'),
reverseButtons: true,
confirmButtonText: i18n.t('ok'),
cancelButtonText: i18n.t('cancel')
})
}
if (status === 401 && store.getters['auth/check']) {
swal({
type: 'warning',
title: i18n.t('token_expired_alert_title'),
text: i18n.t('token_expired_alert_text'),
reverseButtons: true,
confirmButtonText: i18n.t('ok'),
cancelButtonText: i18n.t('cancel')
}).then(async () => {
await store.dispatch('auth/logout')
router.push({ name: 'login' })
})
}
return Promise.reject(error)
})