Ir al contenido

Ver Logs de Acceso al Portal

Visualiza el historial de accesos del cliente al portal con detalles de IP, acciones realizadas y timestamp.

  1. Localiza el cliente en la lista.
  2. Clic en el icono de ojo (Ver) — se abre la vista de detalle.
  3. Seccion “Registro de Accesos al Portal” — se muestra la tabla de logs.
  4. Revisa los accesos: fecha, tipo de accion, recurso accedido, IP y estado.
TipoIconoDescripcion
VistaOjoCliente visualizo un documento
DescargaFlecha abajoCliente descargo un PDF
NotaMensajeCliente anadio una nota o comentario
AprobacionCheckCliente aprobo un presupuesto
LoginEscudoCliente inicio sesion en el portal
ColumnaDescripcion
TipoIcono y etiqueta del tipo de accion
RecursoID del documento accedido (factura, presupuesto, albaran)
IPDireccion IP del cliente
NavegadorUser agent resumido
EstadoExito (verde) o Fallo (rojo)
FechaTimestamp del acceso (formato: DD/MM/YYYY HH:MM)
Motivo falloSi fallo, descripcion del error

Auditoria de accesos:

  • Verifica quien accedio al portal y cuando.
  • Detecta accesos no autorizados (IP desconocida).

Soporte al cliente:

  • Confirma si el cliente visualizo la factura enviada.
  • Verifica si el cliente descargo el PDF correctamente.

Seguridad:

  • Identifica intentos de acceso fallidos (token invalido, email no verificado).
🔧 Detalles Tecnicos — Ver Logs Portal

Tablas involucradas:

TablaColumnas claveFK
customer_portal_access_logid, customer_id, token_id, access_type, resource_id, ip_address, user_agent, success, failure_reason, created_atcustomers, customer_portal_tokens

Tipos de access_type:

  • view — Visualizacion de documento
  • download — Descarga de PDF
  • note — Anadio nota/comentario
  • approve — Aprobo presupuesto
  • login — Inicio sesion

Campos de log:

CampoTipoDescripcion
customer_idUUIDFK a cliente
token_idUUIDFK a token usado
access_typeVARCHARTipo de accion
resource_idUUIDID del documento accedido (nullable)
ip_addressVARCHARIP del cliente
user_agentTEXTNavegador y SO
successBOOLEANTrue si exito, False si fallo
failure_reasonTEXTMotivo del fallo (nullable)
created_atTIMESTAMPFecha y hora del acceso

Queries de diagnostico:

-- Ultimos 50 accesos por cliente
SELECT * FROM customer_portal_access_log
WHERE customer_id = '<customer_id>'
ORDER BY created_at DESC
LIMIT 50;
-- Accesos fallidos
SELECT * FROM customer_portal_access_log
WHERE customer_id = '<customer_id>'
AND success = false
ORDER BY created_at DESC;
-- Accesos por IP sospechosa
SELECT * FROM customer_portal_access_log
WHERE customer_id = '<customer_id>'
AND ip_address = '<ip_sospechosa>'
ORDER BY created_at DESC;
-- Resumen de accesos por tipo
SELECT access_type, COUNT(*) as count,
SUM(CASE WHEN success THEN 1 ELSE 0 END) as success_count
FROM customer_portal_access_log
WHERE customer_id = '<customer_id>'
GROUP BY access_type;

Componente:

  • PortalAccessLogs.tsx
  • Props: customerId
  • Carga: loadAccessLogs() — Query a customer_portal_access_log
  • Limite: 50 registros mas recientes

Politicas RLS:

  • Solo usuarios autenticados del negocio pueden ver logs
  • Aislamiento por business_id via join con customers