На мой взгляд, это и новый виток в войне с ботами и предвестник авторизации в будущем.
Сегодня практически у каждого есть сотовый телефон, а в будущем это будет какой то персональный гаджет, заменяющий паспорт, банковскую карту, ключ и все остальные архаизмы идентификации — такое электронное удостоверение личности, которое позволяет и звонки принимать и покупки совершать и много ещё чего делать, попутно подтверждая, что вы — это вы. Возможно, придумают более надежные способы био-идентификации, и гаджет не будет даже хранить каких то ключевых элементов, т.е. гаджет не будет персонализирован, и с ним работать сможет любой человек, идентифицируясь в процессе работы.
А пока не пришло это замечательное время (когда у каждого в голове при рождении зашивают микрочип) мы попробуем добавить в drupal подтверждение авторизации по СМС.
Изначально в Drupal есть подтверждение регистрации по e-mail, когда случайно сгенерированный пароль отправляется по e-mail. Т.е. чтобы получить пароль для входа, надо указать действующий e-mail. Автоматизировать регистрацию при этом не сложно, чем пользуются наши друзья спамеры, т.к. зарегистрировать новый домен и тут же повесить на этот домен почтовый сервер, залить нужный софт по обработке почты — все это можно делать сейчас не слезая с дивана и даже не показывая паспорта.
Нам понадобится СМС-шлюз, в роли которого будет выступать — epochta.ru. Т.е. все что касается отправки СМС будет сделано на API этого сервиса. Друпал у нас будет версии 6, но для других версий коренным образом отличаться ничего не будет. Опять же слезать с дивана и показывать спамеру паспорт не потребуется, но автоматизировать процесс регистрации будет сложнее. И, главное, мы получим валидный номер сотового телефона, на который и новости сайта можно разослать (корпоративную рекламу) и восстановление пароля привязать к нему (дальше фантазируйте сами)…
Алгоритм
Алгоритм следующий — человек вводит анкетные данные как обычно на странице /user/register, а далее ему выводится сообщение — что мол, инструкции по активации высланы на почту. В настройках пользователя /admin/user/settings выбран режим — «Посетители могут создавать учетные записи, разрешение администратора не требуется.» и установлен флажок «Требуется подтверждение по электронной почте, когда посетитель создает учетную запись».
Учетная запись создается не активной (деактивируется сразу после создания), а в письме сообщается, что для активации требуется ввести код отправленный в СМС по указанному в форме регистрации номеру сотового телефона. Для создания поля используем штатный модуль profile, где настраиваем поле profile_tel.
Тут важно, чтобы поле отображалось в форме регистрации и было обязательно для ввода.
Страница с формой активации (у нас она будет по адресу /user/confirmation) содержит всего два поля — e-mail и код активации. При вводе верной пары значений учетная запись активируется, пользователь может ввести свои реквизиты (высланные ранее в письме) для авторизации на сайте.
Код на PHP для Drupal
Встраиваем следующие кусочки кода в существующий или новый модуль. У меня модуль назывался SMS.
1. Новые разделы сайта
Здесь я добавил пару страниц — на первой user/registration-successfull будет показано сообщение об успешной регистрации, на второй user/confirmation — форма для ввода кода подтверждения.
2. Модификация обработки формы регистрации
Здесь надо добавить проверку поля с телефоном (верный ли синтаксис). А при отправке данных выполнить отправку СМС и переход на стр. с сообщением об успешной регистрации.
Надо несколько слов сказать о сервисе EPochta.ru. Понятно, что для отправки СМС надо там зарегистрироваться, и отправка сообщений — услуга платная :). Вот полезные ссылки —
- описание протоколов обмена данными (если охота узнать чуть больше).
- пример использования на PHP и ссылки для скачивания PHP классов для работы с Epochta (как раз то что мы подключали в листинге выше через require_once $base . ‘….’)
После создания учетной записи, нужно будет настроить аккаунт для работы: сгенерировать публичный и приватный ключ (ВАШ_ОТКРЫТЫЙ_КЛЮЧ, ВАШ_ЗАКРЫТЫЙ_КЛЮЧ в листинге), поставить галочку «Активировать API 3.0». Файлы классов работы с epochta разместить в одноименной подпапке вашего модуля.
Есть у сервиса и тестовый режим, когда СМС не отправляется, но показаны соответствующие данные в статистике (что мол принято сообщение успешно) — чтобы деньги зря на тесты не тратить.
Будут вопросы — будут и ответы. Пишите в комменты к статье.
Привет
К 7 друпалу тоже было бы не плохо инструкцию добавить.