Авторизация по номеру телефона

Авторизация регистрация по номеру телефона в Аспро Премьер

Решение аспро мало чем отличается от других решений аспро в плане логики реализации авторизации /регистрации на сайте.

Вход через соцсети

Чтобы помимо нашего комопннета отображадись и кнпоки входа через соц сети под формой, нужно создать файл /ajax/auth_socserv.php со следующим содержимым

<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die(); ?>
<div class="soc-avt" style="padding:16px;margin:0 auto;max-width:380px;">
    <?
    //-----------------------------------------


    $arResult["FORM_TYPE"] = "login";

    $arVarExcl = ["USER_LOGIN" => 1, "USER_PASSWORD" => 1, "backurl" => 1, "auth_service_id" => 1, "TYPE" => 1, "AUTH_FORM" => 1];
    $arResult["GET"] = [];
    $arResult["POST"] = [];
    foreach ($_POST as $vname => $vvalue) {
        if (!isset($arVarExcl[$vname])) {
            if (!is_array($vvalue)) {
                $arResult["POST"][htmlspecialcharsbx($vname)] = htmlspecialcharsbx($vvalue);
            } else {
                foreach ($vvalue as $k1 => $v1) {
                    if (is_array($v1)) {
                        foreach ($v1 as $k2 => $v2) {
                            if (!is_array($v2))
                                $arResult["POST"][htmlspecialcharsbx($vname) . "[" . htmlspecialcharsbx($k1) . "][" . htmlspecialcharsbx($k2) . "]"] = htmlspecialcharsbx($v2);
                        }
                    } else {
                        $arResult["POST"][htmlspecialcharsbx($vname) . "[" . htmlspecialcharsbx($k1) . "]"] = htmlspecialcharsbx($v1);
                    }
                }
            }
        }
    }

    $arParamsToDelete = [
        "login",
        "logout",
        "register",
        "forgot_password",
        "change_password",
        "confirm_registration",
        "confirm_code",
        "confirm_user_id",
        "logout_butt",
    ];

    if (defined("AUTH_404"))
        $arResult["AUTH_URL"] = htmlspecialcharsback(POST_FORM_ACTION_URI);
    else
        $arResult["AUTH_URL"] = $APPLICATION->GetCurPageParam("login=yes", array_merge($arParamsToDelete, ["logout_butt", "backurl"]));


    $arResult["AUTH_SERVICES"] = false;
    $arResult["CURRENT_SERVICE"] = false;

    global $USER;
    if (!$USER->IsAuthorized() && CModule::IncludeModule("socialservices")) {
        $oAuthManager = new CSocServAuthManager();
        $arServices = $oAuthManager->GetActiveAuthServices($arResult);

        if (!empty($arServices)) {
            $arResult["AUTH_SERVICES"] = $arServices;
            if (isset($_REQUEST["auth_service_id"]) && $_REQUEST["auth_service_id"] <> '' && isset($arResult["AUTH_SERVICES"][$_REQUEST["auth_service_id"]])) {
                $arResult["CURRENT_SERVICE"] = $_REQUEST["auth_service_id"];
                if (isset($_REQUEST["auth_service_error"]) && $_REQUEST["auth_service_error"] <> '') {
                    $arResult['ERROR_MESSAGE'] = $oAuthManager->GetError($arResult["CURRENT_SERVICE"], $_REQUEST["auth_service_error"]);
                } elseif (!$oAuthManager->Authorize($_REQUEST["auth_service_id"])) {
                    $ex = $APPLICATION->GetException();
                    if ($ex)
                        $arResult['ERROR_MESSAGE'] = $ex->GetString();
                }
            }
        }
    }

    if (!empty($arResult['ERROR_MESSAGE'])) {
        echo $arResult['ERROR_MESSAGE'];
    }
    ?>
    <?
    /*<div class="title" style="padding-top:8px;">Быстрый вход через соцсети</div>*/ ?>
    <?
    $APPLICATION->IncludeComponent(
        "bitrix:socserv.auth.form",
        "auth",
        [
            "AUTH_SERVICES" => $arResult["AUTH_SERVICES"],
            "AUTH_URL" => $arResult["AUTH_URL"],
            // "COMPOSITE_FRAME_MODE" => "A",
            // "COMPOSITE_FRAME_TYPE" => "AUTO",
            //"POPUP" => "N",
            "POST" => $arResult["POST"],
            "SUFFIX" => "form"
        ]
    ); ?>

</div>


Для десктоп версии

Для решения Аспро Премьер форма авторизации / регистрации подгружается по ajax и отображается в попап окне. Необходимо найти файл относительно корня сайта - /ajax/auth.php. Сделайте его копию, назвать auth.ori.php. В оригинальный файл вставьте код ниже.

<?
// 23.05.2025
// содержимое файла /ajax/auth.php

<?
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php');
global $APPLICATION, $USER, $arTheme;

$url = (is_array($arTheme['PERSONAL_PAGE_URL']) ? $arTheme['PERSONAL_PAGE_URL']['VALUE'] : '') ?: SITE_DIR . 'personal/';

if ($_GET['auth_service_error']) {
    LocalRedirect($url);
}
?>
<?
if (!$USER->IsAuthorized()): ?>
    <?
    if (isset($_REQUEST['backurl']) && $_REQUEST['backurl']) {
        // fix ajax url
        if ($_REQUEST['backurl'] != $_SERVER['REQUEST_URI']) {
            $_SERVER['QUERY_STRING'] = '';
            $_SERVER['REQUEST_URI'] = $_REQUEST['backurl'];

            $APPLICATION->sDocPath2 = GetPagePath(false, true);
            $APPLICATION->sDirPath = GetDirPath($APPLICATION->sDocPath2);
            // $APPLICATION->reinitPath();
        }
    }
    ?>
    <div id="wrap_ajax_auth">
        <?

        $bSkip = false;

        //подклчюаем модуль
        if (\Bitrix\Main\Loader::includeModule('bxmaker.authuserphone')) {

            $oManager = \BXmaker\AuthUserPhone\Manager::getInstance();

            //если модуль для текущего сайта включен
            if ($oManager->isEnabled()) {

                $bSkip = true;


                $APPLICATION->IncludeComponent(
                    $oManager->param()->getDefaultComponent(),
                    '',
                    [
                        'COMPOSITE_FRAME_MODE' => 'N',
                        'RAND_STRING' => 'ajax'
                    ]
                );


                // стили чтобы попап окно было соразмерно контенту компонента
                ?>

                <style>

                    .auth_frame.popup {
                        width: auto;
                        max-width: 375px;
                        min-width: 375px;
                    }

                    .auth_frame.popup .close {
                        right: 25px;
                        top: 20px;
                    }

                    #popup_iframe_wrapper {
                        z-index: 980 !important;
                    }

                    .bxmaker-authuserphone-simple,
                    .bxmaker-authuserphone-enter {
                        box-shadow: none;
                    }
                </style>
                <?

                /* https://bxmaker.ru/doc/authuserphone/how/avtorizatsiya-cherez-sotsseti/ */

                if (file_exists(\Bitrix\Main\Application::getDocumentRoot() . '/ajax/auth_socserv.php')) {
                    include \Bitrix\Main\Application::getDocumentRoot() . '/ajax/auth_socserv.php';
                }

            }
        }

        // если модуль для текущего сайта не включен или вообще не установлен, показываем исходный вариант
        if (!$bSkip) {
            ?>
            <?
            $APPLICATION->IncludeComponent(
                "bitrix:system.auth.form",
                "main",
                [
                    "REGISTER_URL" => SITE_DIR . "auth/registration/?register=yes",
                    "PROFILE_URL" => SITE_DIR . "auth/",
                    "FORGOT_PASSWORD_URL" => SITE_DIR . "auth/forgot-password/?forgot-password=yes",
                    "AUTH_URL" => SITE_DIR . "auth/",
                    "SHOW_ERRORS" => "Y",
                    "POPUP_AUTH" => "Y",
                    "AJAX_MODE" => "Y",
                    "BACKURL" => ((isset($_REQUEST['backurl']) && $_REQUEST['backurl']) ? $_REQUEST['backurl'] : "")
                ]
            ); ?>
            <?
        }
        ?>
        <?
        // Для модуля - https://marketplace.1c-bitrix.ru/solutions/bxmaker.authid/
        // подключение компонента модуля входа по ID
        if (\Bitrix\Main\Loader::includeModule('bxmaker.authid')
            && \BXmaker\AuthID\Manager::getInstance()->option()->isEnabled()) {
            ?>

            <div style="">
                <?
                $APPLICATION->IncludeComponent(
                    'bxmaker:authid.area',
                    '',
                    [
                        'SHOW_LINE' => 'Y'
                    ]
                )
                ?>

            </div>
            <?
        }
        // конец подключения компонента модуля входа по ID
        ?>
        <!-- доп стили для лучшего отображения компонента модуля входа по ID -->
        <style>

            .popup #wrap_ajax_auth .bxmaker-authid-area {
                margin-top: -16px;
            }

            .popup #wrap_ajax_auth .bxmaker-authid-area__list {
                padding: 0 32px;
            }

        </style>


    </div>
<?
elseif (strlen($_REQUEST['backurl'])): ?>
    <script>location.href = <?
        var_export($_REQUEST['backurl']) ?></script>
<?
else: ?>
    <?
    if (
        strpos($_SERVER['HTTP_REFERER'], $url) === false &&
        strpos($_SERVER['HTTP_REFERER'], SITE_DIR . 'ajax/form.php') === false
    ): ?>
        <?
        $APPLICATION->ShowHead(); ?>
        <script>
            jsAjaxUtil.ShowLocalWaitWindow('id', 'wrap_ajax_auth', true);
            BX.reload(false)
        </script>
    <?
    else: ?>
        <script>location.href = <?
            var_export($url) ?></script>
    <?
    endif; ?>
<?
endif; ?>

Результат

В итоге получиться примерно так

2025-05-23_21-21.jpg

Мобильная версия

В мобильной версии авторизация находится не в popup окне а на отдельной странице /auth/, на которой выводится комопнент решения Аспро.

Скопируйте файл /auth/index.php и наховите index.ori.php. Затем в скопируйте в первый файл код ниже

<?
//23.05.2025
// содержимое файла /ajax/auth.php
<?
// содержимое файла /ajax/auth.php

require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");
$APPLICATION->SetTitle("Авторизация"); ?>

<?

$bSkip = false;

//подклчюаем модуль
if (\Bitrix\Main\Loader::includeModule('bxmaker.authuserphone')) {

    $oManager = \BXmaker\AuthUserPhone\Manager::getInstance();

    //если модуль для текущего сайта включен
    if ($oManager->isEnabled()) {

        global $APPLICATION;
        $APPLICATION->SetPageProperty('TITLE_CLASS', 'center');
        $APPLICATION->SetPageProperty('MENU', 'N');


        $bSkip = true;

        ?>
        <div style="text-align: center;"><?


            $APPLICATION->IncludeComponent(
                $oManager->param()->getDefaultComponent(),
                '',
                [
                    'COMPOSITE_FRAME_MODE' => 'N',
                    'RAND_STRING' => 'page'
                ]
            );

            // стили чтобы попап окно было соразмерно контенту компонента
            ?>
        </div>

        <style>
            .bxmaker-authuserphone-simple,
            .bxmaker-authuserphone-enter {
                box-shadow: none;
            }

            .page-top-info {
                display: none;
            }
        </style>
        <?
        /* https://bxmaker.ru/doc/authuserphone/how/avtorizatsiya-cherez-sotsseti/ */

         if(file_exists(\Bitrix\Main\Application::getDocumentRoot().'/ajax/auth_socserv.php'))
                    {
						include \Bitrix\Main\Application::getDocumentRoot().'/ajax/auth_socserv.php';
                    }

    }
}

// если модуль для текущего сайта не включен или вообще не установлен, показываем исходный вариант
if (!$bSkip) {
    ?>

    <?
    $APPLICATION->IncludeComponent("aspro:auth.premier", "", [
        "SEF_MODE" => "Y",
        "SEF_FOLDER" => "/auth/",
        "SEF_URL_TEMPLATES" => [
            "auth" => "",
            "registration" => "registration/",
            "forgot" => "forgot-password/",
            "change" => "change-password/",
            "confirm" => "confirm-password/",
            "confirm_registration" => "confirm-registration/",
        ],
        "PERSONAL" => "/personal/"
    ],
        false
    ); ?>
    <?
}
?>

<?
// Для модуля - https://marketplace.1c-bitrix.ru/solutions/bxmaker.authid/
// подключение компонента модуля входа по ID
if (\Bitrix\Main\Loader::includeModule('bxmaker.authid')
    && \BXmaker\AuthID\Manager::getInstance()->option()->isEnabled()) {
    ?>

    <div style="">
        <?
        $APPLICATION->IncludeComponent(
            'bxmaker:authid.area',
            '',
            [
                'SHOW_LINE' => 'Y',
                'RAND_STRING' => 'AUTH_PAGE'
            ]
        )
        ?>
    </div>

    <!-- доп стили для лучшего отображения компонента модуля входа по ID -->
    <style>

        .popup #wrap_ajax_auth .bxmaker-authid-area {
            margin-top: -16px;
        }

        .popup #wrap_ajax_auth .bxmaker-authid-area__list {
            padding: 0 32px;
        }

    </style>

    <?
}
// конец подключения компонента модуля входа по ID
?>


<?
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php"); ?>



Результат для /auth/

В итоге получиться примерно так 2025-05-23_21-20.jpg