• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/sign/access/service/rolepermissionservice.php
  • Класс: Bitrix\Crm\Integration\Sign\Access\Service\RolePermissionService
  • Вызов: RolePermissionService::fillPermissionSet
private function fillPermissionSet(&$setting, $entity): array
{
	$permissionSet = CCrmRole::getDefaultPermissionSet();

	if ($entity !== 'CONTACT' || empty($setting['accessRights']))
	{
		foreach ($permissionSet as &$perm)
		{
			$perm['-'] = '';
		}
	}

	foreach ($setting['accessRights'] as $key => $permission)
	{
		$permissionCode = $this->getPermissionCode($permission['id']);
		$permissionId = explode('_', $permissionCode);
		$action = array_pop($permissionId);
		array_shift($permissionId);
		array_shift($permissionId);

		if (!$this->validatePermission($permissionSet, $action, $permission))
		{
			$permissionSet[$action] = ['-' => CCrmPerms::PERM_NONE];
			unset($setting['accessRights'][$key]);
			continue;
		}

		if (mb_strpos($entity, implode('_', $permissionId)) === 0)
		{
			$permissionSet[$action] = ['-' => $permission['value'] ?: CCrmPerms::PERM_NONE];
			unset($setting['accessRights'][$key]);
		}
	}
	return $permissionSet;
}