# Subdomain & Session Handling – Optimierungsvorschlag (GPT-5) Dieses Paket enthält einen sauberen, zweistufigen Ansatz für Domain- und Session-Handling, um Probleme mit doppelt initialisierten Sessions und inkonsistenten `user_shop`-Zuständen zu vermeiden. Es ändert keine bestehenden Dateien. Integration ist in `INTEGRATION.md` beschrieben. ## Ziele - Frühe Domain-Auflösung ohne Session-Zugriff (vermeidet doppelte Session-Erstellung) - Späte, robuste Session-/Cookie-Synchronisierung (Sticky-UserShop über Subdomains) - Kompakte, gut getestete Einheiten (Middleware + Service) - Abwärtskompatible Session-Keys optional möglich (für schrittweise Migration) ## Architektur (Kurzfassung) - DomainBootstrap (früh, vor StartSession): - Parst Host → `DomainContext` (ohne Sessionzugriff) - Setzt `config('session.domain')` und `config('app.url')` frühzeitig - Hinterlegt `DomainContext` im Container/Request-Attribute - DomainSessionSync (spät, nach StartSession): - Synchronisiert `user_shop` in Session und Cookie (sticky über Subdomains) - Nutzt `UserShopSessionManager` (Service) - Hält sich strikt an die „kein Sessionzugriff vor StartSession“-Regel - UserShopSessionManager: - Vereinheitlicht Lesen/Schreiben von `user_shop` (Session + Cookie) - Optional: Legacy-Keys (`session('user_shop')`) für Bestands-Views/Controller setzen ## Dateien - `src/Http/Middleware/DomainBootstrap.php` - `src/Http/Middleware/DomainSessionSync.php` - `src/Services/UserShopSessionManager.php` - `config/example.subdomain_optimization.php` (Beispielkonfiguration) - `INTEGRATION.md` (Reihenfolge/Registrierung & Migrationspfad) - `docs/ADR-001-domain-session-handling.md` (Entscheidungsdokumentation) ## Warum dieser Ansatz? Die aktuelle Logik greift in Teilen zu früh auf die Session zu, bevor die Kernel-`StartSession`-Middleware aktiv ist. Das kann zu zwei Session-IDs in einem Request führen und verhindert ein konsistentes Sticky-Shop-Verhalten über `in.` und `checkout.`. Der zweistufige Ansatz trennt strikt: - Domänenauflösung/Kontext (rein, keine Session) - Zustandssynchronisierung (nur nach Start der Session) Damit werden doppelte Sessions vermieden und der `user_shop` zuverlässig über Subdomains hinweg getragen. Weitere Details siehe `INTEGRATION.md` und `docs/ADR-001-domain-session-handling.md`.