|
5 | 5 | use Backstage\Filament\Users\Components\ToggleSubNavigationType; |
6 | 6 | use Backstage\Filament\Users\Http\Middleware\RedirectUnverifiedUsers; |
7 | 7 | use Backstage\Laravel\Users\Http\Middleware\DetectUserTraffic; |
| 8 | +use Closure; |
8 | 9 | use Filament\Contracts\Plugin; |
9 | 10 | use Filament\Navigation\MenuItem; |
10 | 11 | use Filament\Panel; |
| 12 | +use Filament\Support\Concerns\EvaluatesClosures; |
11 | 13 | use Filament\View\PanelsRenderHook; |
12 | 14 | use Livewire\Livewire; |
13 | 15 |
|
14 | 16 | class UsersPlugin implements Plugin |
15 | 17 | { |
| 18 | + use EvaluatesClosures; |
| 19 | + |
| 20 | + public Closure|bool $canManageUsers = true; |
| 21 | + |
16 | 22 | public function getId(): string |
17 | 23 | { |
18 | 24 | return 'users'; |
@@ -59,9 +65,9 @@ public function register(Panel $panel): void |
59 | 65 | $panel->userMenuItems([ |
60 | 66 | MenuItem::make('api_tokens') |
61 | 67 | ->label(__('API Tokens')) |
62 | | - ->visible(fn () => config('backstage.users.pages.manage-api-tokens', Pages\ManageApiTokens::class)::canAccess()) |
| 68 | + ->visible(fn() => config('backstage.users.pages.manage-api-tokens', Pages\ManageApiTokens::class)::canAccess()) |
63 | 69 | ->icon('heroicon-o-document-text') |
64 | | - ->url(fn () => config('backstage.users.pages.manage-api-tokens', Pages\ManageApiTokens::class)::getUrl()), |
| 70 | + ->url(fn() => config('backstage.users.pages.manage-api-tokens', Pages\ManageApiTokens::class)::getUrl()), |
65 | 71 | ]); |
66 | 72 | } |
67 | 73 |
|
@@ -89,4 +95,16 @@ protected function initSubNavigationToggle(Panel $panel) |
89 | 95 | return Livewire::mount(ToggleSubNavigationType::class, []); |
90 | 96 | }); |
91 | 97 | } |
| 98 | + |
| 99 | + public function canManageUsers(bool|Closure $condition = true): static |
| 100 | + { |
| 101 | + $this->canManageUsers = $condition; |
| 102 | + |
| 103 | + return $this; |
| 104 | + } |
| 105 | + |
| 106 | + public function canManageUsersCondition(): bool |
| 107 | + { |
| 108 | + return $this->evaluate($this->canManageUsers); |
| 109 | + } |
92 | 110 | } |
0 commit comments