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

Дмитрий Рекун 11 июля 2014 1 мин 19668 просмотров

Предположим, что вы хотите обновить какие-то данные пользователя, сохранить их в базу и сразу же отобразить их пользователю. После обновления данных вы получаете объект пользователя 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);

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

Назад На главную