fix: user settings
All checks were successful
JS Unit Tests / test (pull_request) Successful in 15s
Build Test / build (pull_request) Successful in 19s
PHP Unit Tests / test (pull_request) Successful in 50s

Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
2026-03-04 20:35:00 -05:00
parent 24e046792b
commit 3a2739fdd8
4 changed files with 43 additions and 16 deletions

View File

@@ -60,7 +60,7 @@ class InitController extends ControllerAbstract
'permissions' => $this->userIdentity->identity()->getPermissions(),
],
'profile' => $this->userService->getEditableFields($this->userIdentity->identifier()),
'settings' => $this->userService->fetchSettings(),
'settings' => $this->userService->fetchSettings([], true),
];
return new JsonResponse($configuration);

View File

@@ -2,6 +2,7 @@
namespace KTXC\Controllers;
use KTXC\Http\Request\Request;
use KTXC\Http\Response\JsonResponse;
use KTXC\Service\UserAccountsService;
use KTXC\SessionIdentity;
@@ -18,7 +19,7 @@ class UserSettingsController extends ControllerAbstract
) {}
/**
* Retrieve user settings
* Retrieve user settings, with optional filtering
* If no specific settings are requested, all settings are returned
*
* @return JsonResponse Settings data as key-value pairs
@@ -29,10 +30,9 @@ class UserSettingsController extends ControllerAbstract
methods: ['GET'],
permissions: ['user.settings.read']
)]
public function read(): JsonResponse
public function read(bool $flatten = false): JsonResponse
{
// Fetch all settings (no filter)
$settings = $this->userService->fetchSettings();
$settings = $this->userService->fetchSettings(flatten: $flatten);
return new JsonResponse($settings, JsonResponse::HTTP_OK);
}
@@ -55,17 +55,17 @@ class UserSettingsController extends ControllerAbstract
*/
#[AuthenticatedRoute(
'/user/settings',
name: 'user.settings.update',
methods: ['PUT', 'PATCH'],
permissions: ['user.settings.update']
name: 'user.settings.write',
methods: ['POST', 'PUT', 'PATCH'],
permissions: ['user.settings.write']
)]
public function update(array $data): JsonResponse
public function write(array $data): JsonResponse
{
$this->userService->storeSettings($data);
// Return updated settings
$updatedSettings = $this->userService->fetchSettings(array_keys($data));
$settings = $this->userService->fetchSettings(array_keys($data));
return new JsonResponse($updatedSettings, JsonResponse::HTTP_OK);
return new JsonResponse($settings, JsonResponse::HTTP_OK);
}
}