Joomla 5 позволяет пользователям входить в систему только под именем пользователя. Однако многие пользователи для удобства предпочитают входить в систему, используя свой адрес электронной почты. В этом уроке мы рассмотрим, как создать плагин для Joomla 5, при помощи которого пользователи смогут входить в систему, используя адрес электронной почты вместо имени пользователя.
Создание плагина
Итак, разработку нового плагина начнем, создав файл и сохранив его в каталоге плагинов/системы. Назовем файл loginwithemail.php.
Используем следующий код:
<?php
defined('_JEXEC') or die;
use Joomla\CMS\Plugin\CMSPlugin;
class plgSystemLoginwithemail extends CMSPlugin
{
protected $app;
protected $db;
// код плагина
}
Приведенный выше код создает новый плагин под названием loginwithemail, который расширяет класс CMSPlugin. Включение свойств классов $app и $db позволяет нам получить доступ к приложению и базе данных Joomla.
Реализуем функцию onAfterRoute():
Функция onAfterRoute()
вызывается после того, как приложение Joomla завершило маршрутизацию запроса пользователя.
<?php
public function onAfterRoute()
{
if (
$this->app->input->getMethod() !== 'POST'
||
$this->app->input->get('option') !== 'com_users'
||
$this->app->input->get('task') !== 'user.login'
) {
return;
}
$input = $this->app->input->getInputForRequestMethod();
$email = $input->getEmail('username');
if (strpos($email, '@') === false) {
return;
}
$db = $this->db;
$query = $db->getQuery(true)
->select($db->quoteName('username'))
->from($db->quoteName('#__users'))
->where($db->quoteName('email') . ' = :email')
->bind(':email', $email);
$db->setQuery($query);
$username = $db->loadResult();
if (! $username) {
return;
}
$input->set('username', $username);
}
Этот код проверяет, является ли метод запроса POST, параметр — com_users и задача — user.login. Если эти условия соблюдены, функция получает введенный пользователем адрес электронной почты и проверяет, содержит ли он символ «@». Если адрес электронной почты действителен, функция запрашивает в базе данных Joomla соответствующее имя пользователя и устанавливает в поле ввода имени пользователя полученное имя пользователя. Если соответствующий адрес электронной почты не найден в базе данных, плагин позволяет Joomla обработать запрос на вход в систему, как обычно.
Создание файла манифеста
Прежде чем мы сможем установить и использовать плагин, необходимо создать файл манифеста плагина. Этот файл содержит информацию о вашем плагине, включая его имя, тип, версию и другие важные детали.
Чтобы создать файл манифеста, необходимо создать новый файл в папке плагина и назвать его loginwithemail.xml. В этот файл нам необходимо включить теги XML, которые определяют информацию о плагине, например:
<name>: название вашего плагина.
<version>: номер версии вашего плагина.
<description>: краткое описание вашего плагина.
<type>: тип вашего плагина (система, пользователь, аутентификация и т. д.).
<files>: список файлов, которые включает ваш плагин.
Для получения дополнительной информации о создании файла манифеста плагина вы можете обратиться к официальной документации Joomla.
В заключение
В этом уроке мы узнали, как создать плагин под Joomla 5, который позволяет пользователям входить в систему, используя свой адрес электронной почты. По умолчанию Joomla 5 позволяет пользователям входить в систему только с использованием своего имени пользователя, но с помощью этого плагина мы расширили функциональность входа, чтобы пользователи могли авторизовываться на сайте при помощи адреса электронной почты.
Плагин проверяет, ввел ли пользователь адрес электронной почты вместо имени пользователя во время процесса входа в систему. Если пользователь ввел адрес электронной почты, плагин запрашивает в базе данных Joomla соответствующее имя пользователя и заменяет адрес электронной почты его именем пользователя, позволяя завершить процесс входа в систему.
Мы надеемся, что это руководство было полезно начинающим программистам, желающим создавать свои собственные плагины для Joomla.
Вы можете скачать плагин и просмотреть весь код в репозитории GitHub автора статьи. Мы рекомендуем вам изменить плагин и улучшить его функциональность в соответствии с вашими задачами.
Joomla в Telegram
Сообщество Yootheme Pro (page builder для Joomla)
Новости клуба NorrNext (разработчики расширений Joomla)
Вакансии и предложения работы по Joomla: фуллтайм, частичная занятость и разовые подработки. Размещение вакансий здесь.