*/ public function getTenants(): Collection { $user = auth()->user(); if (! $user instanceof User) { return Tenant::query()->whereRaw('1 = 0')->get(); } $tenants = $user->getTenants(Filament::getCurrentOrDefaultPanel()); if ($tenants instanceof Collection) { return $tenants; } return collect($tenants); } public function selectTenant(int $tenantId): void { $user = auth()->user(); if (! $user instanceof User) { abort(403); } $tenant = Tenant::query() ->where('status', 'active') ->whereKey($tenantId) ->first(); if (! $tenant instanceof Tenant) { abort(404); } if (! $user->canAccessTenant($tenant)) { abort(404); } $this->persistLastTenant($user, $tenant); $this->redirect(TenantDashboard::getUrl(tenant: $tenant)); } private function persistLastTenant(User $user, Tenant $tenant): void { if (Schema::hasColumn('users', 'last_tenant_id')) { $user->forceFill(['last_tenant_id' => $tenant->getKey()])->save(); return; } if (! Schema::hasTable('user_tenant_preferences')) { return; } UserTenantPreference::query()->updateOrCreate( ['user_id' => $user->getKey(), 'tenant_id' => $tenant->getKey()], ['last_used_at' => now()] ); } }