Создание регистрации пользователей на сайте часто бывает необходимым после установки фреймворка. Прежде, чем начать разработку страниц, необходимо обозначить их видимость для той или иной категории пользователей.
Библиотека HLOGIN расширяет возможности фреймворка HLEB2, добавляя полноценную регистрацию пользователей на сайте, которая отличается простотой настроек и быстрой установкой, и, вместе с тем, удобной и разнообразной функциональностью, поддерживающей мультиязычность и несколько вариантов дизайна. Опционально можно вывести форму обратной связи, которая идёт дополнительно к регистрации и авторизации. В автоматически создаваемой админпанели находятся средства для управления пользователями и настройки отображения. После внедрения регистрации можно сразу направить свои мысли на создание контента для сайта.
Доступно несколько базовых видов дизайна. Демонстрационную работу и внешний вид всплывающих окон регистрации можно увидеть по ссылке.
Шаг 1. Установка через Composer в проекте на основе фреймворка HLEB2:
$composer require phphleb/hlogin
Шаг 2. Установка библиотеки в проект. Будет предложено выбрать тип дизайна из нескольких:
$php console phphleb/hlogin add
$composer dump-autoload
Шаг 3. Перед выполнением этого действия необходимо иметь действующее подключение к базе данных. В настройках проекта '/config/database.php' нужно добавить подключение или убедиться, что оно существует, а также проверить, что его название находится в параметре 'base.db.type'.
$php console hlogin/create-login-table
После этого консольной командой создаётся пользователь с правами администратора (будет предложено указать E-mail и пароль):
$php console hlogin/create-admin
Если нет возможности выполнить консольную команду, то создайте таблицы соответствующим SQL-запросом из файла `/vendor/phphleb/hlogin/planB.sql`. После этого зарегистрируйте администратора и установите ему 'regtype' равное 11.
Шаг 4. Теперь вы можете перейти на главную страницу-заглушку сайта, если это дефолтная страница фреймворка без изменений и убедиться, что доступны панели авторизации. Если библиотека устанавливается в разрабатываемый проект на фреймворке HLEB2 не с самого начала и заглушка удалена, то проверьте вход на странице '/en/login/action/enter/' сайта (с данными администратора из предыдущего шага).
Шаг 5. Установка регистрации на сайте на определенных страницах через маршрутизацию. Для этого нужно в файлах роутинга (папка проекта /routes/) задать следующие условия:
Достаточно распределить маршруты сайта по этим условиям (группам), чтобы к ним применялись правила авторизации пользователей.
Следует иметь в виду, что страницы, не попавшие ни в одну из таких групп с условиями, находятся вне правил регистрации и данная библиотека к ним не подключена.
Шаг 6. Настройка. После авторизации у администратора в профиле (/en/login/profile/) отображается кнопка входа в админпанель. В ней можно настроить панели регистрации и прочие параметры.
Если нужно выводить данные в зависимости от типа регистрации пользователя:
Также можно добавить класс Phphleb\Hlogin\Container\Auth в контейнер и получить эти данные из него.
По умолчанию используемый язык панелей извлекается из параметра url (следующего за доменом) или метки lang в теге '<html lang="en">'. Установить принудительно дизайн и/или язык панелей на странице:
Заменить стандартные кнопки авторизации можно на любые, предварительно отключив стандартные в админпанели. Собственным кнопкам возможно назначить одно из следующих действий (для JavaScript):
Или, при помощи атрибутов:
Как можно понять, регистрация не может быть доступна для пользователей с отключенным JavaScript в браузере. Сейчас таких почти не осталось.
Если необходимо направить пользователя сразу на страницу входа или регистрации, то необходимых страниц автоматически создается несколько:
Страница регистрации
/ru/login/action/registration/
Страница входа
/ru/login/action/enter/
Страница профиля
/ru/login/profile/
Страница обратной связи
/ru/login/action/contact/
Страница админпанели с настройками регистрации
/ru/adminzone/registration/settings/
При валидации значений на стороне бекенда, посылаемых из форм регистрации, также можно дополнительно обработать их собственным PHP-скриптом, при его наличии. Таким образом можно, например, добавить собственное поле в форму и проверить его самостоятельно. Запросы разделены на отдельные классы, которые можно найти в папке /vendor/phphleb/hlogin/Optional/Inserted/. Они могут быть использованы только после копирования в папку /app/Bootstrap/Auth/Handlers/.
Собственный дизайн доступен при выборе типа "blank" в админпанели. После этого можно скопировать и изменить файл CSS любого другого дизайна из существующих, подключив его к сайту самостоятельно. Также можно внести правки по типу дизайна.
По умолчанию используются несколько переключаемых языков для регистрации и авторизации. Но все именования можно изменить на свои. При этом важным будет проверить, чтобы длинные слова умещались в интерфейс панелей.
Для backend-локализации скопируйте необходимые языковые файлы из /vendor/phphleb/hlogin/App/BackendTranslation/ в папку /app/Bootstrap/Auth/Resources/php/ и внесите изменения в последние.
Для frontend-локализации скопируйте необходимые языковые файлы (начинающиеся с 'hloginlang') из /vendor/phphleb/library/hlogin/web/js/ в папку /app/Bootstrap/Auth/Resources/js/ и внесите в них изменения.
Можно добавить дополнительный язык(и), создав соответствующие по названию файлы для backend и frontend локализаций, а также добавив его в перечень разрешённых языков настройки 'allowed.languages' файла /config/main.php (этот файл может дублироваться в Модулях).
При создании собственных дополнительных страниц в панели администратора, окружите их маршруты ограничением доступа, как показано далее:
Создание страниц в разделе администратора описано в соответствующем разделе данной документации.
Отправка писем с уведомлениями и восстановлением доступа осуществляется при помощи библиотеки github.com/phphleb/muller. В админпанели указывается E-mail отправителя, для которого должна быть разрешена отправка с сервера, для большинства хостингов достаточно создать такой почтовый ящик. Доступный E-mail отправки находится в php.ini (sendmail_path = ... -f'email@example.com').
По умолчанию письма дополнительно логируются в папку '/storage/logs/' c окончанием 'mail.log' в названии файла. Это логирование отключается в настройках панели администратора.
Библиотека по умолчанию, применяемая для рассылки писем, обладает ограниченными возможностями и при развитии проекта подлежит замене на подходящий почтовый сервер или иной аналог.
Создайте класс App\Bootstrap\Auth\MailServer по адресу /app/Bootstrap/Auth/MailServer.php, который имплементирует интерфейс Phphleb\Hlogin\App\Mail\MailInterface. После создания файла письма будут отправляться с использованием этого класса, поэтому сначала нужно реализовать в нём собственную отправку для выбранного почтового сервера.
Для обновления выполните консольные команды:
$composer update phphleb/hlogin
$php console phphleb/hlogin add
$composer dump-autoload
В процессе установки выберите текущий дизайн, который используется по умолчанию.
Библиотека HLOGIN на GitHub: github.com/phphleb/hlogin
Демонстрационная страница с регистрацией: auth2.phphleb.ru