import axios from 'axios'; const API = process.env.NEXT_PUBLIC_API_URL; if (!API) { throw new Error('ERROR is not defined'); } const axiosInstance = axios.create({ baseURL: API, // Replace with your API base URL timeout: 100000, // Request timeout in milliseconds headers: { 'Content-Type': 'application/json', }, }); // Request interceptor para agregar el token de autenticación axiosInstance.interceptors.request.use( (config) => { // Obtener el token del sessionStorage const token = sessionStorage.getItem('token'); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }, (error) => { return Promise.reject(error); } ); // Response interceptor para manejar errores de autenticación axiosInstance.interceptors.response.use( (response) => { return response; }, (error) => { // Si el token ha expirado o es inválido (401) if (error.response?.status === 401) { // Limpiar el sessionStorage sessionStorage.removeItem('token'); sessionStorage.removeItem('user'); // Redireccionar al login solo si no estamos ya en la página de login if ( typeof window !== 'undefined' && !window.location.pathname.includes('/login') ) { window.location.href = '/login'; } } return Promise.reject(error); } ); export default axiosInstance;