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