- Модуль: 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;
}