Source
xxxxxxxxxx
<?php
/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
/**
* Create data user permissions for hosts and host groups access.
*/
class UserPermissions {
public static function load() {
// Prepare host group and host with item and triggers.
$hostgroups = CDataHelper::call('hostgroup.create', [['name' => 'Host group for tag permissions']]);
$hostgroupid = $hostgroups['groupids'][0];
$hosts = CDataHelper::call('host.create', [
'host' => 'Host for tag permissions',
'groups' => [['groupid' => $hostgroupid]],
'interfaces' => []
]);
$items = CDataHelper::call('item.create', [
[
'hostid' => $hosts['hostids'][0],
'name' => 'tag.item',
'key_' => 'tag.key',
'type' => ITEM_TYPE_TRAPPER,
'value_type' => ITEM_VALUE_TYPE_UINT64
]
]);
CDataHelper::call('trigger.create', [
[
'description' => 'Trigger for tag permissions MySQL',
'expression' => 'last(/Host for tag permissions/tag.key,#1)=0',
'tags' => [['tag' => 'Service', 'value' => 'MySQL']]
],
[
'description' => 'Trigger for tag permissions Oracle',
'expression' => 'last(/Host for tag permissions/tag.key,#1)=0',
'tags' => [['tag' => 'Service', 'value' => 'Oracle']]
]
]);
$triggerids = CDataHelper::getIds('description');
// Create events and problems..
CDataHelper::addItemData($items['itemids'][0], 0);
foreach (array_keys($triggerids) as $trigger_name) {
CDBHelper::setTriggerProblem($trigger_name, TRIGGER_VALUE_TRUE, ['clock' => time()]);
}
// Create user groups with corresponding permissions and users.
CDataHelper::call('usergroup.create', [
[
'name' => 'Selenium user group for tag permissions AAA',
'hostgroup_rights' => ['id' => $hostgroupid, 'permission' => PERM_READ_WRITE]
],
[
'name' => 'Selenium user group for tag permissions BBB',
'hostgroup_rights' => ['id' => $hostgroupid, 'permission' => PERM_READ_WRITE]
]
]);
$usergroupids = CDataHelper::getIds('name');
CDataHelper::call('user.create', [
[
'username' => 'Tag-user',
'passwd' => 'Zabbix_Test_123',
'roleid' => USER_TYPE_ZABBIX_USER,
'usrgrps' => [
['usrgrpid' => $usergroupids['Selenium user group for tag permissions AAA']],
['usrgrpid' => $usergroupids['Selenium user group for tag permissions BBB']]
]
]
]);
}
}