Авторизация пользователя по номеру телефона

В init.php напишем обработчик на событие OnBeforeUserLoginHandler (перед попыткой авторизации пользователя), который будет определять введен логин или телефон и подменять поля отправленные пользователем.

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