$ user- & gt; groups равно нулю после редактирования пользователя и сохранения

Нечто странное происходит после того, как пользователь отредактировал свой аккаунт и сохранил его. Когда пользователь сохраняет данные, массив групп внутри объекта пользователя становится пустым.

Мы настроили его так, чтобы пользователь мог быть в нескольких группах, таких как «Зарегистрированный» и «Менеджер» (идентификаторы 2 и 15). Поэтому, когда пользователь вошел в систему, мы можем сделать следующее:

$user = JFactory::getUser();
var_dump($user->groups);

и мы получаем

array (size=3)
2 => string '2' (length=1)
13 => string '13' (length=2)
25 => string '25' (length=2)

Затем, после того как пользователь отредактировал свой аккаунт, что-то изменил (или ничего не изменил) и сохранил,

var_dump($user->groups);

результаты в

null

Я попытался обойти это, создав плагин, в котором после сохранения пользователя мы заходим в базу данных, получаем группы пользователей и вставляем их обратно в массив. Но когда я делаю следующее:

public function onUserAfterSave($juser, $isNew, $result, $error)
{
if (JFactory::getApplication()->isSite()) {

$user = JFactory::getUser();

JFactory::getApplication()->enqueueMessage(json_encode($user->groups), 'message');
}
}

сообщение, которое появляется, является JSON-кодированным массивом групп — не «ноль», как я и ожидал. Так что внутри onUserAfterSave () $ user-> groups все еще корректно. Это в какой-то момент после это то, что $ user-> groups решает опустошить себя.

Также может быть важно отметить, что каждый раз, когда пользователь выходит из системы и снова входит в систему, группы сбрасываются, и они больше не равны нулю.

У кого-нибудь еще есть эта проблема или есть какие-нибудь советы?

2

Решение

Была такая же проблема. Нашел грязное решение, чтобы обойти.
Вы можете получить группы с классом JACCESS.

$oUser   = JFactory::getUser();
jimport( 'joomla.access.access' );
$groups = JAccess::getGroupsByUser($oUser->id);
var_dump($groups);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]