当我们的一个“已注册”用户下订单时,我们有一个插件可以成功地将它们添加到名为“客户”的另一个用户组。这在使用JUserHelper::addUserToGroup()
的事物流中非常有效。
问题在于即使用户记录IS已正确更新,它们也已经登录,因此他们被迫退出并重新登录以获得所需的必要ACL。
我已经搜索了所有jUser代码和文档,但找不到改变$user =& JFactory::getUser();
所产生的当前登录用户的方法。
我希望对于比我更了解Joomla MVC的人来说,答案可能是显而易见的,但是我的头脑里充满了我读过的所有代码,试图找到实现这个目标的方法。
更新
下面的Lodder答案在技术上有效,但实际上正在更新“用户组”,但AuthGroups和AuthLevels不是。运行我的代码后,$ user对象显示其中的组,但在对象中进一步向下,
[_authGroups:protected] => Array
(
[0] => 1
[1] => 2
)
[_authLevels:protected] => Array
(
[0] => 1
[1] => 1
[2] => 2
)
似乎没有办法在当前会话中更改它,因为它全部受到保护,并且它更新的唯一位置是$identities = $this->getAuthorisedGroups();
的user.php,它仅在第一次遇到时执行。< / p>
答案 0 :(得分:0)
我发现了这一点,但我不能100%确定它是否适用于您的情况。最好试一试:
$user = JFactory::getUser();
if ($user->id == $user['id']){
$session = JFactory::getSession();
$session->set('user', new JUser($user->id));
}
众所周知,它适用于少数人。
让我知道它是否有效,如果没有,我会看到我能找到的其他内容。