From 0d19867921d3e6da9cff88de8c2be09f9bd8b7e1 Mon Sep 17 00:00:00 2001 From: Boy132 Date: Tue, 20 May 2025 11:41:23 +0200 Subject: [PATCH] extract conflict handling into trait --- app/Filament/Server/Pages/ServerFormPage.php | 15 ++------------ .../Server/Resources/AllocationResource.php | 16 ++------------- .../Server/Resources/BackupResource.php | 15 ++------------ .../Server/Resources/DatabaseResource.php | 15 ++------------ .../Server/Resources/FileResource.php | 16 ++------------- .../Server/Resources/ScheduleResource.php | 16 ++------------- .../Server/Resources/UserResource.php | 15 ++------------ app/Traits/Filament/BlockAccessInConflict.php | 20 +++++++++++++++++++ 8 files changed, 34 insertions(+), 94 deletions(-) create mode 100644 app/Traits/Filament/BlockAccessInConflict.php diff --git a/app/Filament/Server/Pages/ServerFormPage.php b/app/Filament/Server/Pages/ServerFormPage.php index 5ae5acd12..a93efc8a4 100644 --- a/app/Filament/Server/Pages/ServerFormPage.php +++ b/app/Filament/Server/Pages/ServerFormPage.php @@ -3,6 +3,7 @@ namespace App\Filament\Server\Pages; use App\Models\Server; +use App\Traits\Filament\BlockAccessInConflict; use Filament\Facades\Filament; use Filament\Forms\Concerns\InteractsWithForms; use Filament\Forms\Form; @@ -14,6 +15,7 @@ use Filament\Pages\Page; */ abstract class ServerFormPage extends Page { + use BlockAccessInConflict; use InteractsWithFormActions; use InteractsWithForms; @@ -64,17 +66,4 @@ abstract class ServerFormPage extends Page return $server; } - - // TODO: find better way handle server conflict state - public static function canAccess(): bool - { - /** @var Server $server */ - $server = Filament::getTenant(); - - if ($server->isInConflictState()) { - return false; - } - - return parent::canAccess(); - } } diff --git a/app/Filament/Server/Resources/AllocationResource.php b/app/Filament/Server/Resources/AllocationResource.php index 9ef4ea7cc..def8cee3c 100644 --- a/app/Filament/Server/Resources/AllocationResource.php +++ b/app/Filament/Server/Resources/AllocationResource.php @@ -5,7 +5,7 @@ namespace App\Filament\Server\Resources; use App\Filament\Server\Resources\AllocationResource\Pages; use App\Models\Allocation; use App\Models\Permission; -use App\Models\Server; +use App\Traits\Filament\BlockAccessInConflict; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; use Filament\Facades\Filament; @@ -14,6 +14,7 @@ use Illuminate\Database\Eloquent\Model; class AllocationResource extends Resource { + use BlockAccessInConflict; use CanCustomizePages; use CanCustomizeRelations; @@ -27,19 +28,6 @@ class AllocationResource extends Resource protected static ?string $navigationIcon = 'tabler-network'; - // TODO: find better way handle server conflict state - public static function canAccess(): bool - { - /** @var Server $server */ - $server = Filament::getTenant(); - - if ($server->isInConflictState()) { - return false; - } - - return parent::canAccess(); - } - public static function canViewAny(): bool { return auth()->user()->can(Permission::ACTION_ALLOCATION_READ, Filament::getTenant()); diff --git a/app/Filament/Server/Resources/BackupResource.php b/app/Filament/Server/Resources/BackupResource.php index 71b81b64e..718bfa54f 100644 --- a/app/Filament/Server/Resources/BackupResource.php +++ b/app/Filament/Server/Resources/BackupResource.php @@ -6,6 +6,7 @@ use App\Filament\Server\Resources\BackupResource\Pages; use App\Models\Backup; use App\Models\Permission; use App\Models\Server; +use App\Traits\Filament\BlockAccessInConflict; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; use Filament\Facades\Filament; @@ -14,6 +15,7 @@ use Illuminate\Database\Eloquent\Model; class BackupResource extends Resource { + use BlockAccessInConflict; use CanCustomizePages; use CanCustomizeRelations; @@ -53,19 +55,6 @@ class BackupResource extends Resource : ($count >= $limit * self::WARNING_THRESHOLD ? 'warning' : 'success'); } - // TODO: find better way handle server conflict state - public static function canAccess(): bool - { - /** @var Server $server */ - $server = Filament::getTenant(); - - if ($server->isInConflictState()) { - return false; - } - - return parent::canAccess(); - } - public static function canViewAny(): bool { return auth()->user()->can(Permission::ACTION_BACKUP_READ, Filament::getTenant()); diff --git a/app/Filament/Server/Resources/DatabaseResource.php b/app/Filament/Server/Resources/DatabaseResource.php index 383b5768c..ae484858b 100644 --- a/app/Filament/Server/Resources/DatabaseResource.php +++ b/app/Filament/Server/Resources/DatabaseResource.php @@ -6,6 +6,7 @@ use App\Filament\Server\Resources\DatabaseResource\Pages; use App\Models\Database; use App\Models\Permission; use App\Models\Server; +use App\Traits\Filament\BlockAccessInConflict; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; use Filament\Facades\Filament; @@ -14,6 +15,7 @@ use Illuminate\Database\Eloquent\Model; class DatabaseResource extends Resource { + use BlockAccessInConflict; use CanCustomizePages; use CanCustomizeRelations; @@ -52,19 +54,6 @@ class DatabaseResource extends Resource : ($count >= $limit * self::WARNING_THRESHOLD ? 'warning' : 'success'); } - // TODO: find better way handle server conflict state - public static function canAccess(): bool - { - /** @var Server $server */ - $server = Filament::getTenant(); - - if ($server->isInConflictState()) { - return false; - } - - return parent::canAccess(); - } - public static function canViewAny(): bool { return auth()->user()->can(Permission::ACTION_DATABASE_READ, Filament::getTenant()); diff --git a/app/Filament/Server/Resources/FileResource.php b/app/Filament/Server/Resources/FileResource.php index 21369703f..29fd1f8ac 100644 --- a/app/Filament/Server/Resources/FileResource.php +++ b/app/Filament/Server/Resources/FileResource.php @@ -5,7 +5,7 @@ namespace App\Filament\Server\Resources; use App\Filament\Server\Resources\FileResource\Pages; use App\Models\File; use App\Models\Permission; -use App\Models\Server; +use App\Traits\Filament\BlockAccessInConflict; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; use Filament\Facades\Filament; @@ -14,6 +14,7 @@ use Illuminate\Database\Eloquent\Model; class FileResource extends Resource { + use BlockAccessInConflict; use CanCustomizePages; use CanCustomizeRelations; @@ -23,19 +24,6 @@ class FileResource extends Resource protected static ?string $navigationIcon = 'tabler-files'; - // TODO: find better way handle server conflict state - public static function canAccess(): bool - { - /** @var Server $server */ - $server = Filament::getTenant(); - - if ($server->isInConflictState()) { - return false; - } - - return parent::canAccess(); - } - public static function canViewAny(): bool { return auth()->user()->can(Permission::ACTION_FILE_READ, Filament::getTenant()); diff --git a/app/Filament/Server/Resources/ScheduleResource.php b/app/Filament/Server/Resources/ScheduleResource.php index c4ab32ca4..98d8804a6 100644 --- a/app/Filament/Server/Resources/ScheduleResource.php +++ b/app/Filament/Server/Resources/ScheduleResource.php @@ -7,7 +7,7 @@ use App\Filament\Server\Resources\ScheduleResource\RelationManagers\TasksRelatio use App\Helpers\Utilities; use App\Models\Permission; use App\Models\Schedule; -use App\Models\Server; +use App\Traits\Filament\BlockAccessInConflict; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; use Carbon\Carbon; @@ -29,6 +29,7 @@ use Illuminate\Database\Eloquent\Model; class ScheduleResource extends Resource { + use BlockAccessInConflict; use CanCustomizePages; use CanCustomizeRelations; @@ -38,19 +39,6 @@ class ScheduleResource extends Resource protected static ?string $navigationIcon = 'tabler-clock'; - // TODO: find better way handle server conflict state - public static function canAccess(): bool - { - /** @var Server $server */ - $server = Filament::getTenant(); - - if ($server->isInConflictState()) { - return false; - } - - return parent::canAccess(); - } - public static function canViewAny(): bool { return auth()->user()->can(Permission::ACTION_SCHEDULE_READ, Filament::getTenant()); diff --git a/app/Filament/Server/Resources/UserResource.php b/app/Filament/Server/Resources/UserResource.php index fcd0acfd8..54c15352f 100644 --- a/app/Filament/Server/Resources/UserResource.php +++ b/app/Filament/Server/Resources/UserResource.php @@ -8,6 +8,7 @@ use App\Models\Server; use App\Models\User; use App\Services\Subusers\SubuserDeletionService; use App\Services\Subusers\SubuserUpdateService; +use App\Traits\Filament\BlockAccessInConflict; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; use Filament\Facades\Filament; @@ -31,6 +32,7 @@ use Illuminate\Database\Eloquent\Model; class UserResource extends Resource { + use BlockAccessInConflict; use CanCustomizePages; use CanCustomizeRelations; @@ -50,19 +52,6 @@ class UserResource extends Resource return (string) $server->subusers->count(); } - // TODO: find better way handle server conflict state - public static function canAccess(): bool - { - /** @var Server $server */ - $server = Filament::getTenant(); - - if ($server->isInConflictState()) { - return false; - } - - return parent::canAccess(); - } - public static function canViewAny(): bool { return auth()->user()->can(Permission::ACTION_USER_READ, Filament::getTenant()); diff --git a/app/Traits/Filament/BlockAccessInConflict.php b/app/Traits/Filament/BlockAccessInConflict.php new file mode 100644 index 000000000..f3feb69f4 --- /dev/null +++ b/app/Traits/Filament/BlockAccessInConflict.php @@ -0,0 +1,20 @@ +isInConflictState()) { + return false; + } + + return parent::canAccess(); + } +}