- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/Access/Service/RolePermissionService.php
- Класс: BitrixCatalogAccessServiceRolePermissionService
- Вызов: RolePermissionService::appendInventoryManagmentPermissions
public function appendInventoryManagmentPermissions(array $permissionSettings): array
{
$inventoryManagementPermissions = (new PermissionConfig)->getInventoryManagementPermissions();
foreach ($permissionSettings as &$setting)
{
$roleId = (int)$setting['id'];
if (!$roleId)
{
continue;
}
$newRights = $setting['accessRights'] ?? [];
if (!is_array($newRights))
{
throw new SystemException('Parameter `acessRights` must be array');
}
$inventoryManagementRights = array_map(
static function (array $item) {
return [
'id' => $item['PERMISSION_ID'],
'value' => $item['VALUE'],
];
},
$this->getSavedPermissions([
'filter' => [
'=ROLE_ID' => $roleId,
'=PERMISSION_ID' => $inventoryManagementPermissions,
],
])
);
$diffRights = array_udiff($inventoryManagementRights, $newRights, static function ($a, $b) {
$a = (string)$a['id'];
$b = (string)$b['id'];
return $a <=> $b;
});
if (empty($diffRights))
{
continue;
}
array_push($newRights, ... $diffRights);
$setting['accessRights'] = $newRights;
}
return $permissionSettings;
}