3

当我们的一个“注册”用户下订单时,我们有一个插件可以成功地将他们添加到另一个名为“客户”的用户组。这在使用JUserHelper::addUserToGroup().

问题是即使用户记录已正确更新,但他们已经登录,因此他们被迫注销并重新登录以获得所需的必要 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
            )

在当前会话中似乎无法更改它,因为它都受到保护,并且它更新的唯一位置是 user.php at $identities = $this->getAuthorisedGroups();,它只在第一次遇到它时执行。

4

1 回答 1

0

我发现了这个,但我不能 100% 确定它是否适用于你的情况。最好试一试:

$user = JFactory::getUser();
if ($user->id == $user['id']){
   $session = JFactory::getSession();
   $session->set('user', new JUser($user->id));
}

众所周知,它可以为少数人工作。

让我知道它是否有效,如果没有,我会看看我还能找到什么。

于 2012-11-16T15:52:28.230 回答