mirror of
https://git.meshkee.com/cssd/cssd-front.git
synced 2026-10-13 01:43:18 +03:30
fix
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
import axios from 'axios'
|
||||
import { TokenService } from '../auth/storage.service'
|
||||
import store from '@/store'
|
||||
|
||||
const ApiService = {
|
||||
|
||||
init(baseURL) {
|
||||
axios.defaults.baseURL = baseURL;
|
||||
},
|
||||
|
||||
setHeader() {
|
||||
axios.defaults.headers.common["Accept"] = `application/json`;
|
||||
axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
|
||||
},
|
||||
|
||||
setAuthHeader() {
|
||||
axios.defaults.headers.common["Authorization"] = `Bearer ${TokenService.getToken()}`;
|
||||
},
|
||||
|
||||
removeAuthHeader() {
|
||||
axios.defaults.headers.common["Authorization"] = null;
|
||||
},
|
||||
|
||||
get(resource) {
|
||||
return axios.get(resource)
|
||||
},
|
||||
|
||||
post(resource, data) {
|
||||
return axios.post(resource, data)
|
||||
},
|
||||
|
||||
put(resource, data) {
|
||||
data['_method'] = 'put';
|
||||
return axios.post(resource, data)
|
||||
},
|
||||
|
||||
delete(resource) {
|
||||
let data = {'_method': 'delete'};
|
||||
return axios.post(resource, data)
|
||||
},
|
||||
|
||||
/**
|
||||
* Perform a custom Axios request.
|
||||
*
|
||||
* data is an object containing the following properties:
|
||||
* - method
|
||||
* - url
|
||||
* - data ... request payload
|
||||
* - auth (optional)
|
||||
* - username
|
||||
* - password
|
||||
**/
|
||||
customRequest(data) {
|
||||
return axios(data);
|
||||
},
|
||||
|
||||
_401interceptor: null,
|
||||
|
||||
mount401Interceptor() {
|
||||
this._401interceptor = axios.interceptors.response.use(
|
||||
(response) => {
|
||||
return response
|
||||
},
|
||||
async (error) => {
|
||||
if (error.request.status == 401) {
|
||||
if (error.config.url.includes('login')) {
|
||||
// Refresh token has failed. Logout the user
|
||||
store.dispatch('auth/logout');
|
||||
throw error;
|
||||
} else {
|
||||
// Refresh the access token
|
||||
try{
|
||||
await store.dispatch('refreshToken')
|
||||
// Retry the original request
|
||||
return this.customRequest({
|
||||
method: error.config.method,
|
||||
url: error.config.url,
|
||||
data: error.config.data
|
||||
})
|
||||
} catch (e) {
|
||||
// Refresh has failed - reject the original request
|
||||
throw error
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If error was not 401 just reject as is
|
||||
throw error
|
||||
}
|
||||
)
|
||||
},
|
||||
|
||||
unmount401Interceptor() {
|
||||
// Eject the interceptor
|
||||
axios.interceptors.response.eject(this._401interceptor)
|
||||
}
|
||||
}
|
||||
|
||||
export default ApiService
|
||||
export { ApiService }
|
||||
Reference in New Issue
Block a user