feature/rbac y perfiles implementados

This commit is contained in:
2026-05-21 08:00:43 -06:00
parent 546a411df8
commit dc5f9fd6ce
29 changed files with 2007 additions and 977 deletions

View File

@@ -72,8 +72,8 @@ export default function Users() {
setLoading(false);
})
.catch(err => {
console.error('Error loading users:', err);
setError('Error al cargar usuarios');
setError(err.message);
showMessage(err.message, 'error');
setLoading(false);
});
};
@@ -99,7 +99,6 @@ export default function Users() {
// Siempre sincroniza la información del usuario autenticado en localStorage
getCurrentUser()
.then(data => {
console.log('Respuesta de /api/users/me/:', data);
if (data && data.username) {
localStorage.setItem('username', data.username);
if (data.email) localStorage.setItem('user_email', data.email);
@@ -108,14 +107,10 @@ export default function Users() {
if (data.first_name) localStorage.setItem('user_first_name', data.first_name);
if (data.last_name) localStorage.setItem('user_last_name', data.last_name);
if (typeof data.is_importador !== 'undefined') localStorage.setItem('user_is_importador', String(data.is_importador));
console.log('Guardado en localStorage: username', data.username);
} else {
console.log('No se encontró username en la respuesta');
}
})
.catch((err) => { console.log('Error en fetch /api/users/me/', err); });
// eslint-disable-next-line
}, [showMessage]);
.catch(() => {});
}, []);
// Debounce para el término de búsqueda
useEffect(() => {
@@ -356,26 +351,6 @@ export default function Users() {
);
}
if (error) {
return (
<div className="bg-red-50 border border-red-200 rounded-md p-4">
<div className="flex">
<div className="flex-shrink-0">
<svg className="h-5 w-5 text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z" />
</svg>
</div>
<div className="ml-3">
<h3 className="text-sm font-medium text-red-800">Error al cargar usuarios</h3>
<div className="mt-2 text-sm text-red-700">
<p>{error}</p>
</div>
</div>
</div>
</div>
);
}
// Cuenta de usuarios verificados y activos
const verifiedCount = users.filter(u => u.is_verified === true).length;
const activeCount = users.filter(u => u.is_active === true).length;