Implement superadmin audit log for mutations
This commit is contained in:
@@ -3,11 +3,12 @@
|
||||
namespace App\Filament\Clusters\DailyOps\Resources\Photos\Pages;
|
||||
|
||||
use App\Filament\Clusters\DailyOps\Resources\Photos\PhotoResource;
|
||||
use App\Filament\Resources\Pages\AuditedEditRecord;
|
||||
use App\Services\Audit\SuperAdminAuditLogger;
|
||||
use Filament\Actions\DeleteAction;
|
||||
use Filament\Actions\ViewAction;
|
||||
use Filament\Resources\Pages\EditRecord;
|
||||
|
||||
class EditPhoto extends EditRecord
|
||||
class EditPhoto extends AuditedEditRecord
|
||||
{
|
||||
protected static string $resource = PhotoResource::class;
|
||||
|
||||
@@ -15,7 +16,12 @@ class EditPhoto extends EditRecord
|
||||
{
|
||||
return [
|
||||
ViewAction::make(),
|
||||
DeleteAction::make(),
|
||||
DeleteAction::make()
|
||||
->after(fn ($record) => app(SuperAdminAuditLogger::class)->recordModelMutation(
|
||||
'deleted',
|
||||
$record,
|
||||
source: static::class
|
||||
)),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ namespace App\Filament\Clusters\DailyOps\Resources\Photos\Tables;
|
||||
use App\Models\Event;
|
||||
use App\Models\Photo;
|
||||
use App\Models\Tenant;
|
||||
use App\Services\Audit\SuperAdminAuditLogger;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Actions\BulkAction;
|
||||
use Filament\Actions\BulkActionGroup;
|
||||
@@ -208,6 +209,18 @@ class PhotosTable
|
||||
'moderated_at' => now(),
|
||||
'moderated_by' => Filament::auth()->id(),
|
||||
]);
|
||||
|
||||
app(SuperAdminAuditLogger::class)->record(
|
||||
'photo.'.$status,
|
||||
$record,
|
||||
SuperAdminAuditLogger::fieldsMetadata([
|
||||
'status',
|
||||
'moderation_notes',
|
||||
'moderated_at',
|
||||
'moderated_by',
|
||||
]),
|
||||
source: self::class
|
||||
);
|
||||
}
|
||||
|
||||
private static function applyModerationToRecords(Collection $records, string $status, ?string $notes): int
|
||||
@@ -215,7 +228,7 @@ class PhotosTable
|
||||
$moderatedAt = now();
|
||||
$moderatedBy = Filament::auth()->id();
|
||||
|
||||
return Photo::query()
|
||||
$updated = Photo::query()
|
||||
->whereIn('id', $records->pluck('id'))
|
||||
->where('status', 'pending')
|
||||
->update([
|
||||
@@ -224,6 +237,24 @@ class PhotosTable
|
||||
'moderated_at' => $moderatedAt,
|
||||
'moderated_by' => $moderatedBy,
|
||||
]);
|
||||
|
||||
$logger = app(SuperAdminAuditLogger::class);
|
||||
|
||||
foreach ($records as $record) {
|
||||
$logger->record(
|
||||
'photo.'.$status,
|
||||
$record,
|
||||
SuperAdminAuditLogger::fieldsMetadata([
|
||||
'status',
|
||||
'moderation_notes',
|
||||
'moderated_at',
|
||||
'moderated_by',
|
||||
]),
|
||||
source: self::class
|
||||
);
|
||||
}
|
||||
|
||||
return $updated;
|
||||
}
|
||||
|
||||
private static function statusLabels(): array
|
||||
|
||||
Reference in New Issue
Block a user