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
This commit is contained in:
Boy132 2025-03-07 17:29:09 +01:00 committed by GitHub
parent 0a17e78f33
commit a2b2e373be
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 11 deletions

View File

@ -121,11 +121,13 @@ class UserResource extends Resource
->action(function (array $data, SubuserUpdateService $subuserUpdateService, User $user) use ($server) { ->action(function (array $data, SubuserUpdateService $subuserUpdateService, User $user) use ($server) {
$subuser = Subuser::query()->where('user_id', $user->id)->where('server_id', $server->id)->first(); $subuser = Subuser::query()->where('user_id', $user->id)->where('server_id', $server->id)->first();
if (in_array('console', $data['control'])) { $permissions = collect($data)
$data['websocket'][0] = 'connect'; ->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); $subuserUpdateService->handle($subuser, $server, $permissions);
Notification::make() Notification::make()

View File

@ -387,19 +387,21 @@ class ListUsers extends ListRecords
->action(function (array $data, SubuserCreationService $service) use ($server) { ->action(function (array $data, SubuserCreationService $service) use ($server) {
$email = strtolower($data['email']); $email = strtolower($data['email']);
if (in_array('console', $data['control'])) { $permissions = collect($data)
$data['websocket'][0] = 'connect'; ->forget('email')
} ->flatMap(fn ($permissions, $key) => collect($permissions)->map(fn ($permission) => "$key.$permission"))
->push(Permission::ACTION_WEBSOCKET_CONNECT)
$permissions = collect($data)->forget('email')->map(fn ($permissions, $key) => collect($permissions)->map(fn ($permission) => "$key.$permission"))->flatten()->all(); ->unique()
->all();
try { try {
$service->handle($server, $email, $permissions); $subuser = $service->handle($server, $email, $permissions);
Activity::event('server:subuser.create') Activity::event('server:subuser.create')
->subject($data['email']) ->subject($subuser->user)
->property([ ->property([
'email' => $data['email'], 'email' => $data['email'],
'permissions' => $permissions,
]); ]);
Notification::make() Notification::make()