Bitrix авторизация Email вместо логина

2 марта 2022 г.

Для того, что бы можно было авторизоваться по email, необходимо пользователю зарегистрировался так, что бы в поле логина попал email.

За регистрацию отвечает компонент bitrix:main.register и, для начала, перенесем его в свое пространство имен, для того, что бы наши изменения не «перезатерлись» при обновлении системы. Допустим, новый путь будет такой: /bitrix/components/myroot/main.register.

Редактируем главный файл компонента: bitrix/components/myroot/main.register/component.php Находим массив $arDefaultFields - примерно 56я строка:

$arDefaultFields = array(
 "LOGIN", // меняем на EMAIL
);

Далее нужно, в том числе и для авторизации, что бы в поле «логин» попадал Email, введенный из формы. Для этого используем событие OnBeforeUserRegister и OnBeforeUserUpdate, определяем их в файле init.php

AddEventHandler("main", "OnBeforeUserRegister", "OnBeforeUserUpdateHandler");
AddEventHandler("main", "OnBeforeUserUpdate", "OnBeforeUserUpdateHandler");
function OnBeforeUserUpdateHandler(&$arFields)
{
        $arFields["LOGIN"] = $arFields["EMAIL"];
        return $arFields;
}

Осталось только поменять языковые константы, если это требуется в формах авторизации и регистрации, с логина на email.

Комментарии(0)