• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/security/helper.php
  • Класс: BitrixImOpenlinesSecurityHelper
  • Вызов: Helper::installRolesAgent
static function installRolesAgent()
{
	$checkCursor = BitrixImOpenlinesModelRoleTable::getList(array('limit' => 1));
	if($checkCursor->fetch())
		return "";

	$defaultRoles = array(
		'ADMIN' => array(
			'NAME' => GetMessage('IMOL_ROLE_ADMIN'),
			'PERMISSIONS' => array(
				Permissions::ENTITY_LINES => array(
					Permissions::ACTION_VIEW => Permissions::PERMISSION_ANY,
					Permissions::ACTION_MODIFY => Permissions::PERMISSION_ANY,
				),
				Permissions::ENTITY_CONNECTORS => array(
					Permissions::ACTION_MODIFY => Permissions::PERMISSION_ALLOW,
				),
				Permissions::ENTITY_SESSION => array(
					Permissions::ACTION_VIEW => Permissions::PERMISSION_ANY,
				),
				Permissions::ENTITY_HISTORY => array(
					Permissions::ACTION_VIEW => Permissions::PERMISSION_ANY,
				),
				Permissions::ENTITY_JOIN => array(
					Permissions::ACTION_PERFORM => Permissions::PERMISSION_ANY,
				),
				Permissions::ENTITY_VOTE_HEAD => array(
					Permissions::ACTION_PERFORM => Permissions::PERMISSION_ANY,
				),
				Permissions::ENTITY_SETTINGS => array(
					Permissions::ACTION_MODIFY => Permissions::PERMISSION_ALLOW,
				),
				Permissions::ENTITY_QUICK_ANSWERS => array(
					Permissions::ACTION_MODIFY => Permissions::PERMISSION_ANY,
				),
				Permissions::ENTITY_SOFT_PAUSE_LIST => array(
					Permissions::ACTION_VIEW => Permissions::PERMISSION_ALLOW,
				)
			)
		),
		'CHIEF' => array(
			'NAME' => GetMessage('IMOL_ROLE_CHIEF'),
			'PERMISSIONS' => array(
				Permissions::ENTITY_LINES => array(
					Permissions::ACTION_VIEW => Permissions::PERMISSION_ANY,
					Permissions::ACTION_MODIFY => Permissions::PERMISSION_ANY,
				),
				Permissions::ENTITY_CONNECTORS => array(
					Permissions::ACTION_MODIFY => Permissions::PERMISSION_ANY,
				),
				Permissions::ENTITY_SESSION => array(
					Permissions::ACTION_VIEW => Permissions::PERMISSION_ANY,
				),
				Permissions::ENTITY_HISTORY => array(
					Permissions::ACTION_VIEW => Permissions::PERMISSION_ANY,
				),
				Permissions::ENTITY_JOIN => array(
					Permissions::ACTION_PERFORM => Permissions::PERMISSION_ANY,
				),
				Permissions::ENTITY_VOTE_HEAD => array(
					Permissions::ACTION_PERFORM => Permissions::PERMISSION_ANY,
				),
				Permissions::ENTITY_SETTINGS => array(
					Permissions::ACTION_MODIFY => Permissions::PERMISSION_NONE,
				),
				Permissions::ENTITY_QUICK_ANSWERS => array(
					Permissions::ACTION_MODIFY => Permissions::PERMISSION_ANY,
				),
				Permissions::ENTITY_SOFT_PAUSE_LIST => array(
					Permissions::ACTION_VIEW => Permissions::PERMISSION_ANY,
				)
			)
		),
		'MANAGER' => array(
			'NAME' => GetMessage('IMOL_ROLE_MANAGER'),
			'PERMISSIONS' => array(
				Permissions::ENTITY_LINES => array(
					Permissions::ACTION_VIEW => Permissions::PERMISSION_ANY,
					Permissions::ACTION_MODIFY => Permissions::PERMISSION_NONE,
				),
				Permissions::ENTITY_CONNECTORS => array(
					Permissions::ACTION_MODIFY => Permissions::PERMISSION_ALLOW,
				),
				Permissions::ENTITY_SESSION => array(
					Permissions::ACTION_VIEW => Permissions::PERMISSION_SELF,
				),
				Permissions::ENTITY_HISTORY => array(
					Permissions::ACTION_VIEW => Permissions::PERMISSION_SELF,
				),
				Permissions::ENTITY_JOIN => array(
					Permissions::ACTION_PERFORM => Permissions::PERMISSION_SELF,
				),
				Permissions::ENTITY_VOTE_HEAD => array(
					Permissions::ACTION_PERFORM => Permissions::PERMISSION_NONE,
				),
				Permissions::ENTITY_SETTINGS => array(
					Permissions::ACTION_MODIFY => Permissions::PERMISSION_NONE,
				),
				Permissions::ENTITY_QUICK_ANSWERS => array(
					Permissions::ACTION_MODIFY => Permissions::PERMISSION_NONE,
				),
				Permissions::ENTITY_SOFT_PAUSE_LIST => array(
					Permissions::ACTION_VIEW => Permissions::PERMISSION_NONE,
				)
			)
		)
	);

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

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

	if (isset($roleIds['ADMIN']))
	{
		BitrixImOpenlinesModelRoleAccessTable::add(array(
			'ROLE_ID' => $roleIds['ADMIN'],
			'ACCESS_CODE' => 'G1'
		));
	}
	if (isset($roleIds['CHIEF']))
	{
		$dbGroup = CGroup::GetList('', '', Array("STRING_ID" => "DIRECTION"));
		if($arGroup = $dbGroup->Fetch())
		{
			BitrixImOpenlinesModelRoleAccessTable::add(array(
				'ROLE_ID' => $roleIds['CHIEF'],
				'ACCESS_CODE' => 'G'.$arGroup["ID"]
			));
		}
	}

	if (isset($roleIds['MANAGER']) && BitrixMainLoader::includeModule('intranet'))
	{
		$departmentTree = CIntranetUtils::GetDeparmentsTree();
		$rootDepartment = (int)$departmentTree[0][0];

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

	return "";
}