Авторизация регистрация по номеру телефона в аспро максимум
Для решения Аспро Максимум
форма авторизации / регистрации подгружается по ajax. Для ее замены необходимо найти файл относительно корня сайта – /ajax/auth.php
. Сделайте его копию. В оригинальный файл вставьте код ниже.
Комопнент может быть выведен и дургой, для этого нужно взять пример кода для ajax.php
с нужным комопнентом. Примеры со всеми компонентами есть в репозитории –https://github.com/SergeySolopov/bxmaker.authuserphone
<?
// содержимое файла /ajax/auth.php
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php');
global $USER;
if ($_GET['auth_service_error']) {
LocalRedirect(SITE_DIR . 'personal/');
}
/**
* @var $component CBitrixComponent
* @var $APPLICATION CMain
*/
if (!$USER->IsAuthorized()): ?>
<script src="<?= SITE_TEMPLATE_PATH . '/js/phoneorlogin.min.js' ?>"></script>
<?
if (isset($_REQUEST['backurl']) && $_REQUEST['backurl']) {
// fix ajax url
if ($_REQUEST['backurl'] != $_SERVER['REQUEST_URI']) {
$_SERVER['QUERY_STRING'] = '';
$_SERVER['REQUEST_URI'] = $_REQUEST['backurl'];
$APPLICATION->reinitPath();
}
} ?>
<a href="#" class="close jqmClose"><?= CMax::showIconSvg('', SITE_TEMPLATE_PATH . '/images/svg/Close.svg') ?></a>
<div id="wrap_ajax_auth" class="form">
<?
$bSkip = false;
//подклчюаем модуль
if (BitrixMainLoader::includeModule('bxmaker.authuserphone')) {
$oManager = BXmakerAuthUserPhoneManager::getInstance();
//если модуль для текущего сайта включен
if ($oManager->isEnabled()) {
$bSkip = true;
// подклчюение расширения необходимого для работы компонента в публичнйо части
BitrixMainUIExtension::load('bxmaker.authuserphone.simple');
echo CJSCore::GetHTML(['bxmaker.authuserphone.simple']);
// подключение комопеннта
$APPLICATION->IncludeComponent(
'bxmaker:authuserphone.simple',
'',
[
'COMPOSITE_FRAME_MODE' => 'N'
]
);
// стили чтобы попап окно было соразмерно контенту компонента
?>
<style>
.auth_frame.popup {
width: auto;
}
#popup_iframe_wrapper {
z-index: 980 !important;
}
</style>
<?
}
}
// если модуль для текущего сайта не включен или вообще не установлен, показываем исходный вариант
if (!$bSkip) {
?>
<div class="form_head">
<h2><?= BitrixMainLocalizationLoc::getMessage('AUTHORIZE_TITLE'); ?></h2>
</div>
<?
$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'] : "")
]
);
}
?>
</div>
<?
elseif (strlen($_REQUEST['backurl'])): ?>
<?
LocalRedirect($_REQUEST['backurl']); ?>
<?
else: ?>
<?
if (strpos($_SERVER['HTTP_REFERER'], SITE_DIR . 'personal/') === 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: ?>
<?
LocalRedirect(SITE_DIR . 'personal/'); ?>
<?
endif; ?>
<?
endif; ?>
В итоге получиться примерно так
В мобильной версии авторизация находится не в popup окне а на отдельной странице /auth/
, на которой выводится комопнент решения Аспро.
Чтобы заменить его на комопнент модуля, необходимо в начало файла /auth/index.php
прописать константу для вывода авторизации
<?
define('NEED_AUTH', true);
//...
А в настройках главного модуля указываем шаблон для системных комопнентов атворизации регистрации
Регистрации и авторизации с помощью телефонного номера
Самое время обновиться и использовать новые возможности на своем проекте!
Важно! Не забудьте создать резервную копию вашего сайта. Полезные советы для владельцев модифицированного решения ждут вас в нашей базе знаний.
Заинтересовал функционал, но вы еще не приобрели решение? Протестируйте возможности прямо сейчас:
Здравствуйте! Благодарим, что так подробно описали свои пожелания. Ответим также по пунктам:
1) Благодарим вас за обратную связь! Разделять по табам, как в решении Аспро: Next, не будем. Просто поправим работу маски телефона, чтобы она не мешала вводить почту. Номер задачи — MAX-3307.
2) Функционал не добавили сразу, так как у 1C-Битрикс нет поддержки авторизации по SMS через оформление заказа. Но придумали свое решение. При клике на кнопкук регистрации будет перенаправление на нашу страницу, а после успешной регистрации возвращать на оформление заказа. Открытую форму авторизации скорее всего придется убрать, чтобы так же можно было вести на нашу страницу по клику. Номер задачи — MAX-3308.
3) В таком случае заказ будет оформлен на уже зарегистрированного пользователя, дубль создан не будет. В большинстве магазинов функционал работает так же, как в решении Аспро: Максимум. Если клиент уже ранее покупал, то логично, что можно авторизоваться, а можно снова ввести данные.
Как вариант, вы можете выключить оформление заказа без авторизации. Тогда пользователю нужно будет авторизоваться, только потом он сможет оформить заказ
4) Мы используем стандартный функционал 1С-Битрикс для отправки SMS. Поэтому ждем внедрение авторизации по звонку от платформы. Когда 1С-Битрикс добавит, функционал появится и в решениях Аспро.
Кстати, мы рассматривали настройку авторизации через SMS в видео https://clck.ru/bmmif. Надеемся, что оно будет полезно для вас. Продуктивной недели!