Add deleteAny and replicate to policies (#1030)

* add `deleteAny` to policies

* add `replicate` to policies
This commit is contained in:
Boy132 2025-02-25 13:50:15 +01:00 committed by GitHub
parent fe8e6fcfda
commit 2f56ca5ed5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 18 additions and 33 deletions

View File

@ -78,8 +78,7 @@ class DatabaseHostResource extends Resource
EditAction::make(), EditAction::make(),
]) ])
->groupedBulkActions([ ->groupedBulkActions([
DeleteBulkAction::make() DeleteBulkAction::make(),
->authorize(fn () => auth()->user()->can('delete databasehost')),
]) ])
->emptyStateIcon('tabler-database') ->emptyStateIcon('tabler-database')
->emptyStateDescription('') ->emptyStateDescription('')

View File

@ -10,7 +10,6 @@ use App\Filament\Components\Tables\Actions\UpdateEggAction;
use App\Models\Egg; use App\Models\Egg;
use Filament\Actions\CreateAction as CreateHeaderAction; use Filament\Actions\CreateAction as CreateHeaderAction;
use Filament\Resources\Pages\ListRecords; use Filament\Resources\Pages\ListRecords;
use Filament\Tables\Actions\BulkActionGroup;
use Filament\Tables\Actions\CreateAction; use Filament\Tables\Actions\CreateAction;
use Filament\Tables\Actions\DeleteBulkAction; use Filament\Tables\Actions\DeleteBulkAction;
use Filament\Tables\Actions\EditAction; use Filament\Tables\Actions\EditAction;
@ -66,14 +65,10 @@ class ListEggs extends ListRecords
$replica->uuid = Str::uuid()->toString(); $replica->uuid = Str::uuid()->toString();
}) })
->after(fn (Egg $record, Egg $replica) => $record->variables->each(fn ($variable) => $variable->replicate()->fill(['egg_id' => $replica->id])->save())) ->after(fn (Egg $record, Egg $replica) => $record->variables->each(fn ($variable) => $variable->replicate()->fill(['egg_id' => $replica->id])->save()))
->successRedirectUrl(fn (Egg $replica) => EditEgg::getUrl(['record' => $replica])) ->successRedirectUrl(fn (Egg $replica) => EditEgg::getUrl(['record' => $replica])),
->authorize(fn () => auth()->user()->can('create egg')),
]) ])
->bulkActions([ ->groupedBulkActions([
BulkActionGroup::make([ DeleteBulkAction::make(),
DeleteBulkAction::make()
->authorize(fn () => auth()->user()->can('delete egg')),
]),
]) ])
->emptyStateIcon('tabler-eggs') ->emptyStateIcon('tabler-eggs')
->emptyStateDescription('') ->emptyStateDescription('')

View File

@ -83,8 +83,7 @@ class MountResource extends Resource
EditAction::make(), EditAction::make(),
]) ])
->groupedBulkActions([ ->groupedBulkActions([
DeleteBulkAction::make() DeleteBulkAction::make(),
->authorize(fn () => auth()->user()->can('delete mount')),
]) ])
->emptyStateIcon('tabler-layers-linked') ->emptyStateIcon('tabler-layers-linked')
->emptyStateDescription('') ->emptyStateDescription('')

View File

@ -82,8 +82,7 @@ class RoleResource extends Resource
]) ])
->checkIfRecordIsSelectableUsing(fn (Role $role) => !$role->isRootAdmin() && $role->users_count <= 0) ->checkIfRecordIsSelectableUsing(fn (Role $role) => !$role->isRootAdmin() && $role->users_count <= 0)
->groupedBulkActions([ ->groupedBulkActions([
DeleteBulkAction::make() DeleteBulkAction::make(),
->authorize(fn () => auth()->user()->can('delete role')),
]) ])
->emptyStateIcon('tabler-users-group') ->emptyStateIcon('tabler-users-group')
->emptyStateDescription('') ->emptyStateDescription('')

View File

@ -92,8 +92,7 @@ class UserResource extends Resource
]) ])
->checkIfRecordIsSelectableUsing(fn (User $user) => auth()->user()->id !== $user->id && !$user->servers_count) ->checkIfRecordIsSelectableUsing(fn (User $user) => auth()->user()->id !== $user->id && !$user->servers_count)
->groupedBulkActions([ ->groupedBulkActions([
DeleteBulkAction::make() DeleteBulkAction::make(),
->authorize(fn () => auth()->user()->can('delete user')),
]); ]);
} }

View File

@ -65,8 +65,7 @@ class WebhookResource extends Resource
DeleteAction::make(), DeleteAction::make(),
]) ])
->groupedBulkActions([ ->groupedBulkActions([
DeleteBulkAction::make() DeleteBulkAction::make(),
->authorize(fn () => auth()->user()->can('delete webhook')),
]) ])
->emptyStateIcon('tabler-webhook') ->emptyStateIcon('tabler-webhook')
->emptyStateDescription('') ->emptyStateDescription('')

View File

@ -7,43 +7,38 @@ use Illuminate\Database\Eloquent\Model;
trait DefaultPolicies trait DefaultPolicies
{ {
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool public function viewAny(User $user): bool
{ {
return $user->can('viewList ' . $this->modelName); return $user->can('viewList ' . $this->modelName);
} }
/**
* Determine whether the user can view the model.
*/
public function view(User $user, Model $model): bool public function view(User $user, Model $model): bool
{ {
return $user->can('view ' . $this->modelName, $model); return $user->can('view ' . $this->modelName, $model);
} }
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool public function create(User $user): bool
{ {
return $user->can('create ' . $this->modelName); return $user->can('create ' . $this->modelName);
} }
/**
* Determine whether the user can update the model.
*/
public function update(User $user, Model $model): bool public function update(User $user, Model $model): bool
{ {
return $user->can('update ' . $this->modelName, $model); return $user->can('update ' . $this->modelName, $model);
} }
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, Model $model): bool public function delete(User $user, Model $model): bool
{ {
return $user->can('delete ' . $this->modelName, $model); return $user->can('delete ' . $this->modelName, $model);
} }
public function deleteAny(User $user): bool
{
return $user->can('delete ' . $this->modelName);
}
public function replicate(User $user, Model $model): bool
{
return $user->can('create ' . $this->modelName);
}
} }