Se soluciono autenticacion
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import { fetchUsers, createUser, updateUser, deleteUser } from '../api/users.ts';
|
||||
import { fetchUsers, createUser, updateUser, deleteUser, getCurrentUser } from '../api/users.ts';
|
||||
import { useNotification } from '../context/NotificationContext';
|
||||
|
||||
const initialForm = {
|
||||
@@ -44,33 +44,24 @@ export default function Users() {
|
||||
const [itemsPerPage, setItemsPerPage] = useState(10);
|
||||
const { showMessage } = useNotification();
|
||||
|
||||
const token = localStorage.getItem('access');
|
||||
|
||||
const loadUsers = () => {
|
||||
setLoading(true);
|
||||
fetchUsers(token)
|
||||
fetchUsers()
|
||||
.then(data => {
|
||||
setUsers(data);
|
||||
setLoading(false);
|
||||
})
|
||||
.catch(err => {
|
||||
if (err.message === 'SESSION_EXPIRED') {
|
||||
localStorage.removeItem('access');
|
||||
localStorage.removeItem('refresh');
|
||||
showMessage('Tu sesión ha expirado, por favor inicia sesión de nuevo.', 'error');
|
||||
setTimeout(() => {
|
||||
window.location.href = '/login';
|
||||
}, 2000);
|
||||
} else {
|
||||
setError(err.message);
|
||||
}
|
||||
console.error('Error loading users:', err);
|
||||
setError('Error al cargar usuarios');
|
||||
setLoading(false);
|
||||
});
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
// Si no hay token, limpiar y redirigir a login inmediatamente
|
||||
if (!token) {
|
||||
const accessToken = localStorage.getItem('access');
|
||||
if (!accessToken) {
|
||||
localStorage.removeItem('access');
|
||||
localStorage.removeItem('refresh');
|
||||
localStorage.removeItem('username');
|
||||
@@ -86,27 +77,7 @@ export default function Users() {
|
||||
|
||||
loadUsers();
|
||||
// Siempre sincroniza la información del usuario autenticado en localStorage
|
||||
fetch(`${import.meta.env.VITE_EFC_API_URL}/user/users/me/`, {
|
||||
headers: { 'Authorization': `Bearer ${token}` }
|
||||
})
|
||||
.then(async res => {
|
||||
if (!res.ok) {
|
||||
// Token inválido o expirado, limpiar localStorage y redirigir a login
|
||||
console.log('Token inválido o expirado');
|
||||
localStorage.removeItem('access');
|
||||
localStorage.removeItem('refresh');
|
||||
localStorage.removeItem('username');
|
||||
localStorage.removeItem('user_email');
|
||||
localStorage.removeItem('user_id');
|
||||
localStorage.removeItem('user_groups');
|
||||
localStorage.removeItem('user_first_name');
|
||||
localStorage.removeItem('user_last_name');
|
||||
localStorage.removeItem('user_is_importador');
|
||||
window.location.href = '/login';
|
||||
return null;
|
||||
}
|
||||
return res.json();
|
||||
})
|
||||
getCurrentUser()
|
||||
.then(data => {
|
||||
console.log('Respuesta de /api/users/me/:', data);
|
||||
if (data && data.username) {
|
||||
@@ -146,13 +117,13 @@ export default function Users() {
|
||||
setSubmitting(true);
|
||||
try {
|
||||
if (editingId) {
|
||||
await updateUser(token, editingId, form);
|
||||
await updateUser(editingId, form);
|
||||
showMessage('Usuario actualizado exitosamente', 'success');
|
||||
setShowEditModal(false);
|
||||
} else {
|
||||
const groups = createType === 'importador' ? [3, 5] : [4, 3];
|
||||
const extra = createType === 'importador' ? { is_importador: true } : {};
|
||||
await createUser(token, { ...form, groups, ...extra });
|
||||
await createUser({ ...form, groups, ...extra });
|
||||
showMessage(createType === 'importador' ? 'Importador creado exitosamente' : 'Usuario creado exitosamente', 'success');
|
||||
setShowCreateModal(false);
|
||||
}
|
||||
@@ -170,7 +141,7 @@ export default function Users() {
|
||||
if (!userToDelete) return;
|
||||
setSubmitting(true);
|
||||
try {
|
||||
await deleteUser(token, userToDelete.id);
|
||||
await deleteUser(userToDelete.id);
|
||||
showMessage('Usuario eliminado exitosamente', 'success');
|
||||
setShowDeleteModal(false);
|
||||
setUserToDelete(null);
|
||||
|
||||
Reference in New Issue
Block a user