web-dev-qa-db-pt.com

Como saber a qual grupo de usuários / usuário de nível de acesso específico pertence

Para determinar se o usuário é um super user, fazemos algo parecido com isto:

$user = JFactory::getUser();
$isAdmin = $user->get('isRoot');
if ($isAdmin) {
echo 'You are an Administrator';

Qual seria a melhor maneira de saber que o usuário conectado pertence a um grupo de usuários específico ou possui algum nível de acesso de visualização específico?

5
saibbyweb

Para obter uma matriz de grupos aos quais o usuário conectado no momento pertence, você pode usar o seguinte:

$user   = JFactory::getUser();
$groups = JAccess::getGroupsByUser($user->id);

var_dump($groups);

Para obter os nomes desses grupos, você pode executar uma consulta ao banco de dados (adicione após o código acima)

$user   = JFactory::getUser();
$groups = JAccess::getGroupsByUser($user->id);
$groups_list = '(' . implode(',', $groups) . ')';

$db = JFactory::getDbo();
$query = $db->getQuery(true)
    ->select($db->qn('title'))
    ->from('#__usergroups')
    ->where($db->qn('id') . ' IN ' . $groups_list);
$db->setQuery($query);
$rows = $db->loadObjectList();

var_dump($rows);

Para obter os níveis de acesso do usuário, você pode usar o seguinte:

$user   = JFactory::getUser();
$levels = JAccess::getAuthorisedViewLevels($user->id);

var_dump($levels);
10
Lodder