diff --git a/config/services.yaml b/config/services.yaml index af4bc4f3fa..9e5369ebb2 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -56,6 +56,11 @@ services: Pimcore\Bundle\AdminBundle\Helper\GridHelperService: ~ + # + # User Helper Service + # + + Pimcore\Bundle\AdminBundle\Helper\User: ~ # # Default Preview Generator diff --git a/src/Controller/Admin/UserController.php b/src/Controller/Admin/UserController.php index f121fa4e10..6a3b31cd93 100644 --- a/src/Controller/Admin/UserController.php +++ b/src/Controller/Admin/UserController.php @@ -18,6 +18,7 @@ use Pimcore\Bundle\AdminBundle\Controller\AdminController; use Pimcore\Bundle\AdminBundle\HttpFoundation\JsonResponse; +use Pimcore\Bundle\AdminBundle\Helper\User as UserHelper; use Pimcore\Controller\KernelControllerEventInterface; use Pimcore\Logger; use Pimcore\Model\Asset; @@ -367,7 +368,6 @@ public function updateAction(Request $request): JsonResponse $tmpArray[] = json_decode($item, true); } $tmpArray = array_values(array_filter($tmpArray)); - $tmpArray = User::strictKeybinds($tmpArray); $tmpArray = json_encode($tmpArray); $user->setKeyBindings($tmpArray); @@ -637,7 +637,7 @@ public function getCurrentUserAction(Request $request): Response $userData = $user->getObjectVars(); $contentLanguages = Tool\Admin::reorderWebsiteLanguages($user, Tool::getValidLanguages()); $userData['contentLanguages'] = $contentLanguages; - $userData['keyBindings'] = $user->getKeyBindings(); + $userData['keyBindings'] = UserHelper::getDefaultKeyBindings($user); unset($userData['password']); $userData['twoFactorAuthentication'] = $user->getTwoFactorAuthentication(); @@ -1120,9 +1120,7 @@ public function getRolesAction(Request $request): JsonResponse */ public function getDefaultKeyBindingsAction(Request $request): JsonResponse { - $data = User::getDefaultKeyBindings(); - - return $this->adminJson(['success' => true, 'data' => $data]); + return $this->adminJson(['success' => true, 'data' => UserHelper::getDefaultKeyBindings()]); } /** diff --git a/src/DependencyInjection/PimcoreAdminExtension.php b/src/DependencyInjection/PimcoreAdminExtension.php index 265f330e6b..c18aa6436d 100644 --- a/src/DependencyInjection/PimcoreAdminExtension.php +++ b/src/DependencyInjection/PimcoreAdminExtension.php @@ -66,6 +66,7 @@ public function load(array $configs, ContainerBuilder $container): void $container->setParameter('pimcore_admin.admin_languages', $config['admin_languages']); $container->setParameter('pimcore_admin.custom_admin_path_identifier', $config['custom_admin_path_identifier']); $container->setParameter('pimcore_admin.custom_admin_route_name', $config['custom_admin_route_name']); + $container->setParameter('pimcore_admin.user', $config['user']); $container->setParameter('pimcore_admin.config', $config); diff --git a/src/Helper/User.php b/src/Helper/User.php new file mode 100644 index 0000000000..29140f9637 --- /dev/null +++ b/src/Helper/User.php @@ -0,0 +1,62 @@ +getKeyBindings()) { + return $user->getKeyBindings(); + } + + $defaultKeyBindings = []; + $container = Pimcore::getContainer(); + $userConfig = $container->getParameter('pimcore_admin.user'); + // make sure the default key binding node is in the config + if (is_array($userConfig) && array_key_exists(self::DEFAULT_KEY_BINDINGS, $userConfig)) { + $defaultKeyBindingsConfig = $userConfig[self::DEFAULT_KEY_BINDINGS]; + if (!empty($defaultKeyBindingsConfig)) { + foreach ($defaultKeyBindingsConfig as $keys) { + $defaultKeyBinding = []; + // we do not check if the keys are empty because key is required + foreach ($keys as $index => $value) { + if ($index === 'key') { + $value = ord($value); + } + $defaultKeyBinding[$index] = $value; + } + $defaultKeyBindings[] = $defaultKeyBinding; + } + } + } + return json_encode($defaultKeyBindings); + } +}