Не удается ограничить доступ к маршрутам диспетчера разрешений с помощью промежуточного программного обеспечения на основе ролей

PHP 7.3 Laravel 5.8 Laravel Backpack 3.6

Я пытаюсь использовать промежуточное программное обеспечение 'role:admin' в моем routes/backpack/permissionmanager.php файл, чтобы ограничить доступ к областям пользователя, ролей и разрешений рюкзака для подмножества пользователей с определенными ролями.

Я убедился, что моей учетной записи предоставлена ​​правильная роль.

мой 'user' модель в config/backpack/permissionmanager.php установлен в App\User::class и мой User Модель имеет и использует необходимые черты, как указано в документации.

Я разместил role Промежуточное программное обеспечение в моем приложении, следующим образом:

<?php

namespace App\Http\Middleware;

use Closure;

class RoleMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next, $role)
    {
        if (backpack_auth()->guest()) {
            return redirect('login');
        }

        if (! backpack_user()->hasRole($role)) {
            abort(403);
        }

        return $next($request);
    }
}

Тем не менее, кажется, что это промежуточное ПО backpack_user(), зная, кто я, через правильное возвращение ->name собственность, абсолютно не имеет представления о ролях или разрешениях, которые я должен был назначить для себя. Я проверил это с помощью ->getRoleNames() метод и возвращает пустую коллекцию.

В базе данных правильные записи и идентификаторы устанавливаются в пределах model_has_roles таблица для моей учетной записи пользователя и роль, которую я хочу.

Тем не менее, переход к myapp.dev/admin/user приводит к 403 Forbidden,

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

0 ответов

Другие вопросы по тегам