使用Spatie Laravel权限在Nova上分配用户角色

时间:2019-09-30 12:39:40

标签: php laravel laravel-nova laravel-permission

我目前在laravel 5.8项目中使用spatie laravel许可包,并使用Nova作为管理员。

我希望超级管理员用户能够从nova仪表板向选定的用户分配角色。这就是我尝试通过使用nova动作来做到的方式。我创建了一个GrantAdminRole动作,并在类似这样的handle方法中进行角色确认

public function handle(ActionFields $fields, Collection $models)
{
    foreach ($models as $model) {

        // grant user admin role
        $model->assignRole(['admin']);
    }

    return Action::message('User has been assigned Admin role.');
}

然后在我的app\Nova\User操作方法中,我正在使用GrantAdminRole操作

public function actions(Request $request)
{
    return [
        (new GrantAdminRole)->canSee(function ($request) {
            return $request->user()->hasRole(['super-admin']);
        })
    ];
}

现在,当我尝试分配角色时,会收到错误消息

  

对不起!您无权执行此操作

我该如何解决?我在想我需要一项政策,但无法弄清楚该政策的外观。

0 个答案:

没有答案