fix: register ResolveTenant globally in web middleware group

Livewire posts go to /livewire/update on the bare web middleware group,
NOT through the Filament panel middleware. So ResolveTenant didn't fire
during login form submission → tenant not set → TenantScope's fail-safe
returned 0 users → Auth::attempt failed → 'Email/password incorrect'.

Move ResolveTenant + CheckTenantStatus to the global web group via
bootstrap/app.php; remove them from TenantPanelProvider to avoid
running twice.
This commit is contained in:
2026-05-06 19:49:57 +00:00
parent 181c59ad94
commit 11dd99cce2
2 changed files with 11 additions and 2 deletions
@@ -55,8 +55,9 @@ class TenantPanelProvider extends PanelProvider
SubstituteBindings::class, SubstituteBindings::class,
DisableBladeIconComponents::class, DisableBladeIconComponents::class,
DispatchServingFilamentEvent::class, DispatchServingFilamentEvent::class,
ResolveTenant::class, // ResolveTenant + CheckTenantStatus are now registered globally
CheckTenantStatus::class, // in bootstrap/app.php (web middleware group) so they run on
// Livewire endpoints too. No need to duplicate them here.
]) ])
->authMiddleware([ ->authMiddleware([
Authenticate::class, Authenticate::class,
+8
View File
@@ -21,6 +21,14 @@ return Application::configure(basePath: dirname(__DIR__))
| Request::HEADER_X_FORWARDED_PROTO | Request::HEADER_X_FORWARDED_PROTO
| Request::HEADER_X_FORWARDED_AWS_ELB | Request::HEADER_X_FORWARDED_AWS_ELB
); );
// ResolveTenant must run on EVERY web request (including Livewire
// /livewire/update endpoints) so tenant context is set before
// any DB query goes through the global TenantScope.
$middleware->web(append: [
\App\Http\Middleware\ResolveTenant::class,
\App\Http\Middleware\CheckTenantStatus::class,
]);
}) })
->withExceptions(function (Exceptions $exceptions): void { ->withExceptions(function (Exceptions $exceptions): void {
// //