Implement superadmin audit log for mutations
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled

This commit is contained in:
Codex Agent
2026-01-02 11:57:49 +01:00
parent 8b4950c79d
commit 412ecbe691
82 changed files with 1766 additions and 192 deletions

View File

@@ -2,10 +2,10 @@
namespace App\Filament\Resources\PurchaseResource\Pages;
use App\Filament\Resources\Pages\AuditedCreateRecord;
use App\Filament\Resources\PurchaseResource;
use Filament\Resources\Pages\CreateRecord;
class CreatePurchase extends CreateRecord
class CreatePurchase extends AuditedCreateRecord
{
protected static string $resource = PurchaseResource::class;
}
}

View File

@@ -2,11 +2,12 @@
namespace App\Filament\Resources\PurchaseResource\Pages;
use App\Filament\Resources\Pages\AuditedEditRecord;
use App\Filament\Resources\PurchaseResource;
use App\Services\Audit\SuperAdminAuditLogger;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
class EditPurchase extends EditRecord
class EditPurchase extends AuditedEditRecord
{
protected static string $resource = PurchaseResource::class;
@@ -14,7 +15,12 @@ class EditPurchase extends EditRecord
{
return [
Actions\ViewAction::make(),
Actions\DeleteAction::make(),
Actions\DeleteAction::make()
->after(fn ($record) => app(SuperAdminAuditLogger::class)->recordModelMutation(
'deleted',
$record,
source: static::class
)),
];
}
}
}

View File

@@ -3,6 +3,7 @@
namespace App\Filament\Resources\PurchaseResource\Pages;
use App\Filament\Resources\PurchaseResource;
use App\Services\Audit\SuperAdminAuditLogger;
use Filament\Actions;
use Filament\Resources\Pages\ViewRecord;
@@ -13,8 +14,19 @@ class ViewPurchase extends ViewRecord
protected function getHeaderActions(): array
{
return [
Actions\EditAction::make(),
Actions\DeleteAction::make(),
Actions\EditAction::make()
->after(fn (array $data, $record) => app(SuperAdminAuditLogger::class)->recordModelMutation(
'updated',
$record,
SuperAdminAuditLogger::fieldsMetadata($data),
static::class
)),
Actions\DeleteAction::make()
->after(fn ($record) => app(SuperAdminAuditLogger::class)->recordModelMutation(
'deleted',
$record,
source: static::class
)),
Actions\Action::make('refund')
->label('Refund')
->color('danger')
@@ -24,6 +36,13 @@ class ViewPurchase extends ViewRecord
->action(function ($record) {
$record->update(['refunded' => true]);
// TODO: Call Paddle API for actual refund
app(SuperAdminAuditLogger::class)->record(
'purchase.refunded',
$record,
SuperAdminAuditLogger::fieldsMetadata(['refunded']),
source: static::class
);
}),
];
}