📡 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, elAuthController ú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étodobooted(), 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.