当我们的“注册”用户下订单时,我们有一个插件成功地将他们添加到另一个名为“客户”的用户组中。在流程中使用JUserHelper::addUserToGroup()非常顺畅。
问题在于,即使用户记录已经正确更新,他们已经登录,所以他们被迫注销并重新登录以获得他们需要的必要ACL。
我已经搜索了所有的jUser代码和文档,但找不到一种方法来修改目前由$user =& JFactory::getUser();产生的当前登录用户。
我希望答案对于那些比我更了解Joomla MVC的人来说可能是显而易见的,但是我看了所有的代码,试图找到一种实现这一点的方法,我的头脑正在飞速运转。
更新:
Lodder的答案在技术上是可行的,但是尽管“用户组”实际上已经被更新,但AuthGroups和AuthLevels没有被更新。在运行我的代码后,$user对象确实显示其中的组,但在对象的底部,情况并不如此。
问题在于,即使用户记录已经正确更新,他们已经登录,所以他们被迫注销并重新登录以获得他们需要的必要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 的 $identities = $this->getAuthorisedGroups();
处,该代码仅在首次遇到时执行。