Промежуточное ПО в Filament
Давайте добавим промежуточное ПО. Перед отдачей страницы /admin запрос проходит цепочку классов Laravel. Filament позволяет дописать свои звенья к стандартным.
Общий стек задают вызовом
middleware с флагом
isPersistent, чтобы
классы жили между запросами
как в обычном приложении.
Для защищённых страниц
есть отдельный список
authMiddleware.
Откроем AdminPanelProvider.php
и подключим проверку
EnsureStaff.php в оба
массива:
<?php
namespace App\Providers\Filament;
use App\Http\Middleware\EnsureStaff;
use Filament\Panel;
use Filament\PanelProvider;
use Illuminate\Auth\Middleware\Authenticate;
use Illuminate\Cookie\Middleware\EncryptCookies;
class AdminPanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
->default()
->id('admin')
->path('admin')
->login()
->middleware([
EncryptCookies::class,
EnsureStaff::class,
], isPersistent: true)
->authMiddleware([
Authenticate::class,
EnsureStaff::class,
]);
}
}
Сам класс проверки пока просто пропускает запрос дальше. Его можно заменить логикой роли или отдела:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class EnsureStaff
{
public function handle(Request $request, Closure $next)
{
return $next($request);
}
}
Поставьте на панель свою проверку перед открытием страниц.