- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/main.php
- Класс: CAllMain
- Вызов: CAllMain::GetUserRight
static function GetUserRight($moduleId, $groups = false, $use_default_level = 'Y', $max_right_for_super_admin = 'Y', $siteId = false)
{
global $USER;
$minRight = 'D';
$maxRight = 'W';
if ($groups === false && ($USER instanceof CUser))
{
if ($max_right_for_super_admin == 'Y' && $USER->IsAdmin())
{
return $maxRight;
}
$groups = $USER->GetUserGroupArray();
}
if (!is_array($groups))
{
$groups = [2];
}
if (
$max_right_for_super_admin == 'Y'
&& in_array(1, $groups)
&& (
COption::GetOptionString('main', 'controller_member', 'N') != 'Y'
|| COption::GetOptionString('main', '~controller_limited_admin', 'N') != 'Y'
)
)
{
return $maxRight;
}
if (!is_array($siteId))
{
$siteId = [$siteId];
}
$modulePermissions = ModuleGroupTable::query()
->setSelect(['*'])
->where('MODULE_ID', $moduleId)
->where('GROUP.ACTIVE', 'Y')
->setCacheTtl(86400)
->cacheJoins(true)
->fetchAll()
;
$right = '';
foreach ($modulePermissions as $permission)
{
// site filter
if (in_array($permission['SITE_ID'], $siteId))
{
// group filter
if (in_array($permission['GROUP_ID'], $groups))
{
// max
if ($permission['G_ACCESS'] > $right)
{
$right = $permission['G_ACCESS'];
}
}
}
}
if ($right == '' && $use_default_level == 'Y')
{
$right = COption::GetOptionString($moduleId, 'GROUP_DEFAULT_RIGHT', $minRight);
}
return $right;
}