Feat: Se modifican visual de menú reportes

- Se limita la visual del menú de reportes a los usuarios según los permisos de acceso.
- Se soluciona bug en mensaje al ingresar usuario y/o clave inválidos.
This commit is contained in:
2025-08-11 15:42:23 -03:00
parent 2e7d1e36be
commit b594a48fde
2 changed files with 77 additions and 95 deletions

View File

@@ -33,19 +33,18 @@ apiClient.interceptors.response.use(
(error) => {
// Cualquier código de estado que este fuera del rango de 2xx causa la ejecución de esta función
if (axios.isAxiosError(error) && error.response) {
if (error.response.status === 401) {
// Token inválido o expirado
console.warn("Error 401: Token inválido o expirado. Deslogueando...");
// Verificamos si la petición fallida NO fue al endpoint de login.
const isLoginAttempt = error.config?.url?.endsWith('/auth/login');
// Solo activamos el deslogueo automático si el error 401 NO es de un intento de login.
if (error.response.status === 401 && !isLoginAttempt) {
console.warn("Error 401 (Token inválido o expirado) detectado. Deslogueando...");
// Limpiar localStorage y recargar la página.
// AuthContext se encargará de redirigir a /login al recargar porque no encontrará token.
localStorage.removeItem('authToken');
localStorage.removeItem('authUser'); // Asegurar limpiar también el usuario
// Forzar un hard refresh para que AuthContext se reinicialice y redirija
// Esto también limpiará cualquier estado de React.
// --- Mostrar mensaje antes de redirigir ---
localStorage.removeItem('authUser');
alert("Tu sesión ha expirado o no es válida. Serás redirigido a la página de inicio de sesión.");
window.location.href = '/login'; // Redirección más directa
window.location.href = '/login';
}
}
// Es importante devolver el error para que el componente que hizo la llamada pueda manejarlo también si es necesario