PHP 7.3
Ларавел 5.8
Рюкзак Laravel 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
.
Я думаю, что это может быть ошибка или что-то, что я не вижу правильно ...?