lotteryAdmin(); $admin_user->load('roles'); $before = AdminUserApiPresenter::listItem($admin_user); $payload = $request->all(); if (array_key_exists('email', $payload) && $payload['email'] === '') { $payload['email'] = null; } /** @var array{nickname?:string,email?:?string,password?:?string,status?:int} $data */ $data = validator($payload, [ 'nickname' => ['sometimes', 'string', 'max:128'], 'email' => ['sometimes', 'nullable', 'string', 'email', 'max:255', Rule::unique('admin_users', 'email')->ignore($admin_user->id)], 'password' => ['sometimes', 'nullable', 'string', 'min:8', 'max:256'], 'status' => ['sometimes', 'integer', Rule::in([0, 1])], ])->validate(); $updates = []; if (array_key_exists('nickname', $data)) { $updates['name'] = $data['nickname']; } if (array_key_exists('email', $data)) { $updates['email'] = ($data['email'] !== null && trim((string) $data['email']) !== '') ? trim((string) $data['email']) : null; } if (array_key_exists('status', $data)) { $updates['status'] = (int) $data['status']; } if (array_key_exists('password', $data) && is_string($data['password']) && $data['password'] !== '') { $updates['password'] = $data['password']; } if ($updates === []) { return ApiResponse::success($before); } $admin_user->fill($updates); $admin_user->save(); $admin_user->load('roles'); $after = AdminUserApiPresenter::listItem($admin_user); AuditLogger::recordForAdmin( $actor, $request, 'system', 'admin_user.update', 'admin_user', (string) $admin_user->getKey(), $before, $after, ); return ApiResponse::success($after); } }