使用角色OR权限的Laravel Spatie中间件

时间:2019-06-16 10:08:29

标签: php laravel spatie

我正在使用 Laravel Spatie 程序包,并插入了我想要的所有权限和一个管理员角色。

  

我正在尝试做的事情:

我正在尝试检查每条路径中的用户是否是 管理员(可以执行任何操作) ,还是不是管理员并具有一定的权限。

  

我尝试过的事情:

我尝试添加|符号。

// GET ALL SEASONS
Route::get('/', 'SeasonsController@index')
            -> name('index')
            -> middleware(['role:admin|permission:seasons show active']);
  

发生了什么事与预期行为:

每当我以具有seasons show active权限的用户身份登录时,我都会得到403 Forbidden

但是,如果我删除了role:admin,则该用户将获得许可。

1 个答案:

答案 0 :(得分:1)

最好只使用权限。

向您的角色管理员授予所有权限(季节显示为活动中...等)。 这样,您就不需要中间件中的role:admin了。

要授予您对角色管理员代码的所有权限,如下所示

$permissions = \Spatie\Permission\Models\Permission::all()

$role = \Spatie\Permission\Models\Role::where('name', 'admin')->first();

// foreach on permissions
 $role->givePermissionTo($permission);
// end foreach