import axios from 'axios'; /** * Instância centralizada do Axios para todas as comunicações com o backend. * A base URL é configurada via variável de ambiente VITE_API_URL. * * Exemplo de configuração no .env: * VITE_API_URL=https://dev.workspace.itguys.com.br/api */ const api = axios.create({ baseURL: import.meta.env.VITE_API_URL || 'https://dev.workspace.itguys.com.br/api', headers: { 'Content-Type': 'application/json', }, timeout: 120000, // 120 segundos (2 minutos) para lidar com a lentidão do backend }); // Interceptor para adicionar o token em cada requisição api.interceptors.request.use( (config) => { const token = localStorage.getItem('x-access-token'); if (token) { config.headers['x-access-token'] = token; } return config; }, (error) => { return Promise.reject(error); } ); // Interceptor para tratamento de erros de resposta api.interceptors.response.use( (response) => response, (error) => { // Tratamento de erro 401 (não autorizado) if (error.response?.status === 401) { // Limpar token inválido localStorage.removeItem('x-access-token'); localStorage.removeItem('integra_user'); // Redirecionar para login se não estiver já na página de login const currentPath = window.location.pathname; if (!currentPath.includes('/login')) { // Redireciona para o login específico do ambiente atual if (currentPath.includes('/plataforma/prafrot')) { window.location.href = '/plataforma/prafrot/login'; } else if (currentPath.includes('/plataforma/financeiro-v2')) { window.location.href = '/plataforma/auth/login-finance'; } else if (currentPath.includes('/plataforma/fleet-v2')) { window.location.href = '/plataforma/auth/login'; } else if (currentPath.includes('/plataforma/hr')) { window.location.href = '/plataforma/hr/login'; } else if (currentPath.includes('/plataforma/fleet')) { window.location.href = '/plataforma/fleet/login'; } else { // Default para o login global do sistema window.location.href = '/plataforma/auth/login'; } } } return Promise.reject(error); } ); export default api;