• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/security/attributesprovider.php
  • Класс: Bitrix\Crm\Security\AttributesProvider
  • Вызов: AttributesProvider::getEntityListAttributes
public function getEntityListAttributes(string $permissionEntityType, string $operation): array
{
	$result = [];
	$permissions = $this->getUserPermissions();

	if (!isset($permissions[$permissionEntityType][$operation]))
	{
		return $result;
	}

	$userAttributes = $this->getUserAttributes();
	$defaultPermission = $permissions[$permissionEntityType][$operation]['-'] ?? UserPermissions::PERMISSION_NONE;
	foreach (array_keys($permissions[$permissionEntityType][$operation]) as $statusFieldName)
	{
		if ($statusFieldName === '-' && count($permissions[$permissionEntityType][$operation]) == 1)
		{
			$permission = $defaultPermission;

			$result = array_merge(
				$result,
				$this->prepareAttributesByPermission($userAttributes, $permission)
			);
		}
		else
		{
			// we can use factory instead of hardcoded statuses list for each entity type
			$statusIds = $this->getEntityStatusIds($permissionEntityType, $statusFieldName);

			foreach ($statusIds as $statusId)
			{
				$permission = $defaultPermission;
				if (isset($permissions[$permissionEntityType][$operation][$statusFieldName][$statusId]))
				{
					$permission = $permissions[$permissionEntityType][$operation][$statusFieldName][$statusId];
				}
				$result = array_merge(
					$result,
					$this->prepareAttributesByPermission($userAttributes, $permission, $statusFieldName . $statusId)
				);
			}
		}
	}

	return $result;
}