Files
front-AT/app/lib/apiClient.ts
T

61 lines
1.2 KiB
TypeScript

import axios from "axios";
import Cookies from "js-cookie";
import { envConfig } from "./config";
if (!envConfig.apiUrl) {
console.error("API URL is not defined in envConfig");
}
const apiClient = axios.create({
baseURL: envConfig.apiUrl,
timeout: 10000,
headers: {
"Content-Type": "application/json",
},
});
apiClient.interceptors.request.use(
(config) => {
const token = Cookies.get("token");
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
},
(error) => {
return Promise.reject(error);
}
);
apiClient.interceptors.response.use(
(response) => response,
(error) => {
if (error.response) {
const status = error.response.status;
if (status === 401) {
Cookies.remove("token");
Cookies.remove("user");
if (
typeof window !== "undefined" &&
!window.location.pathname.includes("/")
) {
window.location.href = "/";
}
}
if (status === 403) {
if (typeof window !== "undefined") {
window.location.href = "/Impresiones";
}
}
}
return Promise.reject(error);
}
);
export default apiClient;
//IO
//Mike