Skip to content

Commit d4c65cd

Browse files
committed
feat: php8 spatie 5 and role filters
1 parent 6dfbc44 commit d4c65cd

4 files changed

+16
-4
lines changed

composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"license": "MIT",
1010
"require": {
1111
"php": "^7.4|^8.0",
12-
"spatie/laravel-permission": "^3.0|^4.0"
12+
"spatie/laravel-permission": "^3.0|^4.0|^5.0"
1313
},
1414
"autoload": {
1515
"psr-4": {

src/PermissionBooleanGroup.php

+5-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Spatie\Permission\Models\Permission as PermissionModel;
99
use Spatie\Permission\PermissionRegistrar;
1010
use Spatie\Permission\Traits\HasPermissions;
11+
use Illuminate\Support\Facades\Auth;
1112

1213
class PermissionBooleanGroup extends BooleanGroup
1314
{
@@ -25,7 +26,10 @@ public function __construct($name, $attribute = null, callable $resolveCallback
2526

2627
$permissionClass = app(PermissionRegistrar::class)->getPermissionClass();
2728

28-
$options = $permissionClass::get()->pluck($labelAttribute ?? 'name', 'name')->toArray();
29+
$options = $permissionClass::get()
30+
->pluck($labelAttribute ?? 'name', 'name')
31+
->filter(fn($permission) => Auth::user()->can('view', PermissionModel::where('name', $permission)->first()))
32+
->toArray();
2933

3034
$this->options($options);
3135
}

src/RoleBooleanGroup.php

+5-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Spatie\Permission\Models\Role as RoleModel;
99
use Spatie\Permission\PermissionRegistrar;
1010
use Spatie\Permission\Traits\HasPermissions;
11+
use Illuminate\Support\Facades\Auth;
1112

1213
class RoleBooleanGroup extends BooleanGroup
1314
{
@@ -25,7 +26,10 @@ public function __construct($name, $attribute = null, callable $resolveCallback
2526

2627
$roleClass = app(PermissionRegistrar::class)->getRoleClass();
2728

28-
$options = $roleClass::get()->pluck($labelAttribute ?? 'name', 'name')->toArray();
29+
$options = $roleClass::get()
30+
->pluck($labelAttribute ?? 'name', 'name')
31+
->filter(fn($role) => Auth::user()->can('view', RoleModel::where('name', $role)))
32+
->toArray();
2933

3034
$this->options($options);
3135
}

src/RoleSelect.php

+5-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Laravel\Nova\Http\Requests\NovaRequest;
88
use Spatie\Permission\PermissionRegistrar;
99
use Spatie\Permission\Traits\HasPermissions;
10+
use Illuminate\Support\Facades\Auth;
1011

1112
class RoleSelect extends Select
1213
{
@@ -22,7 +23,10 @@ public function __construct($name, $attribute = null, callable $resolveCallback
2223

2324
$roleClass = app(PermissionRegistrar::class)->getRoleClass();
2425

25-
$options = $roleClass::get()->pluck($labelAttribute ?? 'name', 'name')->toArray();
26+
$options = $roleClass::get()
27+
->pluck($labelAttribute ?? 'name', 'name')
28+
->filter(fn($role) => Auth::user()->can('view', RoleModel::where('name', $role)->first()))
29+
->toArray();
2630

2731
$this->options($options);
2832
}

0 commit comments

Comments
 (0)