Единое поле «Логин / Email / Телефон» в 1С-Битрикс

Внимание! Раздел находится в стадии разработки. Комментарии временно недоступны
Страницы: 1
RSS
Единое поле «Логин / Email / Телефон» в 1С-Битрикс
Единое поле «Логин / Email / Телефон» в 1С-Битрикс: полноценное руководство с рабочими примерами

Единое поле авторизации — это удобный UX-паттерн: пользователь вводит одну строку (логин, email или телефон), а система сама определяет тип и авторизует. Ниже — цельное, «боевое» решение для Битрикс: Управление сайтом / Битрикс24 коробка с акцентом на правильные фильтры, безопасность и обслуживание.
Пример обработчика события для автоматического определения логина по email или телефону, который можно добавить в bitrix/php_interface/init.php:

Код
<?php

use Bitrix\Main\EventManager;
use Bitrix\Main\UserTable;
use Bitrix\Main\Context;

EventManager::getInstance()->addEventHandler('main', 'OnBeforeUserLogin', function (&$arFields) {
    $input = trim($arFields['LOGIN'] ?? '');
    if (empty($input) || strlen($input) > 255) return;

    // Проверяем, не является ли ввод уже валидным логином
    $userByLogin = UserTable::query()
        ->setSelect(['ID', 'LOGIN'])
        ->where('LOGIN', $input)
        ->where('ACTIVE', 'Y')
        ->fetch();

    if ($userByLogin) return;

    // Поиск по email
    if (filter_var($input, FILTER_VALIDATE_EMAIL)) {
        $user = UserTable::query()
            ->setSelect(['LOGIN'])
            ->where('EMAIL', $input)
            ->where('ACTIVE', 'Y')
            ->fetch();

        if ($user) {
            $arFields['LOGIN'] = $user['LOGIN'];
            return;
        }
    }

    // Нормализация и поиск по телефону
    $phone = normalizePhone($input);
    if ($phone) {
        $searchFields = ['PERSONAL_MOBILE', 'PERSONAL_PHONE'];
        
        foreach ($searchFields as $field) {
            $user = UserTable::query()
                ->setSelect(['LOGIN'])
                ->where($field, $phone)
                ->where('ACTIVE', 'Y')
                ->fetch();

            if ($user) {
                $arFields['LOGIN'] = $user['LOGIN'];
                return;
            }
        }
    }
});

// Функция нормализации телефона
function normalizePhone($rawPhone) {
    $digits = preg_replace('/\D/', '', $rawPhone);
    
    if (strlen($digits) === 10) {
        return '+7' . $digits;
    } elseif (strlen($digits) === 11 && $digits[0] === '8') {
        return '+7' . substr($digits, 1);
    } elseif (strlen($digits) === 11 && $digits[0] === '7') {
        return '+' . $digits;
    }
    
    return null;
}

Он автоматически определяет логин пользователя по введенному email или телефону при авторизации через стандартные формы Битрикс.
Страницы: 1

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Разработка интернет-магазина с готовой версткой

от 4 недель

от 90 000 рублей

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.

Техническая поддержка

выполняется с сайтами на основе любых CMS

от 5 000 рублей
Оптимизация производительности действующих интернет-проектов, наполнение и сопровождение, полная техническая поддержка и продвижение в поисковых сетях.

* стоимость зависит от объема и сложности выполняемых работ, используемой CMS.

Перенос сайтов на «1С-Битрикс»

сайты на платформе «1С-Битрикс» — это удобство, надежность и высокая посещаемость

от 12 000 рублей
Перенос сайтов с любых CMS и статичных страниц на платформу «1С-Битрикс», с учетом дизайна, верстки и урл-адресов. С сохранением всей информации и структуры сайта.

* зависит от объема выполняемых работ.