diff --git a/app/Filament/Server/Resources/Users/Pages/ListUsers.php b/app/Filament/Server/Resources/Subusers/Pages/ListSubusers.php similarity index 74% rename from app/Filament/Server/Resources/Users/Pages/ListUsers.php rename to app/Filament/Server/Resources/Subusers/Pages/ListSubusers.php index cd87af786..7fef5a180 100644 --- a/app/Filament/Server/Resources/Users/Pages/ListUsers.php +++ b/app/Filament/Server/Resources/Subusers/Pages/ListSubusers.php @@ -1,8 +1,8 @@ */ protected function getDefaultHeaderActions(): array diff --git a/app/Filament/Server/Resources/Users/UserResource.php b/app/Filament/Server/Resources/Subusers/SubuserResource.php similarity index 88% rename from app/Filament/Server/Resources/Users/UserResource.php rename to app/Filament/Server/Resources/Subusers/SubuserResource.php index 21218ce38..50d30cb0b 100644 --- a/app/Filament/Server/Resources/Users/UserResource.php +++ b/app/Filament/Server/Resources/Subusers/SubuserResource.php @@ -1,12 +1,12 @@ visibleFrom('lg') ->label('') ->alignCenter()->circular() - ->defaultImageUrl(fn (User $user) => Filament::getUserAvatarUrl($user)), - TextColumn::make('username') + ->defaultImageUrl(fn (Subuser $subuser) => Filament::getUserAvatarUrl($subuser->user)), + TextColumn::make('user.username') ->label(trans('server/user.username')) ->searchable(), - TextColumn::make('email') + TextColumn::make('user.email') ->label(trans('server/user.email')) ->searchable(), TextColumn::make('permissions') ->label(trans('server/user.permissions.title')) - ->state(fn (User $user) => count($server->subusers->where('user_id', $user->id)->first()->permissions)), + ->state(fn (Subuser $subuser) => count($subuser->permissions) - 1), ]) ->recordActions([ DeleteAction::make() ->label(trans('server/user.delete')) - ->hidden(fn (User $user) => user()?->id === $user->id) + ->hidden(fn (Subuser $subuser) => user()?->id === $subuser->user->id) ->successNotificationTitle(null) - ->action(function (User $user, SubuserDeletionService $subuserDeletionService) use ($server) { - $subuser = $server->subusers->where('user_id', $user->id)->first(); + ->action(function (Subuser $subuser, SubuserDeletionService $subuserDeletionService) use ($server) { $subuserDeletionService->handle($subuser, $server); Notification::make() @@ -131,13 +128,11 @@ class UserResource extends Resource }), EditAction::make() ->label(trans('server/user.edit')) - ->hidden(fn (User $user) => user()?->id === $user->id) + ->hidden(fn (Subuser $subuser) => user()?->id === $subuser->user->id) ->authorize(fn () => user()?->can(Permission::ACTION_USER_UPDATE, $server)) - ->modalHeading(fn (User $user) => trans('server/user.editing', ['user' => $user->email])) + ->modalHeading(fn (Subuser $subuser) => trans('server/user.editing', ['user' => $subuser->user->email])) ->successNotificationTitle(null) - ->action(function (array $data, SubuserUpdateService $subuserUpdateService, User $user) use ($server) { - $subuser = $server->subusers->where('user_id', $user->id)->first(); - + ->action(function (array $data, SubuserUpdateService $subuserUpdateService, Subuser $subuser) use ($server) { $permissions = collect($data) ->forget('email') ->flatMap(fn ($permissions, $key) => collect($permissions)->map(fn ($permission) => "$key.$permission")) @@ -172,7 +167,8 @@ class UserResource extends Resource 'sm' => 1, 'md' => 4, 'lg' => 5, - ]), + ]) + ->formatStateUsing(fn (Subuser $subuser) => $subuser->user->email), Actions::make([ Action::make('assignAll') ->label(trans('server/user.assign_all')) @@ -195,12 +191,10 @@ class UserResource extends Resource ->schema($tabs), ]), ]) - ->mutateRecordDataUsing(function ($data, User $user) use ($server) { - $permissionsArray = $server->subusers->where('user_id', $user->id)->first()->permissions; - + ->mutateRecordDataUsing(function ($data, Subuser $subuser) { $transformedPermissions = []; - foreach ($permissionsArray as $permission) { + foreach ($subuser->permissions as $permission) { [$group, $action] = explode('.', $permission, 2); $transformedPermissions[$group][] = $action; } @@ -312,7 +306,7 @@ class UserResource extends Resource public static function getDefaultPages(): array { return [ - 'index' => ListUsers::route('/'), + 'index' => ListSubusers::route('/'), ]; } diff --git a/app/Policies/.gitkeep b/app/Policies/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/app/Policies/Server/ActivityLogPolicy.php b/app/Policies/ActivityLogPolicy.php similarity index 93% rename from app/Policies/Server/ActivityLogPolicy.php rename to app/Policies/ActivityLogPolicy.php index d479b43ff..2671ae415 100644 --- a/app/Policies/Server/ActivityLogPolicy.php +++ b/app/Policies/ActivityLogPolicy.php @@ -1,6 +1,6 @@ $user->isRootAdmin() ? true : null); - Gate::guessPolicyNamesUsing(function (string $modelClass) { - $panelId = mb_ucfirst(Filament::getCurrentOrDefaultPanel()->getId()); - - if ($panelId === 'App') { - return; - } - - $modelName = class_basename($modelClass); - $class = "App\\Policies\\{$panelId}\\{$modelName}Policy"; - - if (class_exists($class)) { - return $class; - } - }); - AboutCommand::add('Pelican', [ 'Panel Version' => $versionService->currentPanelVersion(), 'Latest Version' => $versionService->latestPanelVersion(),