Untitled
unknown
javascript
4 years ago
1.4 kB
12
Indexable
import axios from 'axios';
export const baseURL = process.env.REACT_APP_BACKEND_URL;
const axiosInstance = axios.create({
baseURL,
});
axiosInstance.interceptors.response.use(
response => response,
error => {
const originalRequest = error.config;
const refreshToken = localStorage.getItem('refreshToken');
const url = error?.response?.config.url;
if (
refreshToken &&
error?.response?.status === 401 &&
!originalRequest.retry &&
!['/users/refresh', '/users/verify'].includes(url)
) {
originalRequest.retry = true;
return axiosInstance
.post('/users/refresh', { refresh: refreshToken })
.then(res => {
localStorage.setItem('accessToken', res.data.access);
localStorage.setItem('refreshToken', res.data.refresh);
axiosInstance.defaults.headers.common.Authorization = `Bearer ${res.data.access}`;
return axiosInstance({
...originalRequest,
headers: {
...originalRequest.headers,
Authorization: `Bearer ${res.data.access}`,
},
});
});
}
return Promise.reject(
(error.response && error.response.data) || {
detail: 'Something went wrong',
}
);
}
);
export { axiosInstance, axiosMockInstance };Editor is loading...