- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/Access/Install/AccessInstaller.php
- Класс: BitrixCatalogAccessInstallAccessInstaller
- Вызов: AccessInstaller::fillDefaultSystemPermissions
private function fillDefaultSystemPermissions(array $roles = null): void
{
$map = RoleMap::getDefaultMap();
if ($roles !== null)
{
$map = array_intersect_key($map, array_flip($roles));
if (!$map)
{
return;
}
}
$query = [];
$roleNameIdMap = [];
foreach ($map as $roleName => $roleClass)
{
if (is_subclass_of($roleClass, RoleBase::class))
{
$roleMapItem = new $roleClass();
}
else
{
continue;
}
$role = RoleTable::add([
'NAME' => $roleName
]);
if (!$role->isSuccess())
{
continue;
}
$roleId = $role->getId();
$roleNameIdMap[$roleName] = $roleId;
foreach ($roleMapItem->getMap() as $item)
{
$query[] = new SqlExpression(
'(?i,?,?)',
$roleId,
$item['permissionId'],
$item['value']
);
}
}
RoleUtil::insertPermissions($query);
if (!array_intersect_key($map, array_flip([RoleDictionary::ROLE_DIRECTOR, RoleDictionary::ROLE_SALESMAN])))
{
return;
}
$userGroups = GroupTable::getList([
'filter' => [
'=STRING_ID' => [
ShopGroupAssistant::SHOP_MANAGER_USER_GROUP_CODE,
ShopGroupAssistant::SHOP_ADMIN_USER_GROUP_CODE,
]
],
'select' => ['ID', 'STRING_ID']
]);
$defaultGroupRoleMap = [];
while ($userGroup = $userGroups->fetch())
{
$role =
$userGroup['STRING_ID'] === ShopGroupAssistant::SHOP_ADMIN_USER_GROUP_CODE && $map[RoleDictionary::ROLE_DIRECTOR]
? $roleNameIdMap[RoleDictionary::ROLE_DIRECTOR]
: $roleNameIdMap[RoleDictionary::ROLE_SALESMAN]
;
$defaultGroupRoleMap[$userGroup['ID']] = $role;
}
if (!$defaultGroupRoleMap)
{
return;
}
$this->fillGroupUserRoleRelations($defaultGroupRoleMap);
}