import axios from "axios"; import AuthService from "@/services/auth"; import router from "@/router"; const http = axios.create({ baseURL: import.meta.env.VITE_DJANGO_BASE_URL, headers: { "Content-Type": "application/json", }, }); http.interceptors.request.use( (config) => { const token = AuthService.getAccessToken(); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }, (error) => Promise.reject(error), ); http.interceptors.response.use( (response) => response, async (error) => { const originalRequest = error.config; if (error.response?.status === 401 && !originalRequest._retry) { originalRequest._retry = true; try { const newAccess = await AuthService.refresh(); originalRequest.headers.Authorization = `Bearer ${newAccess}`; return http.request(originalRequest); } catch (refreshError) { AuthService.logout(); router.push("/autenticarse"); return Promise.reject(refreshError); } } return Promise.reject(error); }, ); export default http;