web-dev-qa-db-fra.com

Comment savoir à quel groupe d'utilisateurs / à quel niveau d'accès l'utilisateur appartient

Pour déterminer si l'utilisateur est un super user, nous faisons quelque chose comme ça:

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

Quel serait le meilleur moyen de savoir que l'utilisateur connecté appartient à un groupe d'utilisateurs spécifique ou a un niveau d'accès de visualisation spécifique?

5
saibbyweb

Pour obtenir un tableau de groupes auquel l'utilisateur actuellement connecté appartient, vous pouvez utiliser les éléments suivants:

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

var_dump($groups);

Pour obtenir les noms de ces groupes, vous pouvez exécuter une requête sur la base de données (ajoutez après le code ci-dessus).

$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);

Pour obtenir les niveaux d'accès de l'utilisateur, vous pouvez utiliser les éléments suivants:

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

var_dump($levels);
10
Lodder