-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaxios.js
More file actions
35 lines (32 loc) · 1.25 KB
/
axios.js
File metadata and controls
35 lines (32 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import axios from 'axios';
import { useUserStore } from '@/stores/user';
import router from '@/router/index';
const axiosInstance = axios.create({
baseURL: import.meta.env.PROD && import.meta.env.VITE_API_URL ? import.meta.env.VITE_API_URL + '/api' : '/api',
});
axiosInstance.interceptors.response.use(
response => response,
error => {
if (error.response && error.response.status === 401) {
const userStore = useUserStore();
switch (error.response.headers['client-action-required']) {
case 'login':
userStore.clearUser();
router.push({
name: 'LoginPage',
query: { next: router.currentRoute.value.fullPath }
});
break;
case 'verify':
userStore.user.verified = false;
router.push({
name: 'VerifyPage',
query: { next: router.currentRoute.value.fullPath }
});
}
}
if (error.response && error.response.data.message) error.message = error.response.data.message;
return Promise.reject(error);
}
);
export default axiosInstance;