Implements Spec 090 (Action Surface Contract Compliance & RBAC Hardening). Highlights: - Adds/updates action surface declarations and shrinks baseline exemptions. - Standardizes Filament action grouping/order and empty-state CTAs. - Enforces RBAC UX semantics (non-member -> 404, member w/o capability -> disabled + tooltip, server-side 403). - Adds audit logging for successful side-effect actions. - Fixes Provider Connections list context so header create + row actions resolve tenant correctly. Tests (focused): - vendor/bin/sail artisan test --compact tests/Feature/090/ - vendor/bin/sail artisan test --compact tests/Feature/Guards/ActionSurfaceContractTest.php - vendor/bin/sail bin pint --dirty Livewire/Filament: - Filament v5 + Livewire v4 compliant. - No panel provider registration changes (Laravel 11+ registration remains in bootstrap/providers.php). Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #108
33 lines
929 B
PHP
33 lines
929 B
PHP
<?php
|
|
|
|
namespace App\Filament\Resources\Workspaces\Pages;
|
|
|
|
use App\Filament\Resources\Workspaces\WorkspaceResource;
|
|
use App\Models\User;
|
|
use App\Services\Audit\WorkspaceAuditLogger;
|
|
use Filament\Resources\Pages\EditRecord;
|
|
|
|
class EditWorkspace extends EditRecord
|
|
{
|
|
protected static string $resource = WorkspaceResource::class;
|
|
|
|
protected function afterSave(): void
|
|
{
|
|
$user = auth()->user();
|
|
|
|
app(WorkspaceAuditLogger::class)->log(
|
|
workspace: $this->record,
|
|
action: 'workspace.updated',
|
|
actor: $user instanceof User ? $user : null,
|
|
resourceType: 'workspace',
|
|
resourceId: (string) $this->record->getKey(),
|
|
context: [
|
|
'metadata' => [
|
|
'workspace_id' => (int) $this->record->getKey(),
|
|
'slug' => (string) $this->record->slug,
|
|
],
|
|
],
|
|
);
|
|
}
|
|
}
|