From 7e8c6bd0aa033277e7b614624705f241e78c87f4 Mon Sep 17 00:00:00 2001 From: Martin Quiroga Date: Mon, 1 Dec 2025 19:25:02 -0300 Subject: [PATCH 1/3] feat: Inject AuditContext into custom formatters --- app/Audit/AuditLogFormatterFactory.php | 3 ++- app/Audit/AuditLogOtlpStrategy.php | 2 +- app/Audit/IAuditLogFormatter.php | 6 ++++++ app/Audit/IAuditLogFormatterFactory.php | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/Audit/AuditLogFormatterFactory.php b/app/Audit/AuditLogFormatterFactory.php index ee8023a5d..405e2e786 100644 --- a/app/Audit/AuditLogFormatterFactory.php +++ b/app/Audit/AuditLogFormatterFactory.php @@ -36,7 +36,7 @@ public function getStrategyClass(object $subject, string $event_type): ?IAuditLo return !is_null($cls) ? new $cls($event_type):null; } - public function make($subject, $eventType): ?IAuditLogFormatter + public function make(AuditContext $ctx, $subject, $eventType): ?IAuditLogFormatter { $formatter = null; switch ($eventType) { @@ -72,6 +72,7 @@ public function make($subject, $eventType): ?IAuditLogFormatter } break; } + $formatter->setContext($ctx); return $formatter; } } diff --git a/app/Audit/AuditLogOtlpStrategy.php b/app/Audit/AuditLogOtlpStrategy.php index ca30741f8..45142f422 100644 --- a/app/Audit/AuditLogOtlpStrategy.php +++ b/app/Audit/AuditLogOtlpStrategy.php @@ -52,7 +52,7 @@ public function audit($subject, array $change_set, string $event_type, AuditCon return; } Log::debug("AuditLogOtlpStrategy::audit current user", ["user_id" => $ctx->userId, "user_email" => $ctx->userEmail]); - $formatter = $this->formatterFactory->make($subject, $event_type); + $formatter = $this->formatterFactory->make($ctx, $subject, $event_type); if(is_null($formatter)) { Log::warning("AuditLogOtlpStrategy::audit formatter not found"); return; diff --git a/app/Audit/IAuditLogFormatter.php b/app/Audit/IAuditLogFormatter.php index 11c6d0c5a..0a942950a 100644 --- a/app/Audit/IAuditLogFormatter.php +++ b/app/Audit/IAuditLogFormatter.php @@ -20,6 +20,12 @@ */ interface IAuditLogFormatter { + /** + * @param $ctx + * @return void + */ + public function setContext(AuditContext $ctx): void; + /** * @param $subject * @param array $change_set diff --git a/app/Audit/IAuditLogFormatterFactory.php b/app/Audit/IAuditLogFormatterFactory.php index 34248b8dc..13d5f525f 100644 --- a/app/Audit/IAuditLogFormatterFactory.php +++ b/app/Audit/IAuditLogFormatterFactory.php @@ -2,5 +2,5 @@ interface IAuditLogFormatterFactory { - public function make($subject, $eventType): ?IAuditLogFormatter; + public function make(AuditContext $ctx, $subject, $eventType): ?IAuditLogFormatter; } From c9a288b901514acd3b3ea2468aa3ab4b919d600c Mon Sep 17 00:00:00 2001 From: Martin Quiroga Date: Wed, 3 Dec 2025 00:23:50 -0300 Subject: [PATCH 2/3] feat: Added AbstractAuditLogFormatter class to void setContext to be rewritten everywhere --- app/Audit/AbstractAuditLogFormatter.php | 28 +++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 app/Audit/AbstractAuditLogFormatter.php diff --git a/app/Audit/AbstractAuditLogFormatter.php b/app/Audit/AbstractAuditLogFormatter.php new file mode 100644 index 000000000..634b5a431 --- /dev/null +++ b/app/Audit/AbstractAuditLogFormatter.php @@ -0,0 +1,28 @@ +ctx = $ctx; + } + + abstract public function format($subject, array $change_set): ?string; +} From 1877367856eb82f1aa78721275eec0c07c2ac301 Mon Sep 17 00:00:00 2001 From: Martin Quiroga Date: Wed, 3 Dec 2025 00:24:59 -0300 Subject: [PATCH 3/3] fix: Changed concrete formatters to extend abstract class AbstractAuditLogFormatter instead of implement interface IAuditLogFormatter --- .../EntityCollectionUpdateAuditLogFormatter.php | 7 ++++--- .../ConcreteFormatters/EntityCreationAuditLogFormatter.php | 6 +++--- .../ConcreteFormatters/EntityDeletionAuditLogFormatter.php | 6 +++--- .../ConcreteFormatters/EntityUpdateAuditLogFormatter.php | 6 +++--- .../SummitMemberScheduleAuditLogFormatter.php | 5 +++-- 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/app/Audit/ConcreteFormatters/EntityCollectionUpdateAuditLogFormatter.php b/app/Audit/ConcreteFormatters/EntityCollectionUpdateAuditLogFormatter.php index 1ad491973..e1fbc026d 100644 --- a/app/Audit/ConcreteFormatters/EntityCollectionUpdateAuditLogFormatter.php +++ b/app/Audit/ConcreteFormatters/EntityCollectionUpdateAuditLogFormatter.php @@ -3,7 +3,7 @@ namespace App\Audit\ConcreteFormatters; use App\Audit\ConcreteFormatters\ChildEntityFormatters\IChildEntityAuditLogFormatter; -use App\Audit\IAuditLogFormatter; +use App\Audit\AbstractAuditLogFormatter; use Illuminate\Support\Facades\Log; use ReflectionException; @@ -25,7 +25,7 @@ * Class EntityCollectionUpdateAuditLogFormatter * @package App\Audit\ConcreteFormatters */ -class EntityCollectionUpdateAuditLogFormatter implements IAuditLogFormatter +class EntityCollectionUpdateAuditLogFormatter extends AbstractAuditLogFormatter { /** * @var IChildEntityAuditLogFormatter @@ -66,4 +66,5 @@ public function format($subject, $change_set): ?string { return null; } } -} \ No newline at end of file +} + diff --git a/app/Audit/ConcreteFormatters/EntityCreationAuditLogFormatter.php b/app/Audit/ConcreteFormatters/EntityCreationAuditLogFormatter.php index 34965988a..8ca836e18 100644 --- a/app/Audit/ConcreteFormatters/EntityCreationAuditLogFormatter.php +++ b/app/Audit/ConcreteFormatters/EntityCreationAuditLogFormatter.php @@ -2,7 +2,7 @@ namespace App\Audit\ConcreteFormatters; -use App\Audit\IAuditLogFormatter; +use App\Audit\AbstractAuditLogFormatter; use ReflectionClass; /** @@ -23,7 +23,7 @@ * Class EntityCreationAuditLogFormatter * @package App\Audit\ConcreteFormatters */ -class EntityCreationAuditLogFormatter implements IAuditLogFormatter +class EntityCreationAuditLogFormatter extends AbstractAuditLogFormatter { protected function getCreationIgnoredEntities(): array { return [ @@ -41,4 +41,4 @@ public function format($subject, $change_set): ?string { if (in_array($class_name, $ignored_entities)) return null; return "{$class_name} created"; } -} \ No newline at end of file +} diff --git a/app/Audit/ConcreteFormatters/EntityDeletionAuditLogFormatter.php b/app/Audit/ConcreteFormatters/EntityDeletionAuditLogFormatter.php index 40e5223ca..9e2ac8ed7 100644 --- a/app/Audit/ConcreteFormatters/EntityDeletionAuditLogFormatter.php +++ b/app/Audit/ConcreteFormatters/EntityDeletionAuditLogFormatter.php @@ -15,8 +15,8 @@ * limitations under the License. **/ +use App\Audit\AbstractAuditLogFormatter; use App\Audit\ConcreteFormatters\ChildEntityFormatters\IChildEntityAuditLogFormatter; -use App\Audit\IAuditLogFormatter; use models\summit\SummitAttendeeBadgePrint; use ReflectionClass; @@ -24,7 +24,7 @@ * Class EntityDeletionAuditLogFormatter * @package App\Audit\ConcreteFormatters */ -class EntityDeletionAuditLogFormatter implements IAuditLogFormatter +class EntityDeletionAuditLogFormatter extends AbstractAuditLogFormatter { /** * @var IChildEntityAuditLogFormatter @@ -58,4 +58,4 @@ public function format($subject, $change_set): ?string { return "{$class_name} deleted"; } -} \ No newline at end of file +} diff --git a/app/Audit/ConcreteFormatters/EntityUpdateAuditLogFormatter.php b/app/Audit/ConcreteFormatters/EntityUpdateAuditLogFormatter.php index 219087f55..28306711c 100644 --- a/app/Audit/ConcreteFormatters/EntityUpdateAuditLogFormatter.php +++ b/app/Audit/ConcreteFormatters/EntityUpdateAuditLogFormatter.php @@ -12,8 +12,8 @@ * limitations under the License. **/ +use App\Audit\AbstractAuditLogFormatter; use App\Audit\ConcreteFormatters\ChildEntityFormatters\IChildEntityAuditLogFormatter; -use App\Audit\IAuditLogFormatter; use App\Models\Foundation\Summit\SelectionPlan; use App\Models\Utils\BaseEntity; use DateTime; @@ -30,7 +30,7 @@ * Class EntityUpdateAuditLogFormatter * @package App\Audit\ConcreteFormatters */ -class EntityUpdateAuditLogFormatter implements IAuditLogFormatter +class EntityUpdateAuditLogFormatter extends AbstractAuditLogFormatter { /** * @var IChildEntityAuditLogFormatter @@ -159,4 +159,4 @@ public function format($subject, $change_set): ?string return join("|", $res); } -} \ No newline at end of file +} diff --git a/app/Audit/ConcreteFormatters/SummitMemberScheduleAuditLogFormatter.php b/app/Audit/ConcreteFormatters/SummitMemberScheduleAuditLogFormatter.php index 4b25bc80a..a7c45a967 100644 --- a/app/Audit/ConcreteFormatters/SummitMemberScheduleAuditLogFormatter.php +++ b/app/Audit/ConcreteFormatters/SummitMemberScheduleAuditLogFormatter.php @@ -11,11 +11,12 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ -use App\Audit\IAuditLogFormatter; + +use App\Audit\AbstractAuditLogFormatter; use App\Audit\Interfaces\IAuditStrategy; use models\main\SummitMemberSchedule; -class SummitMemberScheduleAuditLogFormatter implements IAuditLogFormatter +class SummitMemberScheduleAuditLogFormatter extends AbstractAuditLogFormatter { private string $event_type;