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