Implements spec 094 (assignment fetch/restore observability hardening): - Adds OperationRun tracking for assignment fetch (during backup) and assignment restore (during restore execution) - Normalizes failure codes/reason_code and sanitizes failure messages - Ensures exactly one audit log entry per assignment restore execution - Enforces correct guard/membership vs capability semantics on affected admin surfaces - Switches assignment Graph services to depend on GraphClientInterface Also includes Postgres-only FK defense-in-depth check and a discoverable `composer test:pgsql` runner (scoped to the FK constraint test). Tests: - `vendor/bin/sail artisan test --compact` (passed) - `vendor/bin/sail composer test:pgsql` (passed) Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #113
44 lines
1.1 KiB
PHP
44 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Filament\Resources\BackupSetResource\Pages;
|
|
|
|
use App\Filament\Resources\BackupSetResource;
|
|
use App\Support\Auth\Capabilities;
|
|
use App\Support\Rbac\UiEnforcement;
|
|
use Filament\Actions;
|
|
use Filament\Resources\Pages\ListRecords;
|
|
|
|
class ListBackupSets extends ListRecords
|
|
{
|
|
protected static string $resource = BackupSetResource::class;
|
|
|
|
private function tableHasRecords(): bool
|
|
{
|
|
return $this->getTableRecords()->count() > 0;
|
|
}
|
|
|
|
protected function getHeaderActions(): array
|
|
{
|
|
$create = Actions\CreateAction::make();
|
|
UiEnforcement::forAction($create)
|
|
->requireCapability(Capabilities::TENANT_SYNC)
|
|
->apply();
|
|
|
|
return [
|
|
$create->visible(fn (): bool => $this->tableHasRecords()),
|
|
];
|
|
}
|
|
|
|
protected function getTableEmptyStateActions(): array
|
|
{
|
|
$create = Actions\CreateAction::make();
|
|
UiEnforcement::forAction($create)
|
|
->requireCapability(Capabilities::TENANT_SYNC)
|
|
->apply();
|
|
|
|
return [
|
|
$create,
|
|
];
|
|
}
|
|
}
|