Вы можете сделать что-то вроде этого. Внесите класс Guard, затем используйте его для проверки пользователя. Вам не нужно действительно передавать параметр. Просто назовите свое «админ» промежуточного программного обеспечения или что-то еще. Следующее промежуточное программное обеспечение будет проверять, является ли роль текущего пользователя администратором, а если нет, перенаправлять на другой маршрут. Вы можете делать все, что захотите, при неудаче.
<?php
namespace Portal\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
class Admin
{
/**
* The Guard implementation.
*
* @var Guard
*/
protected $auth;
/**
* Create a new filter instance.
*
* @param Guard $auth
*/
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if($this->auth->user()->role != 'admin') {
return redirect()->route('not-an-admin');
}
return $next($request);
}
}
В случае, если вы хотите передать параметр, вы можете сделать это:
public function handle($request, Closure $next, $role)
{
if($this->auth->user()->role != $role) {
return redirect()->route('roles-dont-match');
}
return $next($request);
}