Назначение ролей пользователей в Nova с использованием разрешений Spatie Laravel - PullRequest
2 голосов
/ 30 сентября 2019

В настоящее время я использую пакет разрешений 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']);
        })
    ];
}

Теперь, когда я пытаюсь назначить роль, я получаю сообщение об ошибке

Извините! У вас нет прав доступа для выполнения этого действия

Как я могу это исправить? Я думаю, что мне нужна политика, но не могу понять, как должна выглядеть политика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...