From 11dd99cce22787082bc719389748001e68cd5d27 Mon Sep 17 00:00:00 2001 From: Vasyka Date: Wed, 6 May 2026 19:49:57 +0000 Subject: [PATCH] fix: register ResolveTenant globally in web middleware group MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- app/Providers/Filament/TenantPanelProvider.php | 5 +++-- bootstrap/app.php | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/Providers/Filament/TenantPanelProvider.php b/app/Providers/Filament/TenantPanelProvider.php index 8630427..3dea405 100644 --- a/app/Providers/Filament/TenantPanelProvider.php +++ b/app/Providers/Filament/TenantPanelProvider.php @@ -55,8 +55,9 @@ class TenantPanelProvider extends PanelProvider SubstituteBindings::class, DisableBladeIconComponents::class, DispatchServingFilamentEvent::class, - ResolveTenant::class, - CheckTenantStatus::class, + // ResolveTenant + CheckTenantStatus are now registered globally + // in bootstrap/app.php (web middleware group) so they run on + // Livewire endpoints too. No need to duplicate them here. ]) ->authMiddleware([ Authenticate::class, diff --git a/bootstrap/app.php b/bootstrap/app.php index b4c7ca7..c3f7ee1 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -21,6 +21,14 @@ return Application::configure(basePath: dirname(__DIR__)) | Request::HEADER_X_FORWARDED_PROTO | 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 { //