Skip to content

Commit 7a8cfdb

Browse files
author
Backstage
committed
Add user management
1 parent a81f167 commit 7a8cfdb

File tree

6 files changed

+24
-21
lines changed

6 files changed

+24
-21
lines changed

src/Resources/RoleResource/RoleResource.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public static function getSlug(?Panel $panel = null): string
3131

3232
public static function getNavigationGroup(): ?string
3333
{
34-
return __('User management');
34+
return __('Manage');
3535
}
3636

3737
public static function getNavigationIcon(): string | BackedEnum | Htmlable | null

src/Resources/UserResource/Pages/CreateUser.php

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
namespace Backstage\Filament\Users\Resources\UserResource\Pages;
44

5-
use Backstage\Filament\Users\Resources\UserResource\UserResource;
6-
use Backstage\Laravel\Users\Events\Auth\UserCreated;
7-
use Filament\Resources\Pages\CreateRecord;
5+
use Filament\Facades\Filament;
86
use Illuminate\Support\Facades\Event;
7+
use Filament\Resources\Pages\CreateRecord;
8+
use Backstage\Laravel\Users\Events\Auth\UserCreated;
9+
use Backstage\Filament\Users\Resources\UserResource\UserResource;
910

1011
class CreateUser extends CreateRecord
1112
{
@@ -14,13 +15,13 @@ public static function getResource(): string
1415
return config('backstage.users.resources.users', UserResource::class);
1516
}
1617

17-
public function beforeCreate(): void
18+
protected function getCreatedNotificationTitle(): ?string
1819
{
19-
Event::forget(UserCreated::class);
20+
return __('User created successfully, the user will receive an email with their registeration details.');
2021
}
2122

22-
protected function getCreatedNotificationTitle(): ?string
23+
public function getRedirectUrl(): string
2324
{
24-
return __('User created successfully, the user will receive an email with their registeration details.');
25+
return $this->getResource()::getUrl('index', ['tenant' => Filament::getTenant()?->getRouteKey()]);
2526
}
2627
}

src/Resources/UserResource/Pages/ListUsers.php

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22

33
namespace Backstage\Filament\Users\Resources\UserResource\Pages;
44

5-
use Backstage\Filament\Users\Resources\UserResource\UserResource;
65
use Filament\Actions;
6+
use Filament\Support\Colors\Color;
77
use Filament\Resources\Pages\ListRecords;
88
use Filament\Schemas\Components\Tabs\Tab;
9-
use Filament\Support\Colors\Color;
9+
use Backstage\Filament\Users\Widgets\StatsOverviewWidget;
10+
use Backstage\Filament\Users\Resources\UserResource\UserResource;
1011

1112
class ListUsers extends ListRecords
1213
{
@@ -25,22 +26,18 @@ protected function getHeaderActions(): array
2526
protected function getHeaderWidgets(): array
2627
{
2728
return [
28-
\Backstage\Filament\Users\Widgets\StatsOverviewWidget::class,
29+
StatsOverviewWidget::class,
2930
];
3031
}
3132

3233
public function getTabs(): array
3334
{
3435
return [
3536
'users' => Tab::make(__('Users'))
36-
->badge(static::getResource()::getEloquentQuery()->verified()->count())
37-
->badgeColor(Color::Green)
38-
->modifyQueryUsing(fn ($query) => $query->verified()),
37+
->modifyQueryUsing(fn () => static::getResource()::getEloquentQuery()->verified()),
3938

4039
'pending' => Tab::make(__('Pending'))
41-
->badge(static::getResource()::getEloquentQuery()->unverified()->count())
42-
->badgeColor(Color::Red)
43-
->modifyQueryUsing(fn ($query) => $query->unverified()),
40+
->modifyQueryUsing(fn () => static::getResource()::getEloquentQuery()->unverified()),
4441
];
4542
}
4643
}

src/Resources/UserResource/Pages/ManageRoles.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public function table(Table $table): Table
4343
AttachAction::make()
4444
->preloadRecordSelect()
4545
->recordTitleAttribute('name')
46+
->hidden(fn() => !static::getResource()::canEdit($this->getOwnerRecord()))
4647
->multiple(),
4748

4849
CreateAction::make(),

src/Resources/UserResource/Schemas/UserForm.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public static function configure(Schema $schema): Schema
3838
->label(__('Email'))
3939
->prefixIcon(fn (): BackedEnum => Heroicon::Envelope, true)
4040
->email()
41+
->unique()
4142
->required(),
4243

4344
Select::make('roles')

src/Resources/UserResource/UserResource.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public static function getSlug(?Panel $panel = null): string
4343

4444
public static function canAccess(): bool
4545
{
46-
return UsersPlugin::get()->canManageUsersCondition();
46+
return parent::canAccess() &&UsersPlugin::get()->canManageUsersCondition();
4747
}
4848

4949
public static function getModel(): string
@@ -58,7 +58,7 @@ public static function getRecordTitleAttribute(): ?string
5858

5959
public static function getNavigationGroup(): ?string
6060
{
61-
return __('User management');
61+
return __('Manage');
6262
}
6363

6464
public static function getNavigationIcon(): string | BackedEnum | Htmlable | null
@@ -95,10 +95,12 @@ public static function table(Table $table): Table
9595
->headerActions([
9696
ImportAction::make('import')
9797
->importer(UserImporter::class)
98-
->color('primary'),
98+
->color('primary')
99+
->visible(fn() => static::canCreate()),
99100

100101
ExportAction::make()
101-
->exporter(UserExporter::class),
102+
->exporter(UserExporter::class)
103+
->visible(fn() => static::canCreate()),
102104
])
103105
->columns([
104106
Tables\Columns\ImageColumn::make('avatar')
@@ -129,6 +131,7 @@ public static function table(Table $table): Table
129131
->label('')
130132
->color('gray')
131133
->tooltip(__('Impersonate'))
134+
->hidden(fn($record) => !static::canEdit($record))
132135
->hiddenLabel(),
133136
])
134137
->toolbarActions([

0 commit comments

Comments
 (0)