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

	$systemRolesIds = self::getSystemRolesIds();
	$result = new Main\Result();

	$role = new \CCrmRole();
	foreach (self::getAll() as $roleId => $entities)
	{
		if (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)) // do not affect system roles
		{
			continue;
		}
		$entities[$entityId] = $permissionSet;

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

	return $result;
}