• Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/security/role/manager.php
  • Класс: BitrixSenderSecurityRoleManager
  • Вызов: Manager::installRoles
static function installRoles()
{
	$roleRow = RoleTable::getRow([]);
	if($roleRow)
	{
		return;
	}


	$defaultRoles = array(
		'ADMIN' => array(
			'NAME' => Loc::getMessage('SENDER_SECURITY_ROLE_MANAGER_INSTALLER_ADMIN'),
			'PERMISSIONS' => array(
				Permission::ENTITY_AD => array(
					Permission::ACTION_VIEW => Permission::PERMISSION_ANY,
					Permission::ACTION_MODIFY => Permission::PERMISSION_ANY,
				),
				Permission::ENTITY_RC => array(
					Permission::ACTION_VIEW => Permission::PERMISSION_ANY,
					Permission::ACTION_MODIFY => Permission::PERMISSION_ANY,
				),
				Permission::ENTITY_LETTER => array(
					Permission::ACTION_VIEW => Permission::PERMISSION_ANY,
					Permission::ACTION_MODIFY => Permission::PERMISSION_ANY,
				),
				Permission::ENTITY_SEGMENT => array(
					Permission::ACTION_VIEW => Permission::PERMISSION_ANY,
					Permission::ACTION_MODIFY => Permission::PERMISSION_ANY,
				),
				Permission::ENTITY_BLACKLIST => array(
					Permission::ACTION_VIEW => Permission::PERMISSION_ANY,
					Permission::ACTION_MODIFY => Permission::PERMISSION_ANY,
				),
				Permission::ENTITY_SETTINGS => array(
					Permission::ACTION_MODIFY => Permission::PERMISSION_ANY,
				),
			)
		),
		'MANAGER' => array(
			'NAME' => Loc::getMessage('SENDER_SECURITY_ROLE_MANAGER_INSTALLER_MANAGER'),
			'PERMISSIONS' => array(
				Permission::ENTITY_AD => array(
					Permission::ACTION_VIEW => Permission::PERMISSION_ANY,
					Permission::ACTION_MODIFY => Permission::PERMISSION_ANY,
				),
				Permission::ENTITY_RC => array(
					Permission::ACTION_VIEW => Permission::PERMISSION_ANY,
					Permission::ACTION_MODIFY => Permission::PERMISSION_ANY,
				),
				Permission::ENTITY_LETTER => array(
					Permission::ACTION_VIEW => Permission::PERMISSION_ANY,
					Permission::ACTION_MODIFY => Permission::PERMISSION_ANY,
				),
				Permission::ENTITY_SEGMENT => array(
					Permission::ACTION_VIEW => Permission::PERMISSION_ANY,
					Permission::ACTION_MODIFY => Permission::PERMISSION_NONE,
				),
				Permission::ENTITY_BLACKLIST => array(
					Permission::ACTION_VIEW => Permission::PERMISSION_ANY,
					Permission::ACTION_MODIFY => Permission::PERMISSION_ANY,
				),
				Permission::ENTITY_SETTINGS => array(
					Permission::ACTION_MODIFY => Permission::PERMISSION_NONE,
				),
			)
		)
	);

	$roleIds = array();
	foreach ($defaultRoles as $roleCode => $role)
	{
		$addResult = RoleTable::add(array(
			'NAME' => $role['NAME'],
			'XML_ID' => $roleCode,
		));

		$roleId = $addResult->getId();
		if ($roleId)
		{
			$roleIds[$roleCode] = $roleId;
			Manager::setRolePermissions($roleId, [], $role['PERMISSIONS']);
		}
	}

	if (isset($roleIds['ADMIN']))
	{
		ModelRoleAccessTable::add(array(
			'ROLE_ID' => $roleIds['ADMIN'],
			'ACCESS_CODE' => 'G1'
		));
	}
	if (isset($roleIds['MANAGER']) && Loader::includeModule('intranet'))
	{
		$departmentTree = CIntranetUtils::getDeparmentsTree();
		$rootDepartment = (int)$departmentTree[0][0];

		if ($rootDepartment > 0)
		{
			ModelRoleAccessTable::add(array(
				'ROLE_ID' => $roleIds['MANAGER'],
				'ACCESS_CODE' => 'DR'.$rootDepartment
			));
		}
	}
}