Выйти программно с Joomla - PullRequest
       3

Выйти программно с Joomla

8 голосов
/ 01 декабря 2011

Мне нужно настроить метод в компоненте. Мне нужно выполнить другое действие (удалить пользователя и другую информацию), а затем выйти из системы программно (не с помощью кнопки), как мне этого добиться?

Я пытался сделать это в конце метода:

$return   = JRoute::_('index.php?option=com_users&task=user.logout', true);
$this->setRedirect($return,$msg);

Но это дает неверное сообщение токена.

Спасибо

Ответы [ 6 ]

18 голосов
/ 01 декабря 2011

Над какой Joomla-версией вы работаете? Если это Joomla 1.7, вы можете сделать это в своем коде:

$app = JFactory::getApplication();
$app->logout( $user_id );

Где $ user_id - это идентификатор пользователя, которого вы хотите выйти из системы. Если вы оставите его пустым или не установите его, он выйдет из системы пользователя, который выполняет запрос. Для Joomla 1.5 вы можете сделать это таким же образом, но в Joomla 1.5 есть глобальная переменная с именем $ mainframe, которая содержит экземпляр приложения, поэтому вы можете сделать:

global $mainframe;
$mainframe->logout( $user_id );

Надеюсь, это помогло!

4 голосов
/ 14 августа 2013
$app = JFactory::getApplication();
$app->logout();
2 голосов
/ 30 марта 2018

Joomla 4.0, они используют концепцию пространства имен.

Для Joomla 3.x используйте

$app = JFactory::getApplication();
$app->logout( $user_id ); 

Для Joomla 4.x используйте

\Joomla\CMS\Factory::getApplication();
$app->logout($user_id);
0 голосов
/ 31 марта 2018

Одна альтернатива, которая сработала для меня, - это использовать метод ниже.Возможно, вам придется перенаправить после этого вызова функции.

$cmsApp = new JApplicationCms;
$cmsApp->logout();

Или вы также можете перенаправить на выход из системы пользовательского контроллера, но это будет работать только для текущего пользователя.

// For site
$logoutUrl   = 'index.php?option=com_users&task=user.logout&'. JSession::getFormToken() .'=1';
// For admin
$logoutUrl   = 'index.php?option=com_login&task=logout&'. JSession::getFormToken() .'=1';
$app    = JFactory::getApplication();
$app->redirect(JRoute::_($logoutUrl, false));
0 голосов
/ 28 марта 2018
Solution 1 :
$app = JFactory::getApplication();              
$user = JFactory::getUser();
$user_id = $user->get('id');            
$app->logout($user_id, array());

Solution 2:
$app = JFactory::getApplication();   
$userToken = JSession::getFormToken();
$msg = 'Logout';
$return   = JURI::ROOT().'index.php?option=com_users&task=user.logout&'.$userToken . '=1';
$app->redirect($return,$msg);
0 голосов
/ 10 августа 2015

Если это Joomla 2.5 Вы можете использовать модуль входа в систему Joomla по умолчанию (который также имеет кнопку выхода из системы).Перейдите в Расширения >> Диспетчер модулей >> Новый >> Вход >> настройте и сохраните.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...