По аналогии с предыдущим примером авторизуем пользователя либо по логину, либо по e-mail
[CODE]AddEventHandler("main", "OnAfterUserLogin", Array("MyClass", "OnAfterUserLoginHandler"));
class MyClass
{
function OnAfterUserLoginHandler(&$arFields)
{
if($arFields['USER_ID']<=0)
{
$_SESSION["AUTHORIZE_FAILURE_COUNTER"]++;
if($rsUser=CUser::GetList($by="ID", $order="DESC", Array("EMAIL"=> $arFields["LOGIN"]), Array("SELECT"=>array("ID","PASSWORD"))))
if($arUser=$rsUser->Fetch()){
$user = new CUser;
$arRes = $user->Login($arUser['LOGIN'], $arFields["PASSWORD"], $arFields["REMEMBER"]);
if($_SESSION["AUTHORIZE_FAILURE_COUNTER"] >=2){
$arFields['RESULT_MESSAGE'] = array("TYPE" => "ERROR", "MESSAGE" => "Неверный e-mail или пароль");
unset($_SESSION["AUTHORIZE_FAILURE_COUNTER"]);
}
else {$arFields['RESULT_MESSAGE'] = array("TYPE" => "OK", "MESSAGE" => "");
unset($_SESSION["AUTHORIZE_FAILURE_COUNTER"]);
}
}
else $arFields['RESULT_MESSAGE'] = array("TYPE" => "ERROR", "MESSAGE" => "Неверный логин или пароль");
}
}
}[/CODE]
*************
[B]комментарий от разработчика[/B]:
[QUOTE]Пример не совсем корректный, но для разнообразия можно с ним ознакомиться.[/QUOTE]