Làm thế nào tôi có thể có được một danh sách tất cả các quyền mà người dùng có?


9

Nếu tôi có đối tượng người dùng hiện tại, làm thế nào tôi có thể nhận được danh sách tất cả các quyền anh ta có trong mô-đun tùy chỉnh 8 drupal? Tôi không muốn kiểm tra một quyền cụ thể sẽ là $ current_user-> hasPermission ("allow_name").

Tôi muốn có được toàn bộ danh sách các quyền của anh ấy.

cảm ơn

Câu trả lời:


11

Bạn có thể thử đoạn trích sau:

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

Điều này sẽ cung cấp cho bạn quyền được nhóm theo vai trò. Nhưng rất có thể bạn muốn chúng trong một mảng.

Vì vậy, bạn có thể sử dụng này

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

Trong trường hợp bạn muốn tải người dùng khác với người dùng hiện đang đăng nhập, bạn có thể sử dụng

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

Trong đó 123 là viết tắt của id người dùng. Để biết thêm thông tin:

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

Trân trọng,

Oleg


Điều này sẽ có được người dùng đăng nhập hiện tại, không phải bất kỳ người dùng. Nhưng, về mặt lý thuyết, tập lệnh / đoạn mã có thể được sửa đổi để tải một người dùng cụ thể theo id của họ và sau đó xem các quyền vai trò mà họ có.
tenken

Có @tenken, bạn đúng. Tôi đã thấy trong câu hỏi $ current_user, vì vậy tôi giả sử chúng ta đang nói về người dùng hiện đang đăng nhập. #TODO, thêm tập lệnh để tải người dùng khác nhau.
Oleg Videnov
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.