This commit is contained in:
RMartinOscar 2025-10-27 17:12:23 +00:00
parent bceb8a057e
commit 42ce06e21c
14 changed files with 36 additions and 33 deletions

View File

@ -92,7 +92,7 @@ class DatabaseHostResource extends Resource
->checkIfRecordIsSelectableUsing(fn (DatabaseHost $databaseHost) => !$databaseHost->databases_count) ->checkIfRecordIsSelectableUsing(fn (DatabaseHost $databaseHost) => !$databaseHost->databases_count)
->recordActions([ ->recordActions([
ViewAction::make() ViewAction::make()
->hidden(fn ($record) => static::canEdit($record)), ->hidden(fn ($record) => static::getEditAuthorizationResponse($record)->allowed()),
EditAction::make(), EditAction::make(),
]) ])
->groupedBulkActions([ ->groupedBulkActions([

View File

@ -95,7 +95,7 @@ class MountResource extends Resource
]) ])
->recordActions([ ->recordActions([
ViewAction::make() ViewAction::make()
->hidden(fn ($record) => static::canEdit($record)), ->hidden(fn ($record) => static::getEditAuthorizationResponse($record)->allowed()),
EditAction::make(), EditAction::make(),
]) ])
->groupedBulkActions([ ->groupedBulkActions([

View File

@ -98,7 +98,7 @@ class RoleResource extends Resource
]) ])
->recordActions([ ->recordActions([
ViewAction::make() ViewAction::make()
->hidden(fn ($record) => static::canEdit($record)), ->hidden(fn ($record) => static::getEditAuthorizationResponse($record)->allowed()),
EditAction::make(), EditAction::make(),
]) ])
->checkIfRecordIsSelectableUsing(fn (Role $role) => !$role->isRootAdmin() && $role->users_count <= 0) ->checkIfRecordIsSelectableUsing(fn (Role $role) => !$role->isRootAdmin() && $role->users_count <= 0)

View File

@ -130,7 +130,7 @@ class UserResource extends Resource
]) ])
->recordActions([ ->recordActions([
ViewAction::make() ViewAction::make()
->hidden(fn ($record) => static::canEdit($record)), ->hidden(fn ($record) => static::getEditAuthorizationResponse($record)->allowed()),
EditAction::make(), EditAction::make(),
]) ])
->checkIfRecordIsSelectableUsing(fn (User $user) => user()?->id !== $user->id && !$user->servers_count) ->checkIfRecordIsSelectableUsing(fn (User $user) => user()?->id !== $user->id && !$user->servers_count)

View File

@ -98,7 +98,7 @@ class WebhookResource extends Resource
]) ])
->recordActions([ ->recordActions([
ViewAction::make() ViewAction::make()
->hidden(fn (WebhookConfiguration $record) => static::canEdit($record)), ->hidden(fn (WebhookConfiguration $record) => static::getEditAuthorizationResponse($record)->allowed()),
EditAction::make(), EditAction::make(),
ReplicateAction::make() ReplicateAction::make()
->iconButton() ->iconButton()

View File

@ -336,7 +336,7 @@ class ScheduleResource extends Resource
]) ])
->recordActions([ ->recordActions([
ViewAction::make() ViewAction::make()
->hidden(fn ($record) => static::canEdit($record)), ->hidden(fn ($record) => static::getEditAuthorizationResponse($record)->allowed()),
EditAction::make(), EditAction::make(),
DeleteAction::make() DeleteAction::make()
->after(function (Schedule $schedule) { ->after(function (Schedule $schedule) {

View File

@ -4,17 +4,18 @@ namespace App\Policies\Server;
use App\Models\Permission; use App\Models\Permission;
use Filament\Facades\Filament; use Filament\Facades\Filament;
use Illuminate\Database\Eloquent\Model;
class ActivityLogPolicy class ActivityLogPolicy
{ {
protected string $modelName = 'activityLog'; protected string $modelName = 'activityLog';
public static function viewAny(): bool public function viewAny(): bool
{ {
return user()?->can(Permission::ACTION_ACTIVITY_READ, Filament::getTenant()); return user()?->can(Permission::ACTION_ACTIVITY_READ, Filament::getTenant());
} }
public static function view(): bool public function view(Model $model): bool
{ {
return user()?->can(Permission::ACTION_ACTIVITY_READ, Filament::getTenant()); return user()?->can(Permission::ACTION_ACTIVITY_READ, Filament::getTenant());
} }

View File

@ -10,22 +10,22 @@ class AllocationPolicy
{ {
protected string $modelName = 'allocation'; protected string $modelName = 'allocation';
public static function viewAny(): bool public function viewAny(): bool
{ {
return user()?->can(Permission::ACTION_ALLOCATION_READ, Filament::getTenant()); return user()?->can(Permission::ACTION_ALLOCATION_READ, Filament::getTenant());
} }
public static function create(): bool public function create(): bool
{ {
return user()?->can(Permission::ACTION_ALLOCATION_CREATE, Filament::getTenant()); return user()?->can(Permission::ACTION_ALLOCATION_CREATE, Filament::getTenant());
} }
public static function edit(Model $record): bool public function edit(Model $record): bool
{ {
return user()?->can(Permission::ACTION_ALLOCATION_UPDATE, Filament::getTenant()); return user()?->can(Permission::ACTION_ALLOCATION_UPDATE, Filament::getTenant());
} }
public static function delete(Model $record): bool public function delete(Model $record): bool
{ {
return user()?->can(Permission::ACTION_ALLOCATION_DELETE, Filament::getTenant()); return user()?->can(Permission::ACTION_ALLOCATION_DELETE, Filament::getTenant());
} }

View File

@ -10,17 +10,17 @@ class BackupPolicy
{ {
protected string $modelName = 'backup'; protected string $modelName = 'backup';
public static function viewAny(): bool public function viewAny(): bool
{ {
return user()?->can(Permission::ACTION_BACKUP_READ, Filament::getTenant()); return user()?->can(Permission::ACTION_BACKUP_READ, Filament::getTenant());
} }
public static function create(): bool public function create(): bool
{ {
return user()?->can(Permission::ACTION_BACKUP_CREATE, Filament::getTenant()); return user()?->can(Permission::ACTION_BACKUP_CREATE, Filament::getTenant());
} }
public static function delete(Model $record): bool public function delete(Model $record): bool
{ {
return user()?->can(Permission::ACTION_BACKUP_DELETE, Filament::getTenant()); return user()?->can(Permission::ACTION_BACKUP_DELETE, Filament::getTenant());
} }

View File

@ -10,27 +10,27 @@ class DatabasePolicy
{ {
protected string $modelName = 'database'; protected string $modelName = 'database';
public static function viewAny(): bool public function viewAny(): bool
{ {
return user()?->can(Permission::ACTION_DATABASE_READ, Filament::getTenant()); return user()?->can(Permission::ACTION_DATABASE_READ, Filament::getTenant());
} }
public static function view(Model $record): bool public function view(Model $record): bool
{ {
return user()?->can(Permission::ACTION_DATABASE_READ, Filament::getTenant()); return user()?->can(Permission::ACTION_DATABASE_READ, Filament::getTenant());
} }
public static function create(): bool public function create(): bool
{ {
return user()?->can(Permission::ACTION_DATABASE_CREATE, Filament::getTenant()); return user()?->can(Permission::ACTION_DATABASE_CREATE, Filament::getTenant());
} }
public static function edit(Model $record): bool public function edit(Model $record): bool
{ {
return user()?->can(Permission::ACTION_DATABASE_UPDATE, Filament::getTenant()); return user()?->can(Permission::ACTION_DATABASE_UPDATE, Filament::getTenant());
} }
public static function delete(Model $record): bool public function delete(Model $record): bool
{ {
return user()?->can(Permission::ACTION_DATABASE_DELETE, Filament::getTenant()); return user()?->can(Permission::ACTION_DATABASE_DELETE, Filament::getTenant());
} }

View File

@ -8,8 +8,10 @@ trait DefaultPolicies
* This is a horrendous hack to avoid Laravel's "smart" behavior that does * This is a horrendous hack to avoid Laravel's "smart" behavior that does
* not call the before() function if there isn't a function matching the * not call the before() function if there isn't a function matching the
* policy permission. * policy permission.
*
* @param array<string, mixed> $arguments
*/ */
public function __call(string $name, mixed $arguments): void public function __call(string $name, array $arguments): void
{ {
// do nothing // do nothing
} }

View File

@ -10,22 +10,22 @@ class FilePolicy
{ {
protected string $modelName = 'file'; protected string $modelName = 'file';
public static function viewAny(): bool public function viewAny(): bool
{ {
return user()?->can(Permission::ACTION_FILE_READ, Filament::getTenant()); return user()?->can(Permission::ACTION_FILE_READ, Filament::getTenant());
} }
public static function create(): bool public function create(): bool
{ {
return user()?->can(Permission::ACTION_FILE_CREATE, Filament::getTenant()); return user()?->can(Permission::ACTION_FILE_CREATE, Filament::getTenant());
} }
public static function edit(Model $record): bool public function edit(Model $record): bool
{ {
return user()?->can(Permission::ACTION_FILE_UPDATE, Filament::getTenant()); return user()?->can(Permission::ACTION_FILE_UPDATE, Filament::getTenant());
} }
public static function delete(Model $record): bool public function delete(Model $record): bool
{ {
return user()?->can(Permission::ACTION_FILE_DELETE, Filament::getTenant()); return user()?->can(Permission::ACTION_FILE_DELETE, Filament::getTenant());
} }

View File

@ -10,22 +10,22 @@ class SchedulePolicy
{ {
protected string $modelName = 'schedule'; protected string $modelName = 'schedule';
public static function viewAny(): bool public function viewAny(): bool
{ {
return user()?->can(Permission::ACTION_SCHEDULE_READ, Filament::getTenant()); return user()?->can(Permission::ACTION_SCHEDULE_READ, Filament::getTenant());
} }
public static function create(): bool public function create(): bool
{ {
return user()?->can(Permission::ACTION_SCHEDULE_CREATE, Filament::getTenant()); return user()?->can(Permission::ACTION_SCHEDULE_CREATE, Filament::getTenant());
} }
public static function edit(Model $record): bool public function edit(Model $record): bool
{ {
return user()?->can(Permission::ACTION_SCHEDULE_UPDATE, Filament::getTenant()); return user()?->can(Permission::ACTION_SCHEDULE_UPDATE, Filament::getTenant());
} }
public static function delete(Model $record): bool public function delete(Model $record): bool
{ {
return user()?->can(Permission::ACTION_SCHEDULE_DELETE, Filament::getTenant()); return user()?->can(Permission::ACTION_SCHEDULE_DELETE, Filament::getTenant());
} }

View File

@ -10,22 +10,22 @@ class UserPolicy
{ {
protected string $modelName = 'user'; protected string $modelName = 'user';
public static function viewAny(): bool public function viewAny(): bool
{ {
return user()?->can(Permission::ACTION_USER_READ, Filament::getTenant()); return user()?->can(Permission::ACTION_USER_READ, Filament::getTenant());
} }
public static function create(): bool public function create(): bool
{ {
return user()?->can(Permission::ACTION_USER_CREATE, Filament::getTenant()); return user()?->can(Permission::ACTION_USER_CREATE, Filament::getTenant());
} }
public static function edit(Model $record): bool public function edit(Model $record): bool
{ {
return user()?->can(Permission::ACTION_USER_UPDATE, Filament::getTenant()); return user()?->can(Permission::ACTION_USER_UPDATE, Filament::getTenant());
} }
public static function delete(Model $record): bool public function delete(Model $record): bool
{ {
return user()?->can(Permission::ACTION_USER_DELETE, Filament::getTenant()); return user()?->can(Permission::ACTION_USER_DELETE, Filament::getTenant());
} }