Функция "Регистрация по внешней базе данных"

Алексей
09.18.24
В данной статье описан уже реализованный проект. Оценка в нормо-часах указана внизу.

Суть доработки

добавляется режим регистрации (не авторизации!), в котором система позволяет зарегистрироваться не всем, а только тем, кто перечислен в определенном списке, причем, только по одному разу.

От существующего плагина авторизации по внешней БД это отличается тем, что во внешнем источнике может не быть ни пароля, ни электронной почты, а только, например, ФИО и табельный номер. Система только проверит, что пользователь есть в списке и что он еще не зарегистрировался, а остальные данные пользователь укажет сам.

Пример применения

у организации имеется электронный список сотрудников или слушателей электронных курсов. Доступ к системе должны получить только люди из этого списка. Но в этом списке отсутствует электронная почты и другие данные, необходимые для регистрации. При этом список слишком велик, чтобы регистрировать и сообщать логины/пароли лично или по телефону. С помощью инструмента "Регистрация по внешней базе данных", включается режим регистрации по "предварительному списку". Пользователь вводит известные системе данные, она проверяет наличие его в списке и допускает ко второму этапу регистрации, где он вводит свою электронную почту, логин и пароль.
Если злоумышленник воспользуется чужими данными, то настоящий пользователь уже не сможет зарегистрироваться. Он обратиться к администратору и тот вручную удалит поддельную учетную запись.

Предварительные настройки

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

Администратор в настройках плагина auth/dof выбирает тип регистрации "По предварительным спискам" и настраивает следующие опции:

  • Поля регистрации (заменяет собой опции "добавить поле повтора пароля" и "настройки полей формы регистрации")
    • В данном разделе настроек отображаются все доступные поля регистрации, включая основные и дополнительные поля профиля.
    • Администратор устанавливает для каждого поля один из режимов:
      • Режим отображения
        • Скрывать - поле не будет отображаться в форме регистрации.
        • Показать на шаге 1 - поле отобразится на шаге 1.
        • Показать на шаге 2 - поле отобразится на шаге 2. Если для шага 2 нет ни одного поля, система его пропускает.
      • Порядок отображения (вес) - чем меньше вес, тем выше поле в форме отображения.
      • Модификатор
        • Обязательное - поле, обязательное для заполнения. Только поля шага 1 и шага 2.
        • Поисковое - по данному полю будет происходить поиск записи в источнике. Регистрация возможна, только если в источнике найдется одна и только одна запись с нужным сочетанием значений. Применимо только к полю шага 1.
        • Транслируемое - поле будет скопировано напрямую из источника в аккаунт пользователя. Если применить модификатор к скрытому полю, значений не будет видно даже в html-коде страницы. Если применить модификатор к полю шага 2, будет отображено поле "только для чтения", но данные будут копироваться напрямую из источника, чтобы поле нельзя было изменить подделкой POST-запроса. К полям шага 1 не применимо. Не совместимо с "генерируемое"
        • Генерируемое - опция доступна только для отдельных полей, для которых предусмотрен алгоритм генерации. Не совместимо с "транслируемое" и "поисковое".
          • Логин - формируется уникальный логин.
          • Пароль - формирует случайный пароль и отправляет его выбранным способом пользователю.
            • Если генератор выключен, а поле пароля нет ни среди полей формы, ни среди транслируемых, то на этапе регистрации, пароль все-равно будет сгенерирован, но не будет выслан.
          • Электронная почта - формирует электронную почту вида "логин@домен_из_настроек" после проверки логина на уникальность.
          • Город - заполняет поле город значением "Не указан".
        • Проверка уникальности - регистрация возможна, только если в списке зарегистрированных пользователей нет ни одного пользователя с таким же сочетанием значений уникальных полей. Если проверка уникальности включена для нескольких полей, поиск будет только по полной комбинации значений полей, а не по каждому полю в отдельности. Применимо к любому полю шага 1, а так же к полю с опцией "транслируемое".
          • Если не задать полей проверки уникальности, пользователи смогут регистрироваться многократно, если будут соблюдать требования к уникальности логина и электронной почты.
  • Источники (доступно, только если задано хотя бы одно поисковое поле):
    • Настройка источников - это множественное поле, которое позволяет задать один или несколько источников со следующими опциями:
      • Параметры подключения
        • Сетевой адрес СУБД
        • Логин для СУБД
        • Пароль от СУБД
        • Имя в СУБД
        • Таблица в СУБД
      • Поля СУБД (раздел отображается после нажатия на кнопку "Проверить подключение и получить поля базы данных"). Представляет собой список полей из БД, каждому из которых можно сопоставить одно из выбранных в предыдущем разделе полей.
        • Система предлагает только следующие поля  формы со следующими модификаторами:
          • Поисковые поля.
          • Транслируемые поля.
          • Проверка уникальности.
        • Поле СУБД не используется, если оно не сопоставлено ни одному из полей формы.
        • Поле СУБД не может быть сопоставлено сразу двум и более полям.
        • Все поля с модификаторами "поисковое", "транслируемое" и "проверка уникальности" должны быть сопоставлены с полями источника.
  • Подтверждение электронной почты
    • Если опция установлена, после "шага 2", на электронную почту пользователя будет выслан код подтверждения. Доступ к системе будет возможен только после подтверждения.

 Сценарий

 

  • Пользователь: Переходит по ссылке к регистрации
  • Система: Отображает пользователю форму с полями шага 1.
  • Пользователь: Заполняет требуемые поля и отправляет форму
  • Если задано хотя бы одно поисковое поле (в противном случае регистрация идет по сценарию без источников)
    • Система: По очереди подключается к каждому из источников и ищет в них запись, соответствующую параметрам.
      • Если запись найдена, поиск прекращается. Система выполняет проверку на уникальность и отображает форму шага 2 (если она есть).
      • Если запись не найдена, система отображает сообщение об ошибке и оставшееся число попыток.
      • Если попытки израсходованы, система блокирует регистрацию с данного ip-адреса на 1 час.
  • Если второй шаг предусмотрен.
    • Система: отображает форму шага 2.
    • Пользователь: заполняет поля формы шага 2.
  • Система: регистрирует учетную запись.
    • Если включен режим "подтверждение по электронной почте" - высылает подтверждение по электронной почте.
    • Если включен режим "генерации пароля" - высылает пользователю пароль.
  • Пользователь: авторизуется в системе.
  • Если остались незаполненные обязательные поля профиля (согласно настройкам системы, а не формы регистрации):
    • Система: требует заполнения недостающих обязательных полей до начала работы в системе.
Трудоемкость 50 нормочасов.

 

Теги: регистрация
Рейтинг ответа: 0 (0 оценок)

Комментарии запрещены