Ver Registros de Acceso
Exportar contenido
Consulta el historial de inicios de sesión de los usuarios del sistema.
- En Configuración → Empleados, desplázate a “Registros de Acceso”.
- Revisa la tabla con los accesos registrados.
- (Opcional) Filtra por fecha, usuario o dispositivo.
Información de la tabla
Sección titulada «Información de la tabla»| Columna | Descripción |
|---|---|
| Usuario | Nombre y email del usuario |
| Fecha y Hora | Timestamp del acceso |
| IP | Dirección IP de origen |
| Dispositivo | Navegador y sistema operativo |
| Estado | Éxito o Fallido |
Casos de uso
Sección titulada «Casos de uso»Seguridad:
- Detecta accesos no autorizados
- Verifica intentos fallidos
- Rastrea actividad inusual
Auditoría:
- Cumplimiento RGPD
- Registro de actividad laboral
- Verificación de horarios
Soporte:
- Diagnóstico de problemas de acceso
- Identificación de dispositivos problemáticos
Filtros disponibles
Sección titulada «Filtros disponibles»| Filtro | Descripción |
|---|---|
| Rango de fechas | Desde/hasta |
| Usuario | Por nombre o email |
| Estado | Éxito o Fallido |
| IP | Dirección específica |
Cómo sé que lo hice bien
Sección titulada «Cómo sé que lo hice bien»- La tabla muestra registros ordenados por fecha descendente.
- Filtros aplican correctamente.
- Puedes exportar a Excel si necesitas análisis externo.
Detalles técnicos — Ver Registros de Acceso
Sección titulada «Detalles técnicos — Ver Registros de Acceso»Detalles técnicos
Tabla: access_logs
Campos principales:
interface AccessLog { id: string; user_id: string; business_id: string; login_at: timestamp; ip_address: string; user_agent: string; success: boolean; failure_reason?: string; created_at: timestamp;}Componente: src/panels/admin/components/AccessLogsTable.tsx
RLS Policy:
-- Solo propietarios del negocio pueden ver logsCREATE POLICY "access_logs_owner_view"ON access_logs FOR SELECTUSING ( business_id IN ( SELECT business_id FROM user_businesses WHERE user_id = auth.uid() ));Query de accesos recientes:
SELECT al.*, p.first_name, p.last_name, u.emailFROM access_logs alJOIN auth.users u ON al.user_id = u.idLEFT JOIN profiles p ON al.user_id = p.idWHERE al.business_id = '<business_id>'ORDER BY al.login_at DESCLIMIT 100;Query de intentos fallidos:
SELECT al.*, u.email, COUNT(*) OVER (PARTITION BY al.user_id, DATE(al.login_at)) as intentos_diaFROM access_logs alJOIN auth.users u ON al.user_id = u.idWHERE al.business_id = '<business_id>' AND al.success = false AND al.login_at >= NOW() - INTERVAL '7 days'ORDER BY al.login_at DESC;Análisis de patrones:
-- Horarios de acceso más frecuentesSELECT EXTRACT(HOUR FROM login_at) as hora, COUNT(*) as accesos, COUNT(DISTINCT user_id) as usuarios_unicosFROM access_logsWHERE business_id = '<business_id>' AND success = true AND login_at >= NOW() - INTERVAL '30 days'GROUP BY horaORDER BY hora;