+7 495 008 8452 пн.-пт. 10:00 – 17:00
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Авторизация на сайте по e-mail'у

Доброго времени суток!

В тех. поддержке часто поднимается вопрос об авторизации пользователей по  e-mail адресу и паролю. Штатно данный функционал не поддерживается, но задача просто решается на конкретном сайте.

Итак, приступим.
1. Перенесём компонент bitrix:main.register в своё пространство имён

Сразу уточню, что для решения этой задачи эффективнее всего именно изменение кода компонента. Обусловлено это тем, что он имеет очень много проверок и условий, обходить которые себе дороже будет, при внесении изменений в шаблон. Плюс мы получаем доступ к порядку вывода полей формы регистрации.
2. Открываем на редактирование файл /bitrix/components/demo/main.register/component.php (путь зависит от пространства имён, в котором находятся пользовательские компоненты).
3. Меняем строки:
$arDefaultFields = array(
    "LOGIN",
    "PASSWORD",
    "CONFIRM_PASSWORD",
    EMAIL",
);

на:  
    $arDefaultFields = array(
        "EMAIL",
        "PASSWORD",
        "CONFIRM_PASSWORD",
);


4. Далее мы должны для системы создавать логин из e-mail'а. Для этого надо в файл /bitrix/php_interface/init.php (если его нет, то создайте) добавить код:
AddEventHandler("main", "OnBeforeUserRegister", "OnBeforeUserUpdateHandler");
AddEventHandler("main", "OnBeforeUserUpdate", "OnBeforeUserUpdateHandler");
function OnBeforeUserUpdateHandler(&$arFields)
{
        $arFields["LOGIN"] = $arFields["EMAIL"];
        return $arFields;
}


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

и пользователи после регистрации выглядят


Теперь поправим нашу форму авторизации (bitrix:system.auth.form) на сайте, чтобы вместо логина запрашивался e-mail.
1. Кастомизируем шаблон компонента

2. Отредактируем языковой файл /bitrix/templates/.default/components/bitrix/system.auth.form/email/lang/ru/template.php
и заменим строку:
$MESS ['AUTH_LOGIN'] = "Логин";
на
$MESS ['AUTH_LOGIN'] = "E-mail";
или
$MESS ['AUTH_LOGIN'] = "Логин или e-mail";
Теперь пользователь сайта увидит что-то подобное:


Назад в раздел

Подписаться на новые материалы раздела:












CAPTCHA