Я работаю над модулем / пакетом базового приложения. Я создал промежуточное программное обеспечение RoleMiddleware
, и я также приложил изображение своих каталогов.
app
/Http
/Middleware
/RoleMiddleware.php
У меня есть следующий каталог моего пользовательского пакета
app
/package
/cases (This is the package name)
/src
/Http
/Controllers
/CaseController.php
, теперь я хочу вызвать мой RoleMiddleware
в конструкторе контроллера упаковщика, но роль промежуточного программного обеспечения не работает в конструкторе, как можно Я делаю так, чтобы следующее промежуточное программное обеспечение, когда вызов с web.php
rote в моем пакете возвращает null
, но если я маршрутизирую по умолчанию, web.php
файл возвращает мне ноль.
RoleMiddlware defiend в Default Middlware Folder
class RoleMiddleware
{
public function handle($request, Closure $next)
{
dd(Auth::user());
if (Auth::check() === false) {
return redirect('login');
} elseif (Auth::check() === true) {
dd('hi');
$roles = Role::all()->pluck('slug');
if (is_null($request->user())) {
abort(404);
}
if (!$request->user()->hasRole($roles)) {
abort(404);
}
if ($request->user()) {
if ($request->user()->hasRole($roles)) {
return $next($request);
}
}
}
}
}
Дело Контроллер Defiend в упаковке app/cases/Http/controller/caseController.php
class CaseController extends Controller
{
public function __construct()
{
$this->middleware('role',['except' => 'caseUrlView']);
}
public function index()
{
$data['portal'] = Portal::all();
$data['operators'] = Operator::all();
return view('cases::case', $data);
}