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