<?php
namespace Filament\Http\Middleware;
use Filament\Facades\Filament;
use Filament\Models\Contracts\FilamentUser;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
use Illuminate\Database\Eloquent\Model;
class Authenticate extends Middleware
{
/**
* @param array<string> $guards
*/
protected function authenticate($request, array $guards): void
{
$guard = Filament::auth();
if (! $guard->check()) {
$this->unauthenticated($request, $guards);
return;
}
$this->auth->shouldUse(Filament::getAuthGuard());
/** @var Model $user */
$user = $guard->user();
$panel = Filament::getCurrentPanel();
if (!$user->canAccessPanel($panel)) {
redirect()->route('home);
}
# abort_if(
# $user instanceof FilamentUser ?
# (! $user->canAccessPanel($panel)) :
# (config('app.env') !== 'local'),
# 403,
#);
}
protected function redirectTo($request): ?string
{
return Filament::getLoginUrl();
}
}