Skip to main content
El módulo de auditoría actúa como el observador principal del sistema. Su objetivo es mantener un registro inalterable de acciones críticas (inicios de sesión, altas, y bajas lógicas) cumpliendo con políticas estrictas de privacidad en la manipulación de datos sensibles (modo demo).

📡 Arquitectura Orientada a Eventos

Para evitar acoplar la lógica de auditoría en los controladores, la aplicación aprovecha el sistema de Eventos y Listeners de Laravel. Por ejemplo, durante el flujo de autenticación, el AuthController únicamente emite el token. Es el AuditLoginListener quien intercepta el evento de forma pasiva, recopila el User-Agent, captura el contexto de la petición y lo inserta en el payload JSON de la bitácora.

🕵️‍♂️ Privacidad desde el Diseño (Privacy by Design)

Para cumplir con regulaciones modernas de protección de datos de los usuarios que lo utilicen (donde una IP se considera información personal), el sistema no almacena direcciones exactas. Esta responsabilidad se extrajo a un Trait reutilizable (AuditableIp).

🔄 Rotación Automática y Mantenimiento (Model Events)

Para asegurar que la base de datos no se sature de registros históricos innecesarios y optimizar el rendimiento de las consultas, el sistema cuenta con un mecanismo de “rotación de logs” integrado directamente en el ciclo de vida del modelo de Eloquent. A través del método booted(), el modelo AuditLog intercepta el evento de creación. Cada vez que se inserta un nuevo registro, el sistema verifica dinámicamente si se ha superado el umbral máximo permitido (50 eventos) y, de ser así, purga automáticamente los registros más antiguos.