tra-loi-cau-hoi-phat-trien-web.com

Làm thế nào để biết người dùng thuộc nhóm người dùng / cấp truy cập cụ thể nào

Để xác định xem người dùng có phải là super user, chúng tôi làm một cái gì đó như thế này:

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

Điều gì sẽ là cách tốt nhất để biết rằng người dùng đã đăng nhập thuộc về một nhóm người dùng cụ thể hoặc có một số cấp độ truy cập xem cụ thể?

5
saibbyweb

Để có được một loạt các nhóm mà người dùng hiện đang đăng nhập thuộc về, bạn có thể sử dụng như sau:

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

var_dump($groups);

Để có được tên của các nhóm này, bạn có thể chạy truy vấn cơ sở dữ liệu (thêm sau mã ở trên)

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

Để có được cấp độ truy cập của người dùng, bạn có thể sử dụng như sau:

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

var_dump($levels);
10
Lodder