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

  • 11.07.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);

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

Это интересно:

Комментарии  

Вадим Куницын
+4 # Вадим Куницын 14.07.2014 23:37
Дима, вообще мега заметка. Надеюсь ты и дальше нас радовать рецептами будешь.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Дмитрий Рекун
+2 # Дмитрий Рекун 15.07.2014 13:00
Рад, что полезно ;)
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Вадим Куницын
-2 # Вадим Куницын 15.07.2014 13:03
Ждем еще интересных рецептов, кстати в твоих статьях это самая полезная вещь, ну во всяком случае для меня.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
гость
+2 # гость 25.07.2014 17:29
Код:$user = JFactory::getUser();
$user->set('email', $data['email']);


вполне адекватно вроде работает
так же и в сессии обновляются данные
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Alex
+1 # Alex 03.01.2015 18:02
Если нужно также обновить группу, в которую входит пользователь, то надо добавить в код JAccess::clearStatics();
Иначе новые права доступа (authorised view levels) будут иметь эффект только после повторной авторизации
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Андрей
0 # Андрей 28.01.2015 21:43
Напишите пожалуйста подробнее как обновить id групп к которым принадлежит пользователь
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Андрей
0 # Андрей 28.01.2015 22:00
То есть как в сессии обновить JUserHelper::getUserGroups($id);
Заранее спасибо за ответ.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Анжелика
0 # Анжелика 29.04.2016 17:33
Подскажите пожалуйста, а как в модуль вывести информацию о пользователе через JFactory::getUser() куда код вставлять? :oops:
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Ренат
0 # Ренат 30.04.2016 17:23
C нуля установил самую последнюю версию joomla, и заметил, что форма регистрации не появляется. Только форма авторизации! Там нет и не смог вывести "Регистрация на сайте".
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Вадим
0 # Вадим 15.05.2016 23:26
$user = JFactory::getUser();
$user->load($user->id);
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Андрей
0 # Андрей 12.11.2016 17:10
ПРОШУ ПОМОЧЬ!!!!
Не понимаю куда вставлять описанное.

Ситуация такая:
- Администратор в админке меняет данные пользователя (я сам добавлял в базу дополнительные поля). Пользователь их редактировать не может, только для чтения они.
И мне нужно что бы пользователь увидел обновленные данные на определенной странице (любой, пусть информация по пользователя на index.php) не выходя из своего кабинета.

КАК СДЕЛАТЬ такую ссылочку? Или добавить какой нужно код на ту страницу, где данные которые нужно обновлять.

ЗАРАНЕЕ СПАСИБО!
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору

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

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

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

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

Скачать Joomla! 3 Документация Joomla! CMS Свернуть

Расширения Joomla

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

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

Видео