[spoiler]
AddEventHandler("main", "OnBeforeUserLogin", Array("MaxyssClass", "OnBeforeUserLoginHandler"));
class MaxyssClass
{
// авторизация по номеру телефона
function OnBeforeUserLoginHandler(&$arFields)
{
$rsUser = CUser::GetByLogin($arFields['LOGIN']);
if($arUser = $rsUser->Fetch()){
// ничего не делаем так как введен логин
}else{
// ищем юзера по телефону
$phone = Bitrix\Main\UserPhoneAuthTable::normalizePhoneNumber($arFields['LOGIN']); // нормализуем номер телефона
$user = \Bitrix\Main\UserPhoneAuthTable::getList($parameters = array(
'filter'=>array('PHONE_NUMBER' =>$phone, 'CONFIRMED'=>'Y') // выборка пользователя с подтвержденным номером
));
if($row = $user->fetch())
{
$rsUser = CUser::GetByID($row['USER_ID']); // найдем пользователя по ID
$arUser = $rsUser->Fetch();
$arFields['LOGIN'] = $arUser['LOGIN']; // заменим на логин пользователя
}
}
}
}
|