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(); } } }