[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']; // заменим на логин пользователя } } } } |