Авторизация через sms: модуль для 1с-битрикс
- Подходящие редакции 1С-Битрикс:
Старт, Стандарт, Малый бизнес, Бизнес - Включает в себя:
Компоненты, Модуль - Категории:
Авторизация, пользователи, Для разработчиков, Инструменты, Интеграция, SMS-шлюзы
XXI век, пользуемся всеми возможностями!
Модуль добавляет возможность авторизоваться на сайте через SMS-пароль.
Особенности модуля:
- Работает только в кодировке UTF-8
- Быстрая авторизация через SMS;
- Настройка длины пароля;
- Выбор поля с номером телефона;
- Соль – позволяет сделать алгоритм генерации кода уникальным для каждого сайта;
- Время жизни пароля;
- Настройка текста SMS;
- Выбор SMS-провайдера, более 10 провайдеров
Список поддерживаемых SMS-провайдеров
События модуля
OnAfterRegisterConfirm ( int $user_id ) – срабатывает после подтверждения регистрации;
OnNormalizePhone ( string $original, string &$normalized ) – срабатывает при нормализации номера телефона. Можно изменить нормализацию телефона;
OnGetPhoneFieldList ( array &$fields ) – срабатывает при составлении списка полей для записи телефона;
OnGetUserRegisterFields( array &$fields ) – срабатывает при составлении списка полей для регистрации;
OnGetProviderList ( array &$providers ) – срабатывает при составлении списка провайдеров;
OnSendSMS ( array &$fields, Provider $provider ) – срабатывает перед отправкой СМС
OnAfterSendSMS ( bool $success, array $fields, Provider $provider ) – срабатывает после отправки СМС
Добавление смс-сервиса
Если вы хотите добавить собственный СМС-сервис, для начала необходимо создать класс СМС-сервиса, который будет наследовать класс BitrixMessageServiceSenderBase, с обязательными методами:
getShortName(): string
— Сокращенное наименование сервиса (например, домен)getId(): string
— Символьный код сервисаgetName(): string
— Полное наименование сервиса (будет выводиться во всех списках)canUse(): boolean
— Еслиfalse
– сервис не будет выводитьсяgetFromList(): array
— Список подтвержденных имен отправителяsendMessage(): BitrixMessageServiceSenderResultSendMessage
— Отправка сообщения
Примерный код базового СМС-сервиса:
Можно ли сделать авторизацию по номеру телефона?
Отправка сообщения
Для того, чтобы отправить сообщение с СМС кодом подтверждения регистрации, выполним следующий код:
Подтверждение номера телефона
Для того, чтобы проверить введенный код:
Тогда руками пилить (компонент system.auth.authorize)
1. В классе CUser есть 2 метода
2. В шаблоне добавляешь input для телефона в стандартную форму авторизации и оборачиваешь в if
3. Добавляешь в шаблон блок для ввода кода из смс
4. Добавляешь обработчик, например в result_modifier (обработчик писал без проверки):
Вроде так, но могут быть ошибки, если что пиши))