Как получить роль авторизованного пользователя в Drupal 7? - PullRequest
17 голосов
/ 08 марта 2011

Как получить роль зарегистрированного пользователя в Drupal 7? Вы знаете простой способ сделать это? Есть ли для этого некоторые основные функции drupal?

Ответы [ 4 ]

25 голосов
/ 11 марта 2011

$ user-> role - это массив ролей, принадлежащих пользователю, которому назначен идентификатор роли, значение - строка роли.Поэтому, если вы хотите проверить, имеет ли пользователь роль «аутентифицированный пользователь», ваш фрагмент кода будет выглядеть примерно так (необязательно самый оптимизированный подход, in_array - довольно дорогая функция):

global $user;

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

Примечаниечто in_array также может принять массив в качестве «иглы» (аргумент # 1), чтобы вы могли проверить несколько вариантов роли:

in_array(array('authenticated user', 'anonymous user'), $user->roles);
24 голосов
/ 08 марта 2011

Вы можете получить доступ к ролям пользователей, просто используя этот фрагмент PHP:

<?php $GLOBALS['user']->roles; ?>
9 голосов
/ 09 марта 2011

Я нашел интересное решение для проверки нескольких ролей пользователя:

global $user;
$check = array_intersect(array('moderator', 'administrator'), array_values($user->roles));
if (empty($check) ? FALSE : TRUE) {
    // is admin
} else {
    // is not admin
}
1 голос
/ 11 мая 2015

// Загрузка текущего пользователя.

 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;
    }
...