user(); if (! $user instanceof User) { abort(403); } $workspaceId = app(WorkspaceContext::class)->currentWorkspaceId($request); if ($workspaceId === null) { return redirect()->to('/admin/choose-workspace'); } $validated = $request->validate([ 'tenant_id' => ['required', 'integer'], ]); $tenant = Tenant::query() ->where('status', 'active') ->where('workspace_id', $workspaceId) ->whereKey($validated['tenant_id']) ->first(); if (! $tenant instanceof Tenant) { abort(404); } if (! $user->canAccessTenant($tenant)) { abort(404); } $this->persistLastTenant($user, $tenant); return redirect()->to(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()] ); } }