add user settings

This commit is contained in:
Simon Vieille
2025-04-13 20:32:13 +02:00
parent 6c4f9120ff
commit fdd8f8850d
20 changed files with 839 additions and 316 deletions
+6 -2
View File
@@ -98,7 +98,6 @@ class AdminSettingController extends Controller
'add-logo-link',
'show-settings',
'loader-enabled',
'top-menu-mouse-over-hidden-label',
'always-displayed',
'enabled',
'force',
@@ -139,7 +138,6 @@ class AdminSettingController extends Controller
'add-logo-link' => '1',
'show-settings' => '0',
'loader-enabled' => '1',
'top-menu-mouse-over-hidden-label' => '0',
'always-displayed' => '0',
'enabled' => '1',
'force' => '0',
@@ -207,6 +205,12 @@ class AdminSettingController extends Controller
}
}
foreach ($defaults as $key => $default) {
if (!array_key_exists($key, $config)) {
$config[$key] = $default;
}
}
$config['langs'] = $this->langRepository->getUsedLangs();
return new JSONResponse($config);
+61 -17
View File
@@ -25,6 +25,7 @@ use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\Attribute\FrontpageRoute;
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
use OCP\AppFramework\Http\JSONResponse;
use OCP\IConfig;
use OCP\IRequest;
use OCP\IUserSession;
@@ -43,7 +44,7 @@ class PersonalSettingController extends Controller
#[NoCSRFRequired]
#[NoAdminRequired]
#[FrontpageRoute(verb: 'POST', url: '/personalSetting/valueSet')]
#[FrontpageRoute(verb: 'POST', url: '/user/valueSet')]
public function valueSet($name, $value): array
{
$doSave = false;
@@ -65,22 +66,7 @@ class PersonalSettingController extends Controller
}
}
if ('target-blank-apps' === $name) {
$doSave = true;
$data = json_decode($value, true);
if (!is_array($data)) {
$doSave = false;
} else {
foreach ($data as $v) {
if (!is_string($v)) {
$doSave = false;
}
}
}
}
if (in_array($name, ['top-menu-apps', 'top-side-menu-apps', 'apps-order'])) {
if (in_array($name, ['target-blank-apps', 'top-menu-apps', 'top-side-menu-apps', 'apps-order'])) {
$doSave = true;
$data = json_decode($value, true);
@@ -110,4 +96,62 @@ class PersonalSettingController extends Controller
return [];
}
#[NoCSRFRequired]
#[FrontpageRoute(verb: 'GET', url: '/user/config')]
public function configuration(): JSONResponse
{
$user = $this->userSession->getUser();
$keys = $this->config->getUserKeys($user->getUid(), Application::APP_ID);
$booleans = [
'enabled',
];
$arrays = [
'apps-order',
'target-blank-apps',
'top-menu-apps',
'top-side-menu-apps',
];
$integers = [
'target-blank-mode',
];
$defaults = [
'enabled' => '1',
'target-blank-mode' => '1',
'apps-order' => '[]',
'target-blank-apps' => '[]',
'top-menu-apps' => '[]',
'top-side-menu-apps' => '[]',
];
$config = [];
foreach ($keys as $key) {
if (!isset($defaults[$key])) {
continue;
}
if (in_array($key, $booleans)) {
$config[$key] = $this->configProxy->getUserValueBool($user, $key, $defaults[$key]);
} elseif (in_array($key, $arrays)) {
$config[$key] = $this->configProxy->getUserValueArray($user, $key, $defaults[$key]);
} elseif (in_array($key, $integers)) {
$config[$key] = $this->configProxy->getUserValueInt($user, $key, $defaults[$key]);
} else {
$config[$key] = $this->configProxy->getUserValue($user, $key, $defaults[$key]);
}
}
foreach ($defaults as $key => $default) {
if (!array_key_exists($key, $config)) {
$config[$key] = $default;
}
}
return new JSONResponse($config);
}
}