Auditoría del Equipo
Este componente representa una vista administrativa de auditoría para gestionar y revisar los miembros del equipo de una empresa. Permite filtrar, editar roles, marcar perfiles como completos/incompletos, activar usuarios inactivos y realizar eliminaciones lógicas (soft delete).
🔍 Ubicación
src/pages/equipo/EquipoAuditoria.tsx
📦 Dependencias
-
Hooks y contexto:
useUser
– Hook que proporciona el usuario autenticado actual.useToast
– Hook personalizado para mostrar notificaciones.useEffect
,useState
– Hooks de React.
-
Librerías externas:
axios
– Cliente HTTP para consumir endpoints protegidos por token.lucide-react
– Iconos (Pencil
,Trash
).
-
Constantes:
url
– URL base para las peticiones a la API.
🧩 Props
Este componente no recibe props directamente. Está diseñado como una vista protegida para usuarios con roles ADMIN
o DESARROLLADOR
.
🧱 Estructuras de datos
interface MiembroEquipo {
idUsuario: number;
nombreCompleto: string;
correo: string;
rolEquipo: "LECTOR" | "COMENTARISTA" | "EDITOR";
estado: "activo" | "inactivo";
perfilCompleto: boolean;
createdAt: string;
updatedAt: string;
deletedAt?: string | null;
empresaId: number;
}
⚙️ Lógica interna
📌 Estado:
miembros
: lista de usuarios cargados desde el backend.filtroNombre
,filtroCorreo
,filtroRol
,filtroEstado
,filtroPerfilCompleto
: filtros activos para la tabla.editar
: usuario que se está editando actualmente.nuevoRol
,nuevoPerfilCompleto
: valores seleccionados en el modal de edición.confirmEliminarId
: ID del usuario que se desea eliminar.activarUsuario
: indica si se debe reactivar un usuario inactivo.
🔁 Efectos:
useEffect
: carga los miembros del equipo al montar el componente (cargarMiembros
).
📤 Funciones principales:
cargarMiembros
: obtiene todos los miembros del equipo mediante API.filtrar
: aplica filtros de búsqueda usando el endpoint de filtrado.actualizarRol
: actualiza el rol y perfil del usuario (y puede reactivarlo si está inactivo).eliminar
: realiza una eliminación lógica del usuario (soft delete
).esAutorizado
: verifica si el usuario autenticado tiene permisos (ADMIN
oDESARROLLADOR
).
🎨 Interfaz y diseño
-
Título principal:
"👥 Auditoría del Equipo"
con estilo destacado (text-wine-red
). -
Filtros (nombre, correo, rol, estado, perfil) dispuestos horizontalmente.
-
Tabla con las siguientes columnas:
- ID, Nombre, Correo, Rol, Estado, Empresa ID, Perfil Completo, Fechas de creación/actualización/eliminación.
- Acciones (
Editar
,Eliminar
) según el rol del usuario.
-
Modal de edición con:
- Select para rol y perfil completo.
- Checkbox para reactivar usuarios inactivos.
-
Modal de confirmación de eliminación con advertencia clara.
🔐 Reglas de acceso
- Solo usuarios con rol
"ADMIN"
o"DESARROLLADOR"
pueden acceder a esta vista. - Si no tienen permisos, se muestra el mensaje:
"⚠️ No tienes permisos para acceder a esta auditoría."
y se oculta el contenido.
💡 Consideraciones adicionales
-
El valor
perfilCompleto
se interpreta de forma inversa en el UI:false
→"Perfil completo"
true
→"Perfil incompleto"
-
Se utiliza
localStorage
para recuperar el token de autenticación. -
El botón de eliminación solo está disponible para usuarios con rol
ADMIN
.
📝 Mejoras sugeridas
- Agregar indicadores de carga o spinners para mejorar la experiencia de usuario.
- Validaciones más detalladas en el modal de edición.
- Paginar la tabla si hay muchos registros.
- Confirmación adicional antes de aplicar reactivaciones masivas.
🧪 Ruta protegida
Este componente es parte de las rutas protegidas de equipo:
/equipo/auditoria
Está destinado principalmente para fines administrativos y de monitoreo de usuarios del sistema.