extract conflict handling into trait

This commit is contained in:
Boy132 2025-05-20 11:41:23 +02:00
parent 4a343f7bcc
commit 0d19867921
8 changed files with 34 additions and 94 deletions

View File

@ -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();
}
}

View File

@ -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());

View File

@ -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());

View File

@ -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());

View File

@ -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());

View File

@ -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());

View File

@ -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());

View File

@ -0,0 +1,20 @@
<?php
namespace App\Traits\Filament;
use Filament\Facades\Filament;
trait BlockAccessInConflict
{
public static function canAccess(): bool
{
/** @var Server $server */
$server = Filament::getTenant();
if ($server->isInConflictState()) {
return false;
}
return parent::canAccess();
}
}