import axios from 'axios' import router from './router' const api = axios.create({ baseURL: import.meta.env.VITE_API_URL, headers: { 'Content-Type': 'application/json', Accept: 'application/json' } }); // Request interceptor api.interceptors.request.use( (config) => { const token = localStorage.getItem('token') if (token) { config.headers.Authorization = `Bearer ${token}` } return config }, (error) => { return Promise.reject(error) } ) // Response interceptor api.interceptors.response.use( (response) => { return response }, async (error) => { const originalRequest = error.config // Si el error es 401 y no es un intento de re-autenticación if (error.response?.status === 401 && !originalRequest._retry) { originalRequest._retry = true // Limpiar autenticación localStorage.removeItem('token') localStorage.removeItem('user') // Redirigir a login router.push('/login') return Promise.reject(error) } // Manejar otros errores if (error.response?.status === 403) { router.push('/unauthorized') } return Promise.reject(error) } ) export default api