Skip to content

Commit e88e307

Browse files
committed
wip
1 parent f20df0a commit e88e307

2 files changed

Lines changed: 28 additions & 4 deletions

File tree

src/Resources/UserResource.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Backstage\Filament\Users\Imports\UserImporter;
77
use Backstage\Filament\Users\Models\User;
88
use Backstage\Filament\Users\Resources\UserResource\Pages;
9+
use Backstage\Filament\Users\UsersPlugin;
910
use Backstage\Filament\Users\Widgets\StatsOverviewWidget;
1011
use Backstage\Laravel\Users\Eloquent\Scopes\VerifiedUser;
1112
use Filament\Forms;
@@ -17,13 +18,18 @@
1718

1819
class UserResource extends Resource
1920
{
21+
protected static ?string $navigationIcon = 'heroicon-o-user';
22+
23+
public static function canAccess(): bool
24+
{
25+
return UsersPlugin::get()->canManageUsersCondition();
26+
}
27+
2028
public static function getModel(): string
2129
{
2230
return User::class;
2331
}
2432

25-
protected static ?string $navigationIcon = 'heroicon-o-user';
26-
2733
public static function getEloquentQuery(): Builder
2834
{
2935
return static::getModel()::query()

src/UsersPlugin.php

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,20 @@
55
use Backstage\Filament\Users\Components\ToggleSubNavigationType;
66
use Backstage\Filament\Users\Http\Middleware\RedirectUnverifiedUsers;
77
use Backstage\Laravel\Users\Http\Middleware\DetectUserTraffic;
8+
use Closure;
89
use Filament\Contracts\Plugin;
910
use Filament\Navigation\MenuItem;
1011
use Filament\Panel;
12+
use Filament\Support\Concerns\EvaluatesClosures;
1113
use Filament\View\PanelsRenderHook;
1214
use Livewire\Livewire;
1315

1416
class UsersPlugin implements Plugin
1517
{
18+
use EvaluatesClosures;
19+
20+
public Closure|bool $canManageUsers = true;
21+
1622
public function getId(): string
1723
{
1824
return 'users';
@@ -59,9 +65,9 @@ public function register(Panel $panel): void
5965
$panel->userMenuItems([
6066
MenuItem::make('api_tokens')
6167
->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())
6369
->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()),
6571
]);
6672
}
6773

@@ -89,4 +95,16 @@ protected function initSubNavigationToggle(Panel $panel)
8995
return Livewire::mount(ToggleSubNavigationType::class, []);
9096
});
9197
}
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+
}
92110
}

0 commit comments

Comments
 (0)