Skip to content

Commit 482efdc

Browse files
committed
Add policies to hide roles and permissions from admin in Filament
1 parent c5e84ab commit 482efdc

File tree

4 files changed

+37
-2
lines changed

4 files changed

+37
-2
lines changed

app/Policies/PermissionPolicy.php

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
namespace App\Policies;
4+
5+
use App\Enums\Role;
6+
use App\Models\User;
7+
8+
class PermissionPolicy
9+
{
10+
public function viewAny(User $user): bool
11+
{
12+
return $user->hasRole(Role::SUPER_ADMIN);
13+
}
14+
}

app/Policies/RolePolicy.php

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
namespace App\Policies;
4+
5+
use App\Enums\Role;
6+
use App\Models\User;
7+
8+
class RolePolicy
9+
{
10+
public function viewAny(User $user): bool
11+
{
12+
return $user->hasRole(Role::SUPER_ADMIN);
13+
}
14+
}

app/Providers/AuthServiceProvider.php

+5
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@
99

1010
class AuthServiceProvider extends ServiceProvider
1111
{
12+
protected $policies = [
13+
\Spatie\Permission\Models\Role::class => \App\Policies\RolePolicy::class,
14+
\Spatie\Permission\Models\Permission::class => \App\Policies\PermissionPolicy::class,
15+
];
16+
1217
public function boot(): void
1318
{
1419
// @codeCoverageIgnoreStart

tests/Integration/UserTest.php

+4-2
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,13 @@
4646
$this->seed(RolesAndPermissionsSeeder::class);
4747
});
4848

49-
it("can only access Filament if it's a \"super-admin\"", function () {
49+
it("can only access Filament if it's a \"super-admin\" or \"admin\"", function () {
5050
$superAdminUser = User::factory()->superAdmin()->create();
5151
$adminUser = User::factory()->admin()->create();
52+
$user = User::factory()->user()->create();
5253

5354
expect($superAdminUser->canAccessPanel())->toBeTrue();
54-
expect($adminUser->canAccessPanel())->toBeFalse();
55+
expect($adminUser->canAccessPanel())->toBeTrue();
56+
expect($user->canAccessPanel())->toBeFalse();
5557
});
5658
});

0 commit comments

Comments
 (0)