• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/security/role/rolepermission.php
  • Класс: Bitrix\Crm\Security\Role\RolePermission
  • Вызов: RolePermission::setByEntityId
static function setByEntityId(string $entityId, array $permissionSet, $skipAdminRoles = false, $skipSystemRoles = true)
{
	static::$cache = null;
	$systemRolesIds = self::getSystemRolesIds();

	$result = new Main\Result();

	$role = new \CCrmRole();
	foreach (self::getAll() as $roleId => $entities)
	{
		if (
			$skipAdminRoles
			&& array_key_exists("CONFIG", $entities)
			&& array_key_exists("WRITE", $entities["CONFIG"])
		)
		{
			$perms = reset($entities["CONFIG"]["WRITE"]);
			if ($perms >= BX_CRM_PERM_ALL)
			{
				continue;
			}
		}
		if (in_array($roleId, $systemRolesIds, false) && $skipSystemRoles) // do not affect system roles
		{
			continue;
		}

		if (array_key_exists($roleId, $permissionSet))
		{
			$entities[$entityId] = $permissionSet[$roleId];

			$fields = ["RELATION" => $entities];
			if (!$role->Update($roleId, $fields))
			{
				$result->addError(new Main\Error($fields["RESULT_MESSAGE"]));
			}
		}
	}

	return $result;
}