如何获取角色中的权限列表

How to get list of permissions in a role

我正在使用 Romanbican/Roles laravel 包,我有 permission_role table、roles table 和 permissions table。现在,我想获取特定 role 的所有 permissions。例如(角色:Admin,权限:create.usersdelete.usersedit.users。结果将是:

管理员:

我该怎么做?这是我的 tables 字段:

角色


编号 |姓名 |鼻涕虫 |级别 |



权限


编号 |姓名 |塞子 |



permission_role


编号 | permission_id | role_id |


在角色模型文件中建立关系

public function permissions()
{
  return $this->belongsToMany(Permissions::class, 'permission_role', 'role_id', 'permission_id ')
}

首先,您需要一个控制器来处理这个问题。 controller 必须能够获取角色,然后它需要通过角色照管perms,然后获取权限。

所以它看起来像这样;

public function editRolePerms($id)
    {
      $getrole = Role::findOrFail($id);

      $permbyrole = DB::table('permission_role')->select('permission_id')->where('role_id', $id)->lists('permission_id');

      $getperms = Permission::all();

      return view('your_view')->with('role', $getrole)->with('getperms', $getperms)->with('permbyrole', $permbyrole);
    }

那将是控制器,然后根据您的视图中的角色获得权限,它看起来像这样:

@foreach($getperms as $perm)
<tr>
  <td>{{ $perm->name }}</td>
  <td>{{ $perm->description }}</td>
  @if(!in_array($perm->id, $permbyrole))
      <td><span id="{{ $perm->id }}" class="label label-danger">Not enabled</span></td>
      <td><input onclick="toggleRole({{ $perm->id }}, {{ $role->id }})" type="checkbox" id="checkbox_{{ $perm->id }}"></td>
  @else
      <td><span id="{{ $perm->id }}" class="label label-success">Enabled</span></td>
      <td><input onclick="toggleRole({{ $perm->id }}, {{ $role->id }})" type="checkbox" checked="true" id="checkbox_{{ $perm->id }}"></td>
  @endif
 </tr>
@endforeach

希望这能满足您的需要。