Skip to content

Commit

Permalink
Use models configured for spatie permission
Browse files Browse the repository at this point in the history
  • Loading branch information
chiiya committed Sep 26, 2023
1 parent 557df1b commit 787553c
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 21 deletions.
5 changes: 3 additions & 2 deletions src/Fields/RoleSelect.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

use Filament\Forms\Components\Select;
use Illuminate\Database\Eloquent\Model;
use Spatie\Permission\Models\Role;

class RoleSelect extends Select
{
Expand All @@ -26,8 +25,10 @@ protected function setUp(): void
$component->state($role->id);
});

$model = config('permission.models.role');

$this->options(
fn () => Role::query()
fn () => $model::query()
->where('guard_name', 'filament')
->pluck('name', 'id')
->map(fn (string $name) => __($name))
Expand Down
6 changes: 2 additions & 4 deletions src/FilamentAccessControlServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@
use Livewire\Mechanisms\ComponentRegistry;
use Spatie\LaravelPackageTools\Package;
use Spatie\LaravelPackageTools\PackageServiceProvider;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;

class FilamentAccessControlServiceProvider extends PackageServiceProvider
{
Expand Down Expand Up @@ -51,8 +49,8 @@ public function packageBooted(): void
$this->registerComponent(AccountExpired::class);
$this->registerComponent(TwoFactorChallenge::class);
Gate::policy(config('filament-access-control.user_model'), FilamentUserPolicy::class);
Gate::policy(Role::class, RolePolicy::class);
Gate::policy(Permission::class, PermissionPolicy::class);
Gate::policy(config('permission.models.role'), RolePolicy::class);
Gate::policy(config('permission.models.permission'), PermissionPolicy::class);
}

/**
Expand Down
5 changes: 5 additions & 0 deletions src/Resources/PermissionResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ class PermissionResource extends Resource
protected static ?string $model = Permission::class;
protected static ?string $navigationIcon = 'heroicon-o-lock-closed';

public static function getModel(): string
{
return config('permission.models.permission');
}

public static function form(Form $form): Form
{
return $form
Expand Down
15 changes: 10 additions & 5 deletions src/Resources/RoleResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,17 @@
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Spatie\Permission\Models\Role;

class RoleResource extends Resource
{
use HasExtendableSchema;
protected static ?string $model = Role::class;
protected static ?string $navigationIcon = 'heroicon-o-user-group';

public static function getModel(): string
{
return config('permission.models.role');
}

public static function form(Form $form): Form
{
return $form
Expand All @@ -35,7 +38,7 @@ public static function form(Form $form): Form
->validationAttribute(__('filament-access-control::default.fields.name'))
->required()
->maxLength(255)
->unique(config('permission.table_names.roles'), 'name', fn (?Role $record): ?Role => $record),
->unique(config('permission.table_names.roles'), 'name', fn ($record) => $record),
PermissionGroup::make('permissions')
->label(__('filament-access-control::default.fields.permissions'))
->validationAttribute(__('filament-access-control::default.fields.permissions')),
Expand All @@ -53,7 +56,7 @@ public static function table(Table $table): Table
->sortable(),
TextColumn::make('description')
->label(__('filament-access-control::default.fields.description'))
->getStateUsing(fn (Role $record) => __($record->name)),
->getStateUsing(fn ($record) => __($record->name)),
TextColumn::make('name')
->label(__('filament-access-control::default.fields.name'))
->searchable(),
Expand Down Expand Up @@ -88,7 +91,9 @@ public static function getPluralLabel(): string

public static function getEloquentQuery(): Builder
{
return Role::query()->where('guard_name', '=', 'filament');
$model = config('permission.models.role');

return $model::query()->where('guard_name', '=', 'filament');
}

public static function getNavigationGroup(): ?string
Expand Down
5 changes: 0 additions & 5 deletions src/Resources/RoleResource/Pages/CreateRole.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

use Chiiya\FilamentAccessControl\Resources\RoleResource;
use Filament\Resources\Pages\CreateRecord;
use Spatie\Permission\Models\Role;
use Spatie\Permission\PermissionRegistrar;

class CreateRole extends CreateRecord
Expand All @@ -16,10 +15,6 @@ public static function getResource(): string

public function afterCreate(): void
{
if (! $this->record instanceof Role) {
return;
}

app(PermissionRegistrar::class)->forgetCachedPermissions();
}

Expand Down
5 changes: 0 additions & 5 deletions src/Resources/RoleResource/Pages/EditRole.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
use Chiiya\FilamentAccessControl\Resources\RoleResource;
use Filament\Actions\DeleteAction;
use Filament\Resources\Pages\EditRecord;
use Spatie\Permission\Models\Role;
use Spatie\Permission\PermissionRegistrar;

class EditRole extends EditRecord
Expand All @@ -17,10 +16,6 @@ public static function getResource(): string

public function afterSave(): void
{
if (! $this->record instanceof Role) {
return;
}

app(PermissionRegistrar::class)->forgetCachedPermissions();
}

Expand Down

0 comments on commit 787553c

Please sign in to comment.