В настоящее время вошли в роли пользователя

18

Как получить в настоящий момент авторизованные роли пользователя в Drupal 8?

Например, в D7 мы имеем $GLOBALS['user']->roles;

graceman9
источник

Ответы:

31

Что-то вроде:

$current_user = \Drupal::currentUser();
$roles = $current_user->getRoles();

вернет массив как:

Array
(
  [0] => authenticated
  [1] => administrator
  [2] => some_other_role
)

где значения массива - это идентификаторы ролей (эквивалентные имени машины роли в Drupal 7). В ОО-коде используйте соответствующий механизм получения текущего пользователя из контейнера, например

$current_user = $container->get('current_user');
mpdonadio
источник
Хороший ответ, можете ли вы добавить код для $container?
Ученик
@Pupil, чтобы получить доступ к контейнеру в контексте OO, вы должны создать свой класс и использовать инъекцию зависимостей, чтобы вызвать его, как показано здесь, например, drupal.org/docs/8/api/services-and-dependency-injection/…
wranvaud
0

Чтобы получить текущую роль пользователя в Drupal 8 -

$role = \Drupal::currentUser()->getRoles();
foreach ($role as $value) {
   $role = $value;
}
Васим Хан
источник