From ba1caf9301b880ae31c7649965c531ba66b4a582 Mon Sep 17 00:00:00 2001 From: Matias Perrone Date: Fri, 26 Dec 2025 22:08:31 +0000 Subject: [PATCH 1/4] feat: Add UserAction formatter --- .../UserActionAuditLogFormatter.php | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php diff --git a/app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php b/app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php new file mode 100644 index 00000000..5d542a61 --- /dev/null +++ b/app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php @@ -0,0 +1,54 @@ +getOwner(); + $realm = $subject->hasRealm() ? $subject->getRealm() : 'N/A'; + $ip = $subject->getFromIp(); + + switch ($child_entity_action_type) { + case IChildEntityAuditLogFormatter::CHILD_ENTITY_CREATION: + return "A new UserAction which owner is \"{$owner->getFullName()} ({$owner->getID()})\", with realm \"{$realm}\" and IP \"{$ip}\" was created. {$additional_info}"; + case IChildEntityAuditLogFormatter::CHILD_ENTITY_UPDATE: + return "An UserAction with ID {$subject->getID()} was changed. {$additional_info}"; + case IChildEntityAuditLogFormatter::CHILD_ENTITY_DELETION: + return "An UserAction with ID {$subject->getID()} which owner is \"{$owner->getFullName()} ({$owner->getID()})\", with realm \"{$realm}\" and IP \"{$ip}\" was removed"; + } + return ""; + } +} \ No newline at end of file From f45646635b1b2b38814fd271208b68e73f9f5d03 Mon Sep 17 00:00:00 2001 From: Matias Perrone Date: Tue, 30 Dec 2025 21:07:47 +0000 Subject: [PATCH 2/4] chore: Add route formatter --- .../ConcreteFormatters/UserActionAuditLogFormatter.php | 2 +- config/audit_log.php | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php b/app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php index 5d542a61..7d7f3060 100644 --- a/app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php +++ b/app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php @@ -1,6 +1,6 @@ [ + UserAction::class => [ + 'enabled' => true, + 'strategy' => UserActionAuditLogFormatter::class, + ], ] ]; \ No newline at end of file From 85d82e32f343324c79cfafd1acebeb45d8f14031 Mon Sep 17 00:00:00 2001 From: Matias Perrone Date: Tue, 30 Dec 2025 21:21:21 +0000 Subject: [PATCH 3/4] chore: fix linting --- app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php b/app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php index 7d7f3060..1fe624f3 100644 --- a/app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php +++ b/app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php @@ -2,10 +2,11 @@ namespace App\Audit\ConcreteFormatters; +use App\Audit\ConcreteFormatters\ChildEntityFormatters\IChildEntityAuditLogFormatter; use Models\UserAction; /** - * Copyright 2022 OpenStack Foundation + * Copyright 2025 OpenStack Foundation * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at From 319dbea6699753d7c25cd682e8b1675a2888a652 Mon Sep 17 00:00:00 2001 From: Matias Perrone Date: Tue, 30 Dec 2025 21:34:58 +0000 Subject: [PATCH 4/4] chore: fix linting --- .../UserActionAuditLogFormatter.php | 51 +++++++++---------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php b/app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php index 1fe624f3..fbc1922b 100644 --- a/app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php +++ b/app/Audit/ConcreteFormatters/UserActionAuditLogFormatter.php @@ -25,31 +25,30 @@ */ class UserActionAuditLogFormatter implements IChildEntityAuditLogFormatter { - /** - * @param UserAction $subject - * @param string $child_entity_action_type - * @param string|null $additional_info - * @return string|null - */ - public function format($subject, string $child_entity_action_type, ?string $additional_info = ""): ?string - { - - if (!$subject instanceof UserAction) { - return null; - } - - $owner = $subject->getOwner(); - $realm = $subject->hasRealm() ? $subject->getRealm() : 'N/A'; - $ip = $subject->getFromIp(); - - switch ($child_entity_action_type) { - case IChildEntityAuditLogFormatter::CHILD_ENTITY_CREATION: - return "A new UserAction which owner is \"{$owner->getFullName()} ({$owner->getID()})\", with realm \"{$realm}\" and IP \"{$ip}\" was created. {$additional_info}"; - case IChildEntityAuditLogFormatter::CHILD_ENTITY_UPDATE: - return "An UserAction with ID {$subject->getID()} was changed. {$additional_info}"; - case IChildEntityAuditLogFormatter::CHILD_ENTITY_DELETION: - return "An UserAction with ID {$subject->getID()} which owner is \"{$owner->getFullName()} ({$owner->getID()})\", with realm \"{$realm}\" and IP \"{$ip}\" was removed"; + /** + * @param UserAction $subject + * @param string $child_entity_action_type + * @param string|null $additional_info + * @return string|null + */ + public function format($subject, string $child_entity_action_type, ?string $additional_info = ""): ?string + { + if (!$subject instanceof UserAction) { + return null; + } + + $owner = $subject->getOwner(); + $realm = $subject->hasRealm() ? $subject->getRealm() : 'N/A'; + $ip = $subject->getFromIp(); + + switch ($child_entity_action_type) { + case IChildEntityAuditLogFormatter::CHILD_ENTITY_CREATION: + return "A new UserAction which owner is \"{$owner->getFullName()} ({$owner->getID()})\", with realm \"{$realm}\" and IP \"{$ip}\" was created. {$additional_info}"; + case IChildEntityAuditLogFormatter::CHILD_ENTITY_UPDATE: + return "An UserAction with ID {$subject->getID()} was changed. {$additional_info}"; + case IChildEntityAuditLogFormatter::CHILD_ENTITY_DELETION: + return "An UserAction with ID {$subject->getID()} which owner is \"{$owner->getFullName()} ({$owner->getID()})\", with realm \"{$realm}\" and IP \"{$ip}\" was removed"; + } + return ""; } - return ""; - } } \ No newline at end of file