Drupal 7中如何获取当前登录用户的角色?

问题描述 投票:0回答:4

如何在Drupal 7中获取当前登录用户的角色?您知道实现此目的的简单方法吗?有一些 Drupal 核心功能吗?

php authentication drupal drupal-7 drupal-modules
4个回答
27
投票

$user->roles 是属于用户的角色数组,以角色 ID 为键,值是角色字符串。因此,如果您想检查用户是否具有“经过身份验证的用户”角色,您的代码片段将如下所示(不一定是最优化的方法,in_array 是一个性能相当昂贵的函数):

global $user;

if (in_array('authenticated user', $user->roles)) {
     //do stuff here
}

请注意,in_array 也可以接受数组作为“needle”(参数 #1),以便您可以检查多个角色选项:

in_array(array('authenticated user', 'anonymous user'), $user->roles);

26
投票

您只需使用以下 PHP 片段即可访问用户角色:

<?php $GLOBALS['user']->roles; ?>

9
投票

我找到了一个有趣的解决方案来检查用户的多个角色:

global $user;
$check = array_intersect(array('moderator', 'administrator'), array_values($user->roles));
if (empty($check) ? FALSE : TRUE) {
    // is admin
} else {
    // is not admin
}

2
投票

//加载当前登录的用户。

 global $user;
 print_r($user->roles);//this gives you current user roles

//检查他是否是管理员,可以通过

  if (in_array('administrator', $user->roles)) {
            // do some stuff
            $form['field_end_date']['#disabled'] = FALSE;
    }
© www.soinside.com 2019 - 2024. All rights reserved.