Как обновить данные текущего пользователя без его повторной авторизации

  • Пятница, 11 июля 2014

Предположим, что вы хотите обновить какие-то данные пользователя, сохранить их в базу и сразу же отобразить их пользователю. После обновления данных вы получаете объект пользователя JUser через JFactory::getUser(), но данные в объекте по прежнему старые и обновляютя они только после того, как пользователь пройдет повторную авторизацию. Как же обновить эти данные, не заставляя пользователя выходить/входить на сайт заново?

Загвоздка в том, что при вызове JFactory::getUser() объект JUser берется из сессии, поэтому для его обновления вы должны получить объект из сессии, обновить необходимые свойства и записать объект обратно в сессию:

// Получем объект пользователя из сессии
$session = JFactory::getSession();
$tmpUser = $session->get('user');

// Обновляем необходимые данные
$tmpUser->name  = $data['name'];
$tmpUser->email = $data['email'];

// Обновляем объект пользователя в сессии
$session->set('user', $tmpUser);

Удачной разработки!

Дмитрий Рекун

Дмитрий Рекун

Пишу везде и понемногу ;)

Латвия, Рига. https://jpath.ru/

Статьи автора

Joomla!® CMS — пожалуй, лучшая система управления контентом с открытым исходным кодом

Логотип Joomla

Joomla! — это больше, чем просто программное обеспечение, это люди, включающие разработчиков, дизайнеров, системных администраторов, переводчиков, копирайтеров, и, что самое главное — простых пользователей.

Мы рады пригласить вас в ряды нашего сообщества!

Свернуть

Коротко о главном в Joomla

Новости портала

Новое в блогах

Видео

Форум о Joomla