From f2ff7f1dc75e239c896a588aafa175e8a48fa6c2 Mon Sep 17 00:00:00 2001 From: netkas Date: Mon, 2 Jun 2025 18:28:37 -0400 Subject: [PATCH] Enhance audit logging with detailed operator and entity information validation and logging --- .../Classes/Managers/AuditLogManager.php | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/FederationServer/Classes/Managers/AuditLogManager.php b/src/FederationServer/Classes/Managers/AuditLogManager.php index ae8116d..edbbd54 100644 --- a/src/FederationServer/Classes/Managers/AuditLogManager.php +++ b/src/FederationServer/Classes/Managers/AuditLogManager.php @@ -4,6 +4,7 @@ use FederationServer\Classes\DatabaseConnection; use FederationServer\Classes\Enums\AuditLogType; + use FederationServer\Classes\Logger; use FederationServer\Exceptions\DatabaseOperationException; use FederationServer\Objects\AuditLogRecord; use InvalidArgumentException; @@ -28,6 +29,33 @@ throw new InvalidArgumentException("Message cannot be empty."); } + if($operator !== null && strlen($operator) === 0) + { + throw new InvalidArgumentException("Operator UUID cannot be empty."); + } + + if($entity !== null && strlen($entity) === 0) + { + throw new InvalidArgumentException("Entity UUID cannot be empty."); + } + + if($operator !== null && $entity !== null) + { + Logger::log()->info(sprintf("Audit Entry [%s] %s by %s on %s", $type->value, $message, $operator, $entity)); + } + elseif($operator !== null) + { + Logger::log()->info(sprintf("Audit Entry [%s] %s by %s", $type->value, $message, $operator)); + } + elseif($entity !== null) + { + Logger::log()->info(sprintf("Audit Entry [%s] %s on %s", $type->value, $message, $entity)); + } + else + { + Logger::log()->info(sprintf("Audit Entry [%s] %s", $type->value, $message)); + } + try { $stmt = DatabaseConnection::getConnection()->prepare("INSERT INTO audit_log (type, message, operator, entity) VALUES (:type, :message, :operator, :entity)");