From a2b2e373be05d95b3ca6e0b3ddc5b6cf5d1075f2 Mon Sep 17 00:00:00 2001 From: Boy132 Date: Fri, 7 Mar 2025 17:29:09 +0100 Subject: [PATCH] Fix subuser activity log (#1063) * use user for subject * add permissions to properties * always add websocket.connect permission (because it's default) * small cleanup * also update editing --- app/Filament/Server/Resources/UserResource.php | 10 ++++++---- .../Resources/UserResource/Pages/ListUsers.php | 16 +++++++++------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/app/Filament/Server/Resources/UserResource.php b/app/Filament/Server/Resources/UserResource.php index 8d810d88e..ff3c870ec 100644 --- a/app/Filament/Server/Resources/UserResource.php +++ b/app/Filament/Server/Resources/UserResource.php @@ -121,11 +121,13 @@ class UserResource extends Resource ->action(function (array $data, SubuserUpdateService $subuserUpdateService, User $user) use ($server) { $subuser = Subuser::query()->where('user_id', $user->id)->where('server_id', $server->id)->first(); - if (in_array('console', $data['control'])) { - $data['websocket'][0] = 'connect'; - } + $permissions = collect($data) + ->forget('email') + ->flatMap(fn ($permissions, $key) => collect($permissions)->map(fn ($permission) => "$key.$permission")) + ->push(Permission::ACTION_WEBSOCKET_CONNECT) + ->unique() + ->all(); - $permissions = collect($data)->forget('email')->map(fn ($permissions, $key) => collect($permissions)->map(fn ($permission) => "$key.$permission"))->flatten()->all(); $subuserUpdateService->handle($subuser, $server, $permissions); Notification::make() diff --git a/app/Filament/Server/Resources/UserResource/Pages/ListUsers.php b/app/Filament/Server/Resources/UserResource/Pages/ListUsers.php index b062e6d2c..21a82ceee 100644 --- a/app/Filament/Server/Resources/UserResource/Pages/ListUsers.php +++ b/app/Filament/Server/Resources/UserResource/Pages/ListUsers.php @@ -387,19 +387,21 @@ class ListUsers extends ListRecords ->action(function (array $data, SubuserCreationService $service) use ($server) { $email = strtolower($data['email']); - if (in_array('console', $data['control'])) { - $data['websocket'][0] = 'connect'; - } - - $permissions = collect($data)->forget('email')->map(fn ($permissions, $key) => collect($permissions)->map(fn ($permission) => "$key.$permission"))->flatten()->all(); + $permissions = collect($data) + ->forget('email') + ->flatMap(fn ($permissions, $key) => collect($permissions)->map(fn ($permission) => "$key.$permission")) + ->push(Permission::ACTION_WEBSOCKET_CONNECT) + ->unique() + ->all(); try { - $service->handle($server, $email, $permissions); + $subuser = $service->handle($server, $email, $permissions); Activity::event('server:subuser.create') - ->subject($data['email']) + ->subject($subuser->user) ->property([ 'email' => $data['email'], + 'permissions' => $permissions, ]); Notification::make()