Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'ui/app/controllers/CControllerUserEdit.php')
-rw-r--r--ui/app/controllers/CControllerUserEdit.php37
1 files changed, 32 insertions, 5 deletions
diff --git a/ui/app/controllers/CControllerUserEdit.php b/ui/app/controllers/CControllerUserEdit.php
index 8d1c892cb38..d4938c53669 100644
--- a/ui/app/controllers/CControllerUserEdit.php
+++ b/ui/app/controllers/CControllerUserEdit.php
@@ -113,6 +113,7 @@ class CControllerUserEdit extends CControllerUserEditGeneral {
'new_media' => [],
'roleid' => '',
'role' => [],
+ 'modules_rules' => [],
'user_type' => '',
'sid' => $this->getUserSID(),
'form_refresh' => 0,
@@ -175,7 +176,7 @@ class CControllerUserEdit extends CControllerUserEditGeneral {
$roles = API::Role()->get([
'output' => ['name', 'type'],
'selectRules' => ['services.read.mode', 'services.read.list', 'services.read.tag',
- 'services.write.mode', 'services.write.list', 'services.write.tag'
+ 'services.write.mode', 'services.write.list', 'services.write.tag', 'modules'
],
'roleids' => $data['roleid']
]);
@@ -217,6 +218,10 @@ class CControllerUserEdit extends CControllerUserEditGeneral {
'serviceids' => array_column($role['rules']['services.write.list'], 'serviceid')
]);
$data['service_write_tag'] = $role['rules']['services.write.tag'];
+
+ foreach ($role['rules']['modules'] as $rule) {
+ $data['modules_rules'][$rule['moduleid']] = $rule['status'];
+ }
}
}
@@ -241,12 +246,34 @@ class CControllerUserEdit extends CControllerUserEditGeneral {
$data['templategroups_rights'] = collapseGroupRights(getTemplateGroupsRights($user_groups));
}
- $data['modules'] = API::Module()->get([
- 'output' => ['id'],
- 'filter' => ['status' => MODULE_STATUS_ENABLED],
- 'preservekeys' => true
+ $data['modules'] = [];
+
+ $db_modules = API::Module()->get([
+ 'output' => ['moduleid', 'relative_path', 'status']
]);
+ if ($db_modules) {
+ $module_manager = new CModuleManager(APP::getRootDir());
+
+ foreach ($db_modules as $db_module) {
+ $manifest = $module_manager->addModule($db_module['relative_path']);
+
+ if ($manifest !== null) {
+ $data['modules'][$db_module['moduleid']] = $manifest['name'];
+ }
+ }
+ }
+
+ natcasesort($data['modules']);
+
+ $disabled_modules = array_filter($db_modules,
+ static function(array $db_module): bool {
+ return $db_module['status'] == MODULE_STATUS_DISABLED;
+ }
+ );
+
+ $data['disabled_moduleids'] = array_column($disabled_modules, 'moduleid', 'moduleid');
+
$data['mediatypes'] = API::MediaType()->get([
'output' => ['status'],
'preservekeys' => true