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


9

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

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

ありがとう

回答:


11

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

$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

宜しくお願いします、

オレグ


これにより、現在のログインユーザーが取得され、どのユーザーも取得されません。ただし、理論的には、スクリプト/スニペットを変更して、特定のユーザーをIDでロードし、そのユーザーが持つ役割の権限を表示することができます。
テンケン2017年

はい、@ tenken、正解です。$ current_userの質問を見たので、現在ログインしているユーザーについて話していると想定しました。#TODO、別のユーザーをロードするためのスクリプトを追加します。
Oleg Videnov 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.