1С Битрикс — Как использовать email вместо логина?

Как при регистрации использовать email вместо логина, чтобы в дальнейшем не возникло проблем с правами и группами пользователей?
Нашел вот 9 летнюю статью, это еще актуально или сейчас можно как то иначе сделать?
Компонент: настраиваемая регистрация.
  • Вопрос задан
  • 2674 просмотра
Пригласить эксперта
Ответы на вопрос 1
romapad
@romapad
веб-дизайн фрилансер
Мне помогло добавление вот этот код в init.php:
AddEventHandler("main", "OnBeforeUserLogin", array("CCustomHookEvent", "DoBeforeUserLoginHandler"));
class CCustomHookEvent {
        //  Проверяем пришел ли email или login и если email авторизуем по нему
        function DoBeforeUserLoginHandler( &$arFields )
        {
            $userLogin = $_POST["USER_LOGIN"];
            if (isset($userLogin))
            {
                $isEmail = strpos($userLogin,"@");
                if ($isEmail>0)
                {
                    $arFilter = Array("EMAIL"=>$userLogin);
                    $rsUsers = CUser::GetList(($by="id"), ($order="desc"), $arFilter);
                    if($res = $rsUsers->Fetch())
                    {
                        if($res["EMAIL"]==$arFields["LOGIN"])
                            $arFields["LOGIN"] = $res["LOGIN"];
                    }
                }
            }
        }
        // End 
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы