diff --git a/application/Espo/Core/Utils/Config.php b/application/Espo/Core/Utils/Config.php index c41bd1afe1..8aeacb4d6a 100644 --- a/application/Espo/Core/Utils/Config.php +++ b/application/Espo/Core/Utils/Config.php @@ -282,6 +282,11 @@ class Config return $this->get('systemItems', []); } + public function getSuperAdminOnlySystemItemList() + { + return $this->get('superAdminSystemItems', []); + } + public function getUserOnlyItemList() { return $this->get('userItems', []); diff --git a/application/Espo/Core/defaults/systemConfig.php b/application/Espo/Core/defaults/systemConfig.php index 6a5f6d7f2e..68e64b9416 100644 --- a/application/Espo/Core/defaults/systemConfig.php +++ b/application/Espo/Core/defaults/systemConfig.php @@ -82,6 +82,7 @@ return [ 'systemItems', 'adminItems', 'superAdminItems', + 'superAdminSystemItems', 'configPath', 'cachePath', 'database', @@ -116,6 +117,7 @@ return [ 'requiredMariadbVersion', 'recommendedMariadbParams', 'phpExecutablePath', + 'webSocketDebugMode', ], 'adminItems' => [ 'devMode', @@ -206,6 +208,8 @@ return [ 'siteUrl', 'useWebSocket', 'webSocketUrl', + ], + 'superAdminSystemItems' => [ 'webSocketSslCertificateFile', 'webSocketSslCertificateKeyFile', 'webSocketSslAllowSelfSigned', diff --git a/application/Espo/Services/Settings.php b/application/Espo/Services/Settings.php index a62d844d2b..336dc54720 100644 --- a/application/Espo/Services/Settings.php +++ b/application/Espo/Services/Settings.php @@ -71,21 +71,24 @@ class Settings extends \Espo\Core\Services\Base $ignoreItemList = []; - $systemOnlyItemList = $this->getSystemOnlyItemList(); - foreach ($systemOnlyItemList as $item) { + foreach ($this->getSystemOnlyItemList() as $item) { $ignoreItemList[] = $item; } if (!$this->getUser()->isAdmin() || $this->getUser()->isSystem()) { - $adminOnlyItemList = $this->getAdminOnlyItemList(); - foreach ($adminOnlyItemList as $item) { + foreach ($this->getAdminOnlyItemList() as $item) { $ignoreItemList[] = $item; } } if ($this->getUser()->isSystem()) { - $userOnlyItemList = $this->getUserOnlyItemList(); - foreach ($userOnlyItemList as $item) { + foreach ($this->getUserOnlyItemList() as $item) { + $ignoreItemList[] = $item; + } + } + + if ($this->getConfig()->get('restrictedMode') && !$this->getUser()->isSuperAdmin()) { + foreach ($this->getConfig()->getSuperAdminOnlySystemItemList() as $item) { $ignoreItemList[] = $item; } } @@ -120,14 +123,15 @@ class Settings extends \Espo\Core\Services\Base $ignoreItemList = []; - $systemOnlyItemList = $this->getSystemOnlyItemList(); - foreach ($systemOnlyItemList as $item) { + foreach ($this->getSystemOnlyItemList() as $item) { $ignoreItemList[] = $item; } if ($this->getConfig()->get('restrictedMode') && !$this->getUser()->isSuperAdmin()) { - $superAdminOnlyItemList = $this->getConfig()->getSuperAdminOnlyItemList(); - foreach ($superAdminOnlyItemList as $item) { + foreach ($this->getConfig()->getSuperAdminOnlyItemList() as $item) { + $ignoreItemList[] = $item; + } + foreach ($this->getConfig()->getSuperAdminOnlySystemItemList() as $item) { $ignoreItemList[] = $item; } } @@ -223,4 +227,5 @@ class Settings extends \Espo\Core\Services\Base return $itemList; } + }