Автоматическая авторизация после регистрации в Joomla

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

Почему бы не избавится от лишней рутины? Идеальная регистрация выглядит так: пользователь нажимает кнопку «Зарегистрироваться» — вводит минимальный набор данных для регистрации (имя, логин, пароль, email) и после окончания процедуры регистрации пользователь сразу же получает доступ к функционалу, который доступен только авторизированным клиентам.

Как это реализовать?
Стандартными средствами Joomla, к сожалению, никак.
Для автоматической авторизации после регистрации нужно установить дополнительный плагин, к примеру — wbs_autologin от webemus. Ссылка на скачивание плагина указана в конце материала.

Инструкция по установке и настройке плагина wbs_autologin.

  1. Через Менеджер расширений устанавливаем плагин wbs_autologin.zip
  2. Проходим в Менеджер плагинов, находим плагин Webemus — Autologin и включаем его.
  3. Затем открываем Пользователи — Менеджер пользователей — Настройки и ставим значение «Нет» для параметра «Активация нового пользователя» («New User Account Activation»).

Стоит отметить что плагин работает на Joomla 2.5 и Joomla 3.x.


Также, есть альтернативный вариант — хак ядра. Кто часто обновляет сайт — тот понимает, что данное решение является не очень удобным, поскольку при очередном обновлении сайта хак может попросту затереться обновлением. Но все же опубликую вариант, для общего развития.

  1. Открываем файл /components/com_users/controllers/registration.php
  2. Находим часть кода:
    } elseif ($return === ‘useractivate’) { $this->setMessage(JText::_(‘COM_USERS_REGISTRATION_COMPLETE_ACTIVATE’)); $this->setRedirect(JRoute::_(‘index.php?option=com_users&view=registration&layout=complete’, false)); } else { // //Put code here // и после него, вернее в место Put code here вставляем:
    $app = JFactory::getApplication(); $credentials = array(); $credentials[‘username’] = $data[‘username’]; $credentials[‘password’] = $data[‘password1’]; $app->login($credentials);

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