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

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

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

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

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

<?
// содержимое файла /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(__DIR__ . '/auth_socserv.php')) {
                    include __DIR__ . '/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; ?>

Результат

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

2024-09-21_12-16.jpg

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

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

Скопируйте файл /auth/index.php и наховите index.ori.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(__DIR__ . '/auth_socserv.php')) {
            include __DIR__ . '/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/

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

2024-09-21_12-20.jpg