我目前在 laravel 5.8 项目中使用 spatie laravel 权限包,并使用 Nova 进行管理。
我希望超级管理员用户能够从 nova 仪表板为选定的用户分配角色。这就是我尝试通过使用新星动作来做到这一点的方式。我创建了一个GrantAdminRole
动作并像这样在句柄方法中进行角色分配
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']);
})
];
}
现在,当我尝试分配角色时,我收到一条错误消息
对不起!您无权执行此操作
我怎样才能解决这个问题?我在想我需要一个政策,但不知道该政策应该是什么样子。