web-dev-qa-db-ja.com

ユーザーが持っているすべての権限のリストを取得するにはどうすればよいですか?

現在のユーザーオブジェクトがある場合、drupal 8カスタムモジュールで彼が持っているすべての権限のリストを取得するにはどうすればよいですか?$ current_userのような特定の権限を確認したくない-> hasPermission( "permission_name")。

彼の許可の全リストを取得したい。

ありがとう

9
Diana

次のスニペットを試すことができます:

$user = \Drupal::currentUser();
$user_roles = $user->getRoles();
$roles_permissions = user_role_permissions($user_roles);

これにより、役割ごとにグループ化された権限が付与されます。しかし、ほとんどの場合、それらを1つの配列に入れます。

したがって、これを使用できます

$final_array = array();
foreach ($roles_permissions as $role_key => $permissions) {
  foreach ($permissions as $permission) {
    $final_array[] = $permission;
  }
}

現在ログインしているユーザーとは異なるユーザーをロードしたい場合は、

$some_user = \Drupal\user\Entity\User::load(123);

ここで、123はユーザーIDを表します。詳細については:

https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21Entity.php/function/Entity%3A%3Aload/8.2.x

宜しくお願いします、

オレグ

11
Oleg Videnov