169 lines
No EOL
5.6 KiB
Markdown
169 lines
No EOL
5.6 KiB
Markdown
# Subdomain Optimization - Claude v2 (Lightweight Solution)
|
|
|
|
## 🎯 Ziel
|
|
|
|
Eine **einfache, funktionierende, leichtgewichtige** Lösung für das Domain- und Subdomain-Handling basierend auf dem ursprünglich funktionierenden `Subdomain.php` Middleware-Ansatz.
|
|
|
|
## ❌ Probleme der bisherigen Implementierungen
|
|
|
|
### 1. Aktuelle Version (DomainServiceProvider + DomainResolver)
|
|
- **Problem**: Zu frühe Initialisierung im Service Provider
|
|
- **Problem**: Mehrere Sessions werden gestartet
|
|
- **Problem**: Komplexe Architektur mit DomainContext-Klassen
|
|
- **Problem**: Session-Timing-Issues
|
|
|
|
### 2. GPT-5-v3 Version
|
|
- **Problem**: Zu umfangreich und komplex
|
|
- **Problem**: Zu starkes Session-Handling
|
|
- **Problem**: Input/Error werden dauerhaft gespeichert
|
|
- **Problem**: Session-basierter Warenkorb wird ständig neu initialisiert
|
|
- **Problem**: Checkout funktioniert nicht mehr
|
|
|
|
### 3. Ursprüngliche Subdomain.php
|
|
- ✅ **Funktionierte**, aber war rudimentär
|
|
- ✅ Einfacher Ansatz
|
|
- ❌ Fehlende Fehlerbehandlung
|
|
- ❌ Keine Dokumentation
|
|
|
|
## ✅ Claude v2 Lösung - Vorteile
|
|
|
|
### Einfachheit
|
|
- **Nur 1 Middleware-Datei** (ca. 200 LOC)
|
|
- **Keine zusätzlichen Service-Klassen** erforderlich
|
|
- **Keine DomainContext-Objekte**
|
|
- **Kein frühes Service-Provider-Bootstrapping**
|
|
|
|
### Funktionalität
|
|
- ✅ Unterstützt User-Subdomains (`user.mivita.care`)
|
|
- ✅ Unterstützt Main-Shop (`mivita.shop`)
|
|
- ✅ Unterstützt Main-Care (`mivita.care`)
|
|
- ✅ Korrekte Session-Domain-Konfiguration
|
|
- ✅ Proper URL-Generation für alle Fälle
|
|
- ✅ Shop-Validierung (aktiv, bezahlt)
|
|
|
|
### Robustheit
|
|
- ✅ Asset/API-Request-Filtering
|
|
- ✅ Graceful Redirects für unbekannte Domains
|
|
- ✅ Fehlerbehandlung mit HTTP 503 für inaktive Shops
|
|
- ✅ Route-Parameter-Cleanup
|
|
|
|
## 🏗️ Architektur
|
|
|
|
### EarlyDomainParser + Middleware Approach
|
|
```
|
|
EarlyDomainParser (App\Domain\)
|
|
├── Bootstrap-safe domain parsing
|
|
├── Request-level caching
|
|
├── Config/domains.php integration
|
|
└── Fallback to environment variables
|
|
|
|
SubdomainResolver Middleware
|
|
├── Uses EarlyDomainParser for domain info
|
|
├── User Shop Handling
|
|
├── Main Shop Handling
|
|
├── Main Care Handling
|
|
├── CRM/Portal/Checkout Handling
|
|
└── Context Setup (Session + Config)
|
|
|
|
RouteServiceProvider
|
|
├── Uses EarlyDomainParser during bootstrap
|
|
├── Domain-aware route loading
|
|
└── Conditional route loading by domain type
|
|
```
|
|
|
|
### Execution Flow
|
|
1. **Request kommt rein** → Middleware wird ausgeführt
|
|
2. **Domain wird geparst** → Typ wird bestimmt
|
|
3. **Je nach Typ**:
|
|
- User-Shop: UserShop laden, Session setzen
|
|
- Main-Shop: Default-Shop laden
|
|
- Main-Care: Session clearen
|
|
4. **Session-Domain konfigurieren**
|
|
5. **App-URL setzen**
|
|
6. **Request weiterleiten**
|
|
|
|
## 📁 Dateien
|
|
|
|
```
|
|
dev/subdomain-optimization-claude-v2/
|
|
├── README.md # Diese Dokumentation
|
|
├── IMPLEMENTATION.md # Implementierungs-Anleitung
|
|
├── TESTING.md # Test-Szenarien
|
|
├── src/Services/EarlyDomainParser.php # Bootstrap-safe Domain Parser
|
|
├── src/Http/Middleware/
|
|
│ └── SubdomainResolver.php # Optimized Middleware
|
|
└── src/Providers/
|
|
└── RouteServiceProvider.php # Updated Route Provider
|
|
```
|
|
|
|
**Note**: EarlyDomainParser wurde nach `app/Domain/EarlyDomainParser.php` verschoben (Namespace: `App\Domain\EarlyDomainParser`).
|
|
|
|
## 🔧 Domain-Konfiguration
|
|
|
|
### Unterstützte Domain-Typen (basierend auf config/domains.php):
|
|
|
|
1. **User-Shop**: `{username}.mivita.care`
|
|
- Lädt UserShop basierend auf Subdomain
|
|
- Session-Domain: `.mivita.care`
|
|
- Post-Route: `user/`
|
|
|
|
2. **Main-Shop**: `mivita.shop`
|
|
- Lädt Default-Shop aus config (`default_user_shop`)
|
|
- Session-Domain: `.mivita.shop`
|
|
- Post-Route: `user/`
|
|
|
|
3. **Main-Care**: `mivita.care`
|
|
- Keine Shop-Daten
|
|
- Session-Domain: `.mivita.care`
|
|
- Session-Cleanup
|
|
|
|
4. **CRM**: `my.mivita.care`
|
|
- Session-Domain: `.mivita.care`
|
|
- Session-Cleanup
|
|
|
|
5. **Portal**: `in.mivita.care`
|
|
- Session-Domain: `.mivita.care`
|
|
- Session-Cleanup
|
|
|
|
6. **Checkout**: `checkout.mivita.care`
|
|
- Session-Domain: `.mivita.care`
|
|
- Behält Shop-Session-Daten für Checkout
|
|
|
|
7. **Unknown**: Alle anderen
|
|
- Redirect zu Main-URL aus config
|
|
|
|
## ⚡ Performance
|
|
|
|
- **Request-Level Caching**: EarlyDomainParser cached Parsing-Ergebnisse pro Request
|
|
- **Bootstrap-Safe**: Funktioniert vor Service-Container-Initialisierung
|
|
- **Single Database Query**: Nur bei User-Shops
|
|
- **Minimal Memory Footprint**: Statische Klassen mit Smart Caching
|
|
- **Config Integration**: Nutzt Laravel Config mit Fallback zu Env-Variablen
|
|
|
|
## 🚀 Vorteile gegenüber anderen Versionen
|
|
|
|
| Aspekt | Subdomain.php | DomainServiceProvider | GPT-5-v3 | **Claude v2** |
|
|
|--------|---------------|----------------------|----------|---------------|
|
|
| **Komplexität** | Niedrig | Hoch | Sehr Hoch | **Niedrig** |
|
|
| **Session-Issues** | Keine | Viele | Viele | **Keine** |
|
|
| **Warenkorb** | ✅ | ❌ | ❌ | **✅** |
|
|
| **Wartbarkeit** | Niedrig | Mittel | Niedrig | **Hoch** |
|
|
| **Performance** | Gut | Schlecht | Mittel | **Gut** |
|
|
| **Dokumentation** | Keine | Wenig | Viel | **Vollständig** |
|
|
|
|
## 🛠️ Implementation
|
|
|
|
Siehe `IMPLEMENTATION.md` für detaillierte Schritt-für-Schritt Anleitung.
|
|
|
|
## 🧪 Testing
|
|
|
|
Siehe `TESTING.md` für umfassende Test-Szenarien.
|
|
|
|
## 📋 Key Features
|
|
|
|
- ✅ **Einfach zu verstehen und zu warten**
|
|
- ✅ **Funktioniert ohne Session-Probleme**
|
|
- ✅ **Erhält Warenkorb-Funktionalität**
|
|
- ✅ **Korrekte URL-Generation**
|
|
- ✅ **Robuste Fehlerbehandlung**
|
|
- ✅ **Keine Breaking Changes für bestehenden Code** |