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

Распространение сотовой связи сделало уместным идентификацию пользователя по номеру телефона. Этот номер стал на ряду с логином и адресом электронной почты одним из уникальных параметров в профиле. Большинство социальных сетей позволяют не только привязать номер телефона к учетной записи, но и использовать его как пару логин-пароль при входе в аккаунт.

Далее я покажу как сделать авторизацию по номеру телефона в Drupal (версии 7).

Я уже рассказывал как сделать авторизацию по email в drupal. Подход ничуть не изменился.

Телефон не является дефолтным параметром учетки, поэтому соответствующее поле нужно добавить. Шагаем на страницу /admin/config/people/accounts/fields, где добавляем поле для ввода телефона.

account-settings

Я показываю создание поля с той целью, чтобы потом не пояснять структуру запроса к базе, т.к. имя поля определяет имя таблицы в базе — у нас это будет таблица field_data_field_tel.

Когда поле создано, его значение можно задать на странице профиля.

account-edit

Структура готова, напишем код, использующий для авторизации номер телефона. Кроме номера телефона, пусть будет возможна авторизация и по email, как было в примере, на который я ссылался выше. Но сейчас код будет адаптирован для Drupal 7.

Этот код не обернут в какую либо функцию, он размещается в любом вашем модуле. Цель — вычислить до обработки данных формы авторизации имя пользователя по введенному телефону или адресу электронной почты.

Этот вариант вполне будет работать, и его можно применять в каких то проектах. Но он имеет ряд проблем.

Нормализация номера телефона

Первое, с чем можно столкнуться, это правила написания номера телефона. Его можно записывать по разному, с пробелами и скобками, начиная с «+7» или «8», использовать дефисы и т.п. Пользователь в итоге может забыть, как он ввел номер в своем профиле. Ему не удастся войти, хоть он и укажет свой номер телефона, т.к. строка в базе не будет соответствовать введенному значению.

Вторая задача, также связанная с необходимостью нормализации номера, — это требование уникальности номера, связанного с учетной записью. Т.е. при вводе телефона, вы должны убедиться, что этот номер телефона не используется в других учетных записях.

Выход состоит в том, чтобы хранить наряду с произвольным текстовым видом, служебное поле с нормализованным видом номера.

Вот какой может быть логика получения нормализованного номера телефона.

Как и где сохранять нормализованное представление решать уже вам.

Мало букафф? Читайте есчо !

Drupal 9 за БН amazon cloudfront

Октябрь 12, 2021 г.

Типичная проблема сайта, когда тот оказывается за балансировщиком нагрузки (load balancer), это несоответствие части заголовков запроса клиента и тех заголовков, которые передаются балансировщиком серверу. Чаще всего мы сталкиваемся с этим при запуске ...

Читать

Программный рендер меню в Drupal 9

Сентябрь 8, 2021 г.

Продолжаю публиковать сниппеты кода для drupal 9, на этот раз несколько полезных вещей, связанных с рендерингом меню. Рендер меню по известному id меню Вы знаете идентификатор, вам нужен рендер: [crayon-6ade98b59a6ae620952724/] Рендер ...

Читать

Добавление режимов просмотра для node в Drupal 7

Январь 27, 2018 г.

Разные типы node view предназначены для темизации публикаций. Но drupal не даёт задавать новые представления из панели администрирования. Рассмотрим как создавать их программно. Чтобы в типах отображения публикации появилась новая (-ые) вкладки, ...

Читать

Программно устанавливаем значения настроек на страницах, созданных Config Pages

Ноябрь 22, 2018 г.

Модуль Config Pages позволяет создавать страницы конфигурации для вашего модуля, всего сайта, или может быть просто одного из разделов сайта. Потом эти значения можно читать из программы и использовать так, как вам требуется. Но API Config Pages не содержит ...

Читать
 

Комментарии к «Авторизация по номеру телефона в Drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: