-
Notifications
You must be signed in to change notification settings - Fork 0
/
interceptor.js
48 lines (40 loc) · 1.31 KB
/
interceptor.js
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
36
37
38
39
40
41
42
43
44
45
46
47
48
import axios from "axios";
//DEMO
// export const axiosInstance = axios.create({
// baseURL: "http://localhost:5005/api/",
// });
//LIVE
export const axiosInstance = axios.create({
baseURL: "https://movie-dashboard-server.onrender.com/api/",
});
//401 unauthorized
axiosInstance.interceptors.response.use(
(response) => response,
async (error) => {
if (error.response.status === 401) {
let userdata = JSON.parse(localStorage.getItem("user_data"));
error.config._retry = true;
const response = await axiosInstance.get("/auth/refresh-token");
if (userdata) {
userdata.access_token = response.data.access_token;
localStorage.setItem("user_data", JSON.stringify(userdata));
window.location.reload();
}
}
return Promise.reject(error);
}
);
//attach token
axiosInstance.interceptors.request.use(
(request) => {
const userData = JSON.parse(localStorage.getItem("user_data"));
const accessToken = userData?.access_token;
const bearerToken = `Bearer ${accessToken}`;
if (accessToken) {
request.headers.authorization = bearerToken;
request.withCredentials = true;
}
return request;
},
(error) => error
);