mivita/dev/subdomain-optimization-claude-v2/IMPLEMENTATION_v2_DOMAINS.md
2025-10-20 17:42:08 +02:00

160 lines
No EOL
5.3 KiB
Markdown

# Claude v2 Implementation mit Domain-Konfiguration
## ✅ Durchgeführte Verbesserungen
### 1. Domain-Konfiguration Integration
-**config/domains.php Support**: SubdomainResolver verwendet zentrale Domain-Konfiguration
-**Alle Domain-Typen unterstützt**: main, main-shop, crm, portal, checkout, user-shop
-**Reserved Subdomains**: Verhindert Konflikte mit System-Subdomains
-**Environment-Variables**: Flexible Konfiguration über .env
### 2. Erweiterte SubdomainResolver Middleware
-**6 Domain-Handler**: Spezialisierte Handler für jeden Domain-Typ
-**Intelligente Domain-Parsing**: Exakte Matches vor Pattern-Matching
-**Session-Domain-Auto-Config**: Automatische Session-Domain basierend auf Host
-**Default-Shop aus Config**: Verwendet `default_user_shop` aus domains.php
### 3. RouteServiceProvider Optimierung
-**Hotfix entfernt**: Keine DomainContext-Abhängigkeit mehr
-**Alle Domain-Routen geladen**: Vereinfachter, robuster Ansatz
-**Debug-Logging**: Bessere Nachverfolgbarkeit
## 🚀 Implementation
### Schritt 1: Neue Middleware kopieren
```bash
cp dev/subdomain-optimization-claude-v2/src/Http/Middleware/SubdomainResolver.php app/Http/Middleware/
```
### Schritt 2: Middleware in Kernel registrieren
**File: `app/Http/Kernel.php`**
```php
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// ⚡ WICHTIG: Nach StartSession, vor VerifyCsrfToken
\App\Http\Middleware\SubdomainResolver::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
// ... rest of middleware
],
];
```
### Schritt 3: Cache löschen
```bash
php artisan config:clear
php artisan route:clear
php artisan view:clear
```
## 🧪 Testing aller Domain-Typen
### 1. Main Domain (mivita.care)
```bash
curl -H "Host: mivita.care" http://localhost/
# Erwartung: Corporate Website, keine Shop-Daten
```
### 2. Shop Domain (mivita.shop)
```bash
curl -H "Host: mivita.shop" http://localhost/
# Erwartung: Default Shop (aloevera) geladen
```
### 3. User Shop (testuser.mivita.care)
```bash
curl -H "Host: testuser.mivita.care" http://localhost/
# Erwartung: UserShop 'testuser' geladen (falls existiert)
```
### 4. CRM (my.mivita.care)
```bash
curl -H "Host: my.mivita.care" http://localhost/
# Erwartung: CRM Interface, keine Shop-Daten
```
### 5. Portal (in.mivita.care)
```bash
curl -H "Host: in.mivita.care" http://localhost/
# Erwartung: Partner Portal, keine Shop-Daten
```
### 6. Checkout (checkout.mivita.care)
```bash
curl -H "Host: checkout.mivita.care" http://localhost/
# Erwartung: Checkout Interface, Shop-Session bleibt erhalten
```
### 7. Reserved Subdomain (www.mivita.care)
```bash
curl -H "Host: www.mivita.care" http://localhost/
# Erwartung: Redirect zu mivita.care
```
### 8. Unknown Domain
```bash
curl -H "Host: unknown.example.com" http://localhost/
# Erwartung: Redirect zu mivita.care
```
## 📋 Domain-Mapping Übersicht
| Host | Typ | Session Domain | Shop Data | Routes |
|------|-----|----------------|-----------|--------|
| `mivita.care` | main | `.mivita.care` | ❌ None | main.php |
| `mivita.shop` | main-shop | `.mivita.shop` | ✅ aloevera | shop.php |
| `{user}.mivita.care` | user-shop | `.mivita.care` | ✅ Dynamic | user-shop.php |
| `my.mivita.care` | crm | `.mivita.care` | ❌ None | crm.php |
| `in.mivita.care` | portal | `.mivita.care` | ❌ None | portal.php |
| `checkout.mivita.care` | checkout | `.mivita.care` | ✅ Preserved | checkout.php |
## 🔧 Weitere Konfiguration
### config/domains.php anpassen:
```php
'domains' => [
'shop' => [
'host' => env('APP_DOMAIN', 'mivita') . env('APP_TLD_SHOP', '.shop'),
'type' => 'main-shop',
'default_user_shop' => 'your-default-shop', // Anpassen!
],
// ... weitere Domains
],
```
### Environment Variables prüfen:
```env
APP_DOMAIN=mivita
APP_TLD_CARE=.care
APP_TLD_SHOP=.shop
APP_PROTOCOL=https://
APP_PRE_URL_CRM=my.
APP_PRE_URL_PORTAL=in.
APP_URL_CHECKOUT=checkout.
```
## ✅ Funktions-Checkliste
Nach der Implementation sollten folgende Features funktionieren:
- [ ] **User-Shop Subdomains**: `testuser.mivita.care` lädt korrekte UserShop-Daten
- [ ] **Main Shop**: `mivita.shop` lädt Default-Shop aus config
- [ ] **Main Care**: `mivita.care` zeigt Corporate Website ohne Shop-Daten
- [ ] **CRM/Portal**: `my.mivita.care` und `in.mivita.care` funktionieren
- [ ] **Checkout**: `checkout.mivita.care` behält Shop-Session
- [ ] **Reserved Redirects**: `www.mivita.care` → `mivita.care`
- [ ] **Unknown Redirects**: Fremde Domains → `mivita.care`
- [ ] **Session Domains**: Korrekte `.mivita.care` / `.mivita.shop` Konfiguration
- [ ] **URL Generation**: `route()` Helper funktioniert auf allen Domains
- [ ] **Warenkorb**: Funktioniert auf User-Shops und Main-Shop
- [ ] **Route Parameter**: Subdomain-Parameter werden korrekt entfernt
## 🎯 Nächste Schritte nach Implementation
1. **Hotfix-Code entfernen**: Siehe `HOTFIX_APPLIED.md` für Anleitung
2. **Domain-spezifische Features reaktivieren**: Legal-URL-Redirects, etc.
3. **Monitoring**: Domain-Resolution-Logging aktivieren
4. **Performance-Optimierung**: Bei Bedarf Domain-Caching hinzufügen