Площадка Ogri - ogri.me | Joomla 3: Перенаправление на ту же страницу после авторизацииНа сайте авторизация происходит через модуль mod_login. В настройках модуля опция Перенаправление при входе выставлена - по умолчанию. После введения правильных логина и пароля, тем не менее, умная Joomla редиректит в самые разные места в зависимости от того, страница какого расширения на данный момент активна. То в корень сайта, то в блог категории. Неудобно. При выходе пользователя (опция перенаправления - также по умолчанию) страница не меняется, всё чётко.

Пришлось покопаться и найти место в коде, где осуществляется редирект. Оно нашлось вовсе не в модуле авторизации, а в компоненте пользователей com_users. А именно - в файле components\com_users\controllers\user.php. И небольшое изменение в его коде решило вопрос.

Модификации подверглась функция login(). Вот она оригинальная:

public function login()
{
  $this->checkToken('post');
 
......................
 
  $app->redirect(JRoute::_($app->getUserState('users.login.form.return'), false));
}

А вот изменённая.

public function login()
{
  $this->checkToken('post');
 
......................
 
//comment out default redirect
//  $app->redirect(JRoute::_($app->getUserState('users.login.form.return'), false));
 
//redirect to the same page
  $return = $input->get('return', '', 'BASE64');
  $return = base64_decode($return);
  $app->redirect(JRoute::_($return, false));
}

Как видите, последняя строка закомментирована и вместо неё добавлены три новых строки. Логика позаимствована из следующей ниже функции logout().

Непонятно, что мешает разрабам пофиксить это недоразумение. Возможно, оно, как и многие другие, будет исправлено в Joomla 4. Вот только релиза никак не дождаться.

Добавить комментарий


Работая с этим сайтом, вы даете свое согласие на использование файлов cookie, необходимых для сохранения выбранных вами настроек, а также для нормального функционирования сервисов Google.