public static function authenticateUser()
 {
     /** @var $context \Bitrix\Main\HttpContext */
     //$context = \Bitrix\Main\Application::getInstance()->getContext();
     //$currentUser = $context->getUser();
     //if ($currentUser->isAuthenticated())
     //	$currentUser->getLastName();
     //\Bitrix\Main\Security\Authentication::copyToSession($currentUser);
     // раскомментировать когда уберем из CurrentUser вызовы USER
     $GLOBALS["USER"] = new \CUser();
     // define("BX_STARTED", true); // нужен для инфоблоков чтобы понять - определен ли сайт???
     if (!defined("NOT_CHECK_PERMISSIONS") || NOT_CHECK_PERMISSIONS !== true) {
         $bLogout = strtolower($_REQUEST["logout"]) == "yes";
         if ($bLogout && $GLOBALS["USER"]->isAuthorized()) {
             // этот редирект нужно убирать
             $GLOBALS["USER"]->logout();
             LocalRedirect($GLOBALS["APPLICATION"]->getCurPageParam('', array('logout')));
         }
         // authorize by cookie
         $cookie_prefix = \COption::getOptionString('main', 'cookie_name', 'BITRIX_SM');
         $cookie_login = $_COOKIE[$cookie_prefix . '_LOGIN'];
         $cookie_md5pass = $_COOKIE[$cookie_prefix . '_UIDH'];
         if (\COption::getOptionString("main", "store_password", "Y") == "Y" && strlen($cookie_login) > 0 && strlen($cookie_md5pass) > 0 && !$GLOBALS["USER"]->isAuthorized() && !$bLogout && $_SESSION["SESS_PWD_HASH_TESTED"] != md5($cookie_login . "|" . $cookie_md5pass)) {
             $GLOBALS["USER"]->loginByHash($cookie_login, $cookie_md5pass);
             $_SESSION["SESS_PWD_HASH_TESTED"] = md5($cookie_login . "|" . $cookie_md5pass);
         }
         $arAuthResult = false;
         //http basic and digest authorization
         if (($httpAuth = $GLOBALS["USER"]->loginByHttpAuth()) !== null) {
             $arAuthResult = $httpAuth;
             $GLOBALS["APPLICATION"]->setAuthResult($arAuthResult);
         }
         //Authorize user from authorization html form
         if ($_REQUEST["AUTH_FORM"] != '') {
             $bRsaError = false;
             if (\COption::getOptionString('main', 'use_encrypted_auth', 'N') == 'Y') {
                 //possible encrypted user password
                 $sec = new \CRsaSecurity();
                 if ($arKeys = $sec->loadKeys()) {
                     $sec->setKeys($arKeys);
                     $errno = $sec->acceptFromForm(array('USER_PASSWORD', 'USER_CONFIRM_PASSWORD'));
                     if ($errno == \CRsaSecurity::ERROR_SESS_CHECK) {
                         $arAuthResult = array("MESSAGE" => GetMessage("main_include_decode_pass_sess"), "TYPE" => "ERROR");
                     } elseif ($errno < 0) {
                         $arAuthResult = array("MESSAGE" => GetMessage("main_include_decode_pass_err", array("#ERRCODE#" => $errno)), "TYPE" => "ERROR");
                     }
                     if ($errno < 0) {
                         $bRsaError = true;
                     }
                 }
             }
             if ($bRsaError == false) {
                 if (!defined("ADMIN_SECTION") || ADMIN_SECTION !== true) {
                     $USER_LID = LANG;
                 } else {
                     $USER_LID = false;
                 }
                 if ($_REQUEST["TYPE"] == "AUTH") {
                     $arAuthResult = $GLOBALS["USER"]->login($_REQUEST["USER_LOGIN"], $_REQUEST["USER_PASSWORD"], $_REQUEST["USER_REMEMBER"]);
                     if ($arAuthResult === true && defined('ADMIN_SECTION') && ADMIN_SECTION === true) {
                         $_SESSION['BX_ADMIN_LOAD_AUTH'] = true;
                         echo '<script type="text/javascript">window.onload=function(){top.BX.AUTHAGENT.setAuthResult(false);};</script>';
                         die;
                     }
                 } elseif ($_REQUEST["TYPE"] == "SEND_PWD") {
                     $arAuthResult = $GLOBALS["USER"]->sendPassword($_REQUEST["USER_LOGIN"], $_REQUEST["USER_EMAIL"], $USER_LID);
                 } elseif ($_SERVER['REQUEST_METHOD'] == 'POST' && $_REQUEST["TYPE"] == "CHANGE_PWD") {
                     $arAuthResult = $GLOBALS["USER"]->changePassword($_REQUEST["USER_LOGIN"], $_REQUEST["USER_CHECKWORD"], $_REQUEST["USER_PASSWORD"], $_REQUEST["USER_CONFIRM_PASSWORD"], $USER_LID);
                 } elseif (\COption::getOptionString("main", "new_user_registration", "N") == "Y" && $_SERVER['REQUEST_METHOD'] == 'POST' && $_REQUEST["TYPE"] == "REGISTRATION" && (!defined("ADMIN_SECTION") || ADMIN_SECTION !== true)) {
                     $arAuthResult = $GLOBALS["USER"]->register($_REQUEST["USER_LOGIN"], $_REQUEST["USER_NAME"], $_REQUEST["USER_LAST_NAME"], $_REQUEST["USER_PASSWORD"], $_REQUEST["USER_CONFIRM_PASSWORD"], $_REQUEST["USER_EMAIL"], $USER_LID, $_REQUEST["captcha_word"], $_REQUEST["captcha_sid"]);
                 }
             }
             $GLOBALS["APPLICATION"]->setAuthResult($arAuthResult);
         } elseif (!$GLOBALS["USER"]->isAuthorized()) {
             //Authorize by unique URL
             $GLOBALS["USER"]->loginHitByHash();
         }
     }
 }