68 lines
2.2 KiB
JavaScript
68 lines
2.2 KiB
JavaScript
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;
|