web/plugins/Chapar/index.js

46 lines
998 B
JavaScript

import axios from "axios";
export const getToken = () => {
return localStorage.getItem("token");
};
const Chapar = axios.create({
baseURL: process.env.NEXT_PUBLIC_API_URL,
timeout: 10000,
headers: {
"Content-type": "application/json",
"Access-Control-Allow-Origin": "*",
},
});
// Request interceptor to conditionally add token to headers
Chapar.interceptors.request.use(
(config) => {
const token = getToken();
if (token && !config.isPublic) {
config.headers.Authorization = "Bearer" + " " + token;
}
return config;
},
(error) => {
return Promise.reject(error);
}
);
// Response interceptor to handle responses
Chapar.interceptors.response.use(
(response) => {
return response.data;
},
(error) => {
const status = error?.response?.status;
if (status === 401) {
localStorage.removeItem("token");
window.location.href = "/login";
}
return Promise.reject({ error, status });
}
);
export default Chapar;