• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/widget/auth.php
  • Класс: BitrixImopenlinesWidgetAuth
  • Вызов: Auth::onDiskCheckAuth
static function onDiskCheckAuth(BitrixMainEvent $event)
{
	global $USER;
	if ($USER->IsAuthorized())
	{
		return false;
	}

	$request = BitrixMainApplication::getInstance()->getContext()->getRequest();

	$authCode = $request->get(self::AUTH_ID_PARAM);
	$authUid = (int)$request->get(self::AUTH_UID_PARAM);
	$authFileId = (int)$request->get('fileId');

	if (!$authCode || !$authUid || !$authFileId || !preg_match("/^[a-fA-F0-9]{32}$/i", $authCode))
	{
		return false;
	}

	/** @var BitrixMainEngineAction $action */
	$action = $event->getParameter('action');
	if (!in_array(mb_strtolower($action->getName()), ['download', 'showimage', 'showpreview']))
	{
		return false;
	}

	$userData = BitrixMainUserTable::getList([
		'select' => ['ID', 'EXTERNAL_AUTH_ID', 'XML_ID'],
		'filter' => ['ID' => $authUid]
	])->fetch();

	if($userData && $userData['EXTERNAL_AUTH_ID'] == User::EXTERNAL_AUTH_ID)
	{
		if ($authCode === md5($userData['ID'].'|'.$authFileId.'|'.str_replace(self::AUTH_TYPE."|", '', $userData['XML_ID'])))
		{
			self::authorizeById($userData['ID'], false);
			setSessionExpired(true);
			return false;
		}
	}
}