Не удается ограничить доступ к маршрутам диспетчера разрешений с помощью промежуточного программного обеспечения на основе ролей
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
,
Я думаю, что это может быть ошибка или что-то, что я не должен видеть правильно...?