Bitrix: Авторизация по E-mail

Алгоритм внутри CMS Bitrix, который позволяет авторизовываться с помощью email (электронной почты).
Добавляем в init.php следующее:

AddEventHandler("main", "OnBeforeUserLogin", Array("CUserEx", "OnBeforeUserLogin"));
AddEventHandler("main", "OnBeforeUserRegister", Array("CUserEx", "OnBeforeUserRegister"));
AddEventHandler("main", "OnBeforeUserRegister", Array("CUserEx", "OnBeforeUserUpdate"));
class CUserEx
{
   function OnBeforeUserLogin($arFields)
   {
      $filter = Array("EMAIL" => $arFields["LOGIN"]);
      $rsUsers = CUser::GetList(($by="LAST_NAME"), ($order="asc"), $filter);
      if($user = $rsUsers->GetNext())
         $arFields["LOGIN"] = $user["LOGIN"];
      /*else $arFields["LOGIN"] = "";*/
   }
   function OnBeforeUserRegister($arFields)
   {
      $arFields["LOGIN"] = $arFields["EMAIL"];
   }
}
Далее, сделайте в шаблоне регистрации и авторизации тип поля "логин" - hidden.
Данную строчку...

$arFields["LOGIN"] = $arFields["EMAIL"];
...можно заменить на любой алгоритм составление логина, например какая-то часть емайла до @.

$arr = explode("@",$arFields["EMAIL"]);
$arFields["LOGIN"] = $arr[0];
Чтобы запретить авторизацию под старыми логинами, закомментируйте:

/*else $arFields["LOGIN"] = "";*/
закрыть

Отправить заявку

Если что-то пошло не так, или Вы в чем-то не уверены. Например в смысле собственной жизни. Просто нажмите на логотип сайта и повторите попытку. Удачи!