Модуль регистрации и авторизации посетителей

Модуль регистрации и обновления данных пользователя – mod_profile.

Данный модуль является частью системы управления сайтом InlifeCMS и предназначен для регистрации пользователей на сайте. Если пользователь уже авторизован на сайте, то при заходе на страницу модуля у пользователя есть возможность обновить свои данные.
У модуля mod_profile есть два режима работы:

  • если пользователь не зарегистрирован, т.е. его идентификатор id=2, модуль mod_profile пытается произвести первичную регистрацию;

Первичная регистрация

  • если идентификатор пользователя id не равен двум, т.е. пользователь авторизован на сайте, то выводится форма для обновления текущих данных пользователя. Берутся текущие данные пользователя, и заполняется форма для обновления данных.

Основные поля для формы ввода данных о пользователе:

  • ФИО (name);
  • Страна (country);
  • Город (city);
  • Адрес электронной почты пользователя (email),
  • Адрес почтовый (address),
  • Телефон (phone),
  • Часовой пояс (local_tz),
  • Дата рождения (birth_date).

Страна и город устанавливаются с помощью работы плагина select_location модуля mod_location_manager. Далее идет блок дополнительной информации – это список дополнительных полей, которые установлены (настроены) для пользователя в системе.
Есть возможность загрузить фото пользователя. Пользователь может ввести логин, а также задать для себя пароль.
При регистрации нового пользователя есть 2 режима: режим полной регистрации и режим быстрой регистрации, который включает в себя ввод первоначальных данных, таких как email, имя, телефон.
Настройки модуля производятся в двух местах: файл настройки сайта (etc/engine.ini), которые могут быть перенесены из настроечного файла модуля module.ini в настроечный файл текущего сайта (engine.ini) или в интерфейсе команды «Настройки» экземпляра модуля на сайте.

Настройки в настроечном файле:

  • mode - режим работы по умолчанию, - режим, который мы описывали. Если установлен в register, то модуль mod_profile будет работать только в режиме регистрации, даже если идентификатор пользователя не будет равен 2, все равно система будет регистрировать нового пользователя. Если update- модуль работает в режиме обновления данных. both – оба режима – т.е. если идентификатор пользователя равен 2 (неавторизованный пользователь), то модуль регистрирует пользователя, если не равен 2 (авторизованный пользователь), то режим обновления данных пользователя.
  • notify_admin – уведомлять администратора группы при регистрации нового пользователя в группу пользователей.
  • group - наименование группы, в которую по умолчанию зарегистрированы пользователи, членом которой становятся пользователи при регистрации.
  • activated, равно true или false – настройка, которая разрешает модулю активировать пользователя сразу после регистрации. Если true, то пользователь сразу активируется после регистрации. Если false, то после регистрации пользователя ему выводится сообщение о том, что его текущая запись не активна. В зависимости от настройки активации через email пользователю далее говорится, что он получил сообщение на email. Пользователь должен перейти по ссылке активации, которая содержится в сообщении. Если нет активации через email, то выводится сообщение, что учетная запись пользователя, будет активирована позднее администратором.
  • required_fields – обязательные поля, необходимые для регистрации. На некоторых сайтах техническое задание требует обязательно заполнить, например, email, который может служить в качестве логина, т.к., например, происходит механизм активации пользователя через email. А на других сайтах, например, имя и телефон требуется. Здесь можно перечислить поля пользователя в качестве требуемых, например, name, e-mail, phone.
  • allow_photo (yes или no) – этот флажок говорит о том, показывать ли интерфейс ввода фотографии при регистрации или нет. Если сайт обязательно требует фотографию, то allow_photo присутствует.
  • photo_params – параметры фотографии. Значение данного параметра – это 3 числа, разделенные буквой x. Первая часть – максимальная ширина фотографии в пикселах, вторая часть – максимальная высота фотографии в пикселах, третья часть – максимальный размер файла фотографии в байтах. Например, 500x500x1024000 - максимально по ширине 500 пикселей, по высоте 500 пикселей и максимальный размер фотографии не может превышать 1 Мб.
  • use_confirm (yes или no). Говорит о том, нужно ли включать при регистрации captcha. Captcha – это защита от автоматического ввода. Чтобы злоумышленники с помощью вредоносных программ не зарегистрировали за 1 час 3 млн. пользователей, и нарушили работоспособность сайта, нужно защищаться. Дополнительно к регистрационным данным пользователь вводит код, который изображается на картинке. Если введенный код совпадает с кодом на картинке, то продолжаем регистрацию, если нет - говорим об ошибке.
  • aflist_open (yes или no) - должен ли изначально быть открыт блок дополнительной информации, т.е. списка дополнительных полей пользователя.
  • log_errors (по-умолчанию no) – флажок, который позволяет сохранять в файл ошибки регистрации, чтобы видеть какую вредоносную вещь могут производить некоторые пользователи.
  • login_mask = маска логина, строка, которая является маской регулярного выражения, она вставляется в функцию preg_match для проверки логина. Если будут введены недопустимые символы, система не даст зарегистрировать клиента. По-умолчанию "/^[A-z][A-z0-9\@\_\-\.]{2,}\z/".
  • use_email_as_login (по-умолчанию no) - использовать ли в качестве логина адреса электронной почты. Чаще пользователь помнит свой мэйл, а не логин, с которым он регистрировался на сайте. При регистрации мы используем email, не спрашивая другой логин. При регистрации, информация о том, что его логин совпадает с email придет на адрес электронной почты.
  • generate_password - флаг, принимающий значение yes или no, который позволяет модулю регистрации генерировать пароль автоматически, т.е. чтобы не утруждать пользователя дополнительнo паролем, его подтверждением, мы можем поставить флажок, и при регистрации система не будет просить поля ввода и подтверждения пароля, а на email придет уведомление о регистрации на сайте (логин и пароль). Пользователю нужно будет сохранить это письмо для того, чтобы запомнить логин и пароль. Либо, после авторизации перейти в этот модуль и заменить пароль на более удобный.

Настройки, которые привязываются к экземпляру ресурсов mod_profile.

На сайте можно организовать неограниченное количество страниц регистраций. Например, завод производит товары. Он может продавать потом их в розницу или оптовикам. Для того, чтобы оптовик получал товар по оптовым ценам, товар должен быть членом группы «Опт». Открываем две группы пользователей (розница и опт) и открываем два экземпляра модуля mod_profile. В тексте сайта даем пользователю две ссылки на регистрацию розничного покупателя либо оптового. Пользователь переходит на разные экземпляры модуля mod_profile.

Настройка модуля

Настройка модуля

Некоторые настройки пересекаются с настройками из файла module.ini, но они перекрывают настройки, которые хранятся в файле engine.ini:

  • Режим работы: регистрация, профиль или смешанный.
  • Добавлять пользователя в группу – членами какой группы станут пользователи при регистрации на сайте на этом экземпляре модуля mod_profile.
  • Активировать аккаунт после регистрации. Иногда регистрация не требует каких-то проверок. Пользователю достаточно зарегистрироваться и сразу выполнять какое-то действие. Для этого и служит этот флажок. Если флаг не установлен, то после регистрации у пользователя появится сообщение, что его учетная запись заблокирована, и модуль ему предложит, в зависимости от настроек, либо перейти на свой получить письмо о регистрации на свой почтовый ящик, и из письма кликнуть ссылку активации, либо пользователю модуль сообщит, что его учетная запись проверяется и будет активирована администратором сайта.
  • Разрешить пользователю активацию через email. Если стоит этот флажок и снят флажок активации пользователя после регистрации, то после успешной регистрации пользователю на его почтовый ящик придет письмо, в котором система будет предлагать пользователю перейти по определенной ссылке для активации пользователя на сайте. Только получив письмо на свой email, пользователь из письма может кликнуть по ссылке и активировать себя. Эта ссылка содержит ключ md5. Это нужно для того, чтобы убедиться в правильности введенного пользователем адреса электронной почты (email).
  • Флаг использовать защиту от ботов при регистрации. Это наличие или отсутствие captcha в форме регистрации.
  • Флаг генерировать случайный пароль при регистрации. Если этот флажок установлен, модуль mod_profile не выводит поля пароля и подтверждения пароля, а генерирует его автоматически случайным образом. Чаще это небольшое количество символов.
  • Обязательные поля при регистрации. Через запятую указаны обязательные поля (должны быть непустыми) для регистрации пользователя на сайте. Можно ввести список полей через запятую, например, имя, email, телефон. Таким образом, пользователь не сможет зарегистрироваться на сайте, пока не введен информацию в обязательные поля.
  • Флаг уведомлять администратора сайта. Если он установлен, то при регистрации нового пользователя, администратору сайта приходит email о том, что зарегистрирован новый пользователь на сайте. Часто бывает, если флажок активации после регистрации на сайте снят, а флаг активации пользователя через email не установлен, то пользователь может получить доступ на сайт только в единственном случае, когда администратор зайдет в модуль mod_accountman_pro на сайте и сам активирует пользователя. Поэтому, администратору не надо сидеть за компьютером на сайте и нажимать F5 (освежить страницу в браузере), чтобы увидеть новых пользователей, ему достаточно проверять свой почтовый ящик.
  • Флаг использовать email как логин. При установленном этом флаге модуль регистрации не выводит поле логина для ввода, а использует email в качестве логина, который указывает посетитель при регистрации. В большинстве случаев это удобно для пользователей, так как чаще люди помнят свой email нежели логин на каком-то сайте.
  • Флажок разрешить пользователям удалять себя. Пользователю при установлении этого флага, при заходе на страницу этого модуля, будет предлагаться ссылка по удалению себя. Когда пользователь удаляет сам себя, генерируется событие о том, что пользователь удален из системы, и модули, которые используют информацию о пользователе, должны позаботиться о том, чтобы либо деактивировать его у себя, либо удалить информацию о пользователе в своих таблицах базы данных.
  • Разрешить подписку на группы рассылок. Модуль mod_profile использует модуль рассылок mod_mlist и выводит списки рассылок, куда можно предлагать зарегистрироваться пользователю при регистрации на сайте, т.е. мы можем открыть два списка рассылки (новости сайта и новости фирмы), и при регистрации предлагать пользователю подписаться на эти списки рассылок, т.е. за одну операцию регистрации пользователя, проводится дополнительно операция на подписку пользователя на рассылки с сайта.

 

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

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

Если флажок – разрешить пользователю активацию через email не стоит, то пользователю выводится сообщение, что он успешно зарегистрировался и нужно подождать пока администратор сайта проверит его учетные данные. Как только это будет сделано, администратор заходит в модуль mod_account_manager и вручную активирует данного пользователя.

После того, как пользователь зарегистрировался, если стоит флажок "уведомлять администратора сайта", то администратору приходит email, что на сайт добавлен новый пользователь. Некоторые флаги, которые позволяют влиять на сам процесс регистрации, а именно использовать защиту от ботов при регистрации это вывод captcha, защиты от автоматического ввода. Генерировать случайный пароль при регистрации, если такой флажок установлен, то в форме регистрации пользователь свой пароль не указывает, ему на электронную почту после регистрации приходит сообщение, где ему сообщается логин и пароль, под которыми он зарегистрирован на сайте.

 

Данные о пользователе и взаимодействие с другими модулями InlifeCMS.

Сам модуль mod_profile не использует никаких своих таблиц в базе данных, он обращается к таблицам, которые относятся к пользователю (см. описание пользователя в InlifeCMS), посредством API account_manager. Также API account_manager заботится и об отправке сообщений администратору группы пользователей, членом которой становится пользователь.

С модулем рассылки mod_mlist модуль mod_profile взаимодействует через API модуля mod_mlist.

Модуль mod_profile сам является функционально законченным модулем. У него очень мощный API регистрации пользователя. Поэтому много модулей используют его API для внесения функционала регистрации пользователей прямо на странице модуля. Таким образом, выполняется операция регистрации пользователя внутри стороннего модуля, без захода пользователя на страницу модуля регистрации mod_profile. Примером является использование API mod_profile для работы корзины товаров (mod_basket), когда пользователь утверждает список заказанных товаров, ему предлагается либо авторизоваться, либо пройти регистрацию. Используя настройки модуля mod_profile, не покидая страницу самой корзины товаров, можно производить регистрацию пользователя на сайте со всей функциональностью (с email-уведомлениями, настройками обязательных полей). Все это можно брать из модуля, типа mod_profile.

Плагины

У модуля mod_profile есть плагин, который называется profile_form. Этот плагин занимается выводом формы для обновления данных пользователя в любом месте сайта.