2.3 KiB
2.3 KiB
Integration & Reihenfolge
Wichtig: Bestehende Dateien werden hier NICHT verändert. Die folgenden Schritte beschreiben die geplante Integration.
Reihenfolge der Middleware (web-Gruppe)
Empfohlene Reihenfolge in App\Http\Kernel (schematisch):
App\Dev\SubdomainOptimizationGpt5\Http\Middleware\DomainBootstrap(NEU, sehr früh)\App\Http\Middleware\EncryptCookies\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse\Illuminate\Session\Middleware\StartSessionApp\Dev\SubdomainOptimizationGpt5\Http\Middleware\DomainSessionSync(NEU, nach StartSession)\Illuminate\View\Middleware\ShareErrorsFromSession\App\Http\Middleware\VerifyCsrfToken- ... weitere App-Middleware
Damit wird garantiert:
- Vor StartSession: Kein Sessionzugriff (DomainBootstrap ist „rein“)
- Nach StartSession: Synchronisierung von
user_shopin Session + Cookie (DomainSessionSync)
Container-Bindings
DomainBootstraperzeugt denDomainContextselbst (ohne Session) und registriert ihn perapp()->instance(DomainContext::class, $ctx)sowie zusätzlich als Request-Attributdomain.context.- Alte
DomainServiceProvider-Binding-Strategie kann damit schrittweise entfernt oder angepasst werden (muss nicht sofort).
Sticky-Shop-Verhalten
- Cookie
mvt_shop(konfigurierbar) trägt denuser_shop-Slug über Subdomains - Session hält kompakten Zustand:
ctx.user_shop(id, slug, host) - Optional: Legacy-Keys (
user_shop,user_shop_domain) zur Abwärtskompatibilität aktivierbar
Migrationspfad (schrittweise)
- NEUE Middleware registrieren (Kernel), alte Logik belassen
- DomainResolver in produktivem Code um Session-Zugriffe entlasten (später)
- Schrittweise Nutzung von
UserShopSessionManagerin Controllern/Views (statt direkter Session-Manipulation) - Nach Stabilisierung: Legacy-Keys deaktivieren (Konfiguration), Altpfade entfernen
Konfiguration
Siehe config/example.subdomain_optimization.php. Wichtig sind Domain-/Cookie-Parameter sowie die Option für Legacy-Keys.
Testplan (Auszug)
- Wechsel
{slug}.mivita.care→in.mivita.care→ Zurück-zum-Shop (Slug bleibt erhalten) - Wechsel
{slug}.mivita.care→checkout.mivita.care(Slug bleibt erhalten) - Zugriff
mivita.shop(Main Shop) setzt Fallback-Shop - Ungültige Subdomain erzeugt KEINE Session (nur Redirect/Fehler, je nach bestehender App-Logik)