Назначение ролей пользователей в Nova с использованием разрешений Spatie Laravel
В настоящее время я использую пакет разрешений spatie laravel в проекте laravel 5.8 и использую 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']);
})
];
}
Теперь, когда я пытаюсь назначить роль, я получаю сообщение об ошибке
Сожалею! Вы не авторизованы для выполнения этого действия
Как я могу это исправить? Я думаю, что мне нужна политика, но не могу понять, как она должна выглядеть.