From d51b585507266807fdd39a51afc6c518336a430d Mon Sep 17 00:00:00 2001 From: Lloric Mayuga Garcia Date: Sun, 11 Aug 2024 21:52:45 +0800 Subject: [PATCH] use role contract Signed-off-by: Lloric Mayuga Garcia --- .../EloquentBuilder/RoleEloquentBuilder.php | 22 -------- src/Models/Role.php | 56 ------------------- src/Resources/RoleResource/Pages/EditRole.php | 6 +- .../RoleResource/Schema/PermissionSchema.php | 18 +++--- 4 files changed, 12 insertions(+), 90 deletions(-) delete mode 100644 src/Models/EloquentBuilder/RoleEloquentBuilder.php delete mode 100644 src/Models/Role.php diff --git a/src/Models/EloquentBuilder/RoleEloquentBuilder.php b/src/Models/EloquentBuilder/RoleEloquentBuilder.php deleted file mode 100644 index 33c0db9..0000000 --- a/src/Models/EloquentBuilder/RoleEloquentBuilder.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * @mixin Role - */ -class RoleEloquentBuilder extends Builder -{ - public function whereNotSuperAdmin(): self - { - return $this - ->whereNot('name', config('domain.access.role.super_admin')); - } -} diff --git a/src/Models/Role.php b/src/Models/Role.php deleted file mode 100644 index 166e4af..0000000 --- a/src/Models/Role.php +++ /dev/null @@ -1,56 +0,0 @@ - $permissions - * @property-read int|null $permissions_count - * @property-read \Illuminate\Database\Eloquent\Collection $users - * @property-read int|null $users_count - * - * @method static \Lloricode\FilamentSpatieLaravelPermissionPlugin\Models\EloquentBuilder\RoleEloquentBuilder|Role newModelQuery() - * @method static \Lloricode\FilamentSpatieLaravelPermissionPlugin\Models\EloquentBuilder\RoleEloquentBuilder|Role newQuery() - * @method static \Lloricode\FilamentSpatieLaravelPermissionPlugin\Models\EloquentBuilder\RoleEloquentBuilder|Role permission($permissions, $without = false) - * @method static \Lloricode\FilamentSpatieLaravelPermissionPlugin\Models\EloquentBuilder\RoleEloquentBuilder|Role query() - * @method static \Lloricode\FilamentSpatieLaravelPermissionPlugin\Models\EloquentBuilder\RoleEloquentBuilder|Role whereNotSuperAdmin() - * @method static \Lloricode\FilamentSpatieLaravelPermissionPlugin\Models\EloquentBuilder\RoleEloquentBuilder|Role withoutPermission($permissions) - */ -class Role extends \Spatie\Permission\Models\Role -{ - /** @use HasBuilder */ - use HasBuilder; - - protected static string $builder = RoleEloquentBuilder::class; - - public static function superAdmin(): self - { - return Role::findByNameOnceCached(config('filament-permission.roles.super_admin')); - } - - public static function admin(): self - { - return Role::findByNameOnceCached(config('filament-permission.roles.admin')); - } - - public static function findByNameOnceCached(string $name, ?string $guard = null): self - { - return once(function () use ($name, $guard) { - /** @var self $role */ - $role = static::findByName($name, $guard ?? Config::string('filament-permission.guard')); - - return $role; - }); - } -} diff --git a/src/Resources/RoleResource/Pages/EditRole.php b/src/Resources/RoleResource/Pages/EditRole.php index 181ba11..923a412 100644 --- a/src/Resources/RoleResource/Pages/EditRole.php +++ b/src/Resources/RoleResource/Pages/EditRole.php @@ -9,11 +9,11 @@ use Illuminate\Database\Eloquent\Model; use Lloricode\FilamentSpatieLaravelPermissionPlugin\Actions\EditRoleAction; use Lloricode\FilamentSpatieLaravelPermissionPlugin\Data\RoleData; -use Lloricode\FilamentSpatieLaravelPermissionPlugin\Models\Role; use Lloricode\FilamentSpatieLaravelPermissionPlugin\Resources\RoleResource; +use Spatie\Permission\Contracts\Role as RoleContract; /** - * @property-read Role $record + * @property-read RoleContract&Model $record */ class EditRole extends EditRecord { @@ -30,7 +30,7 @@ protected function getHeaderActions(): array #[\Override] protected function handleRecordUpdate(Model $record, array $data): Model { - /** @var Role $record */ + /** @var RoleContract&Model $record */ return app(EditRoleAction::class) ->execute($record, new RoleData(...$data)); } diff --git a/src/Resources/RoleResource/Schema/PermissionSchema.php b/src/Resources/RoleResource/Schema/PermissionSchema.php index 34e5086..3d5eb7d 100644 --- a/src/Resources/RoleResource/Schema/PermissionSchema.php +++ b/src/Resources/RoleResource/Schema/PermissionSchema.php @@ -9,9 +9,9 @@ use Filament\Forms\Set; use Illuminate\Support\Collection as CollectionSupport; use Illuminate\Support\Str; -use Lloricode\FilamentSpatieLaravelPermissionPlugin\Models\Role; use Lloricode\FilamentSpatieLaravelPermissionPlugin\Resources\RoleResource\Support\PermissionData; use Spatie\Permission\Contracts\Permission as PermissionContract; +use Spatie\Permission\Contracts\Role as RoleContract; use Spatie\Permission\PermissionRegistrar; final class PermissionSchema @@ -38,7 +38,7 @@ public static function schema(?string $guardName): array return [ Forms\Components\Hidden::make('permissions') - ->afterStateHydrated(function (Forms\Components\Hidden $component, ?Role $record): void { + ->afterStateHydrated(function (Forms\Components\Hidden $component, ?RoleContract $record): void { $component->state($record ? $record->permissions->pluck('name') : []); }) ->dehydrateStateUsing( @@ -72,7 +72,7 @@ function ( ->afterStateUpdated(function (Get $get, Set $set, bool $state): void { self::updatedToggleSelectAllState(get: $get, set: $set, state: $state); }) - ->afterStateHydrated(function (Forms\Components\Toggle $component, ?Role $record): void { + ->afterStateHydrated(function (Forms\Components\Toggle $component, ?RoleContract $record): void { if ($record === null) { $component->state(false); @@ -84,7 +84,7 @@ function ( foreach (self::permissions() as $permissionData) { - if (! $record->hasPermissionTo($permissionData->name)) { + if (! $record->hasPermissionTo($permissionData->name, self::$guardName)) { $all = false; break; @@ -109,7 +109,7 @@ function ( ->offIcon('heroicon-s-lock-closed') ->reactive() ->afterStateHydrated( - function (Forms\Components\Toggle $component, ?Role $record) use ( + function (Forms\Components\Toggle $component, ?RoleContract $record) use ( $parentPermission ): void { if ($record === null) { @@ -117,7 +117,7 @@ function (Forms\Components\Toggle $component, ?Role $record) use ( return; } - $component->state($record->hasPermissionTo($parentPermission)); + $component->state($record->hasPermissionTo($parentPermission, self::$guardName)); } ) ->afterStateUpdated( @@ -152,7 +152,7 @@ function (Set $set, Get $get, bool $state) use ( ->columns(2) ->reactive() ->afterStateHydrated( - function (Forms\Components\CheckboxList $component, ?Role $record) use ( + function (Forms\Components\CheckboxList $component, ?RoleContract $record) use ( $permissionsDatas, $parentPermission ): void { @@ -163,7 +163,7 @@ function (Forms\Components\CheckboxList $component, ?Role $record) use ( return; } - if ($record->hasPermissionTo($parentPermission)) { + if ($record->hasPermissionTo($parentPermission, self::$guardName)) { $component->state($permissionsDatas->pluck('name')->toArray()); return; @@ -173,7 +173,7 @@ function (Forms\Components\CheckboxList $component, ?Role $record) use ( foreach ($permissionsDatas as $permissionData) { - if ($record->hasPermissionTo($permissionData->name)) { + if ($record->hasPermissionTo($permissionData->name, self::$guardName)) { $names[] = $permissionData->name; } }