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

5.2 KiB

Domain Configuration Integration - Claude v2

🎯 Überblick

Die Claude v2 SubdomainResolver-Middleware wurde erweitert, um die config/domains.php Konfigurationsdatei zu verwenden. Dies sorgt für eine zentrale, wartbare Domain-Konfiguration.

📁 Unterstützte Domain-Typen aus config/domains.php

1. Main Domain (main)

'main' => [
    'host' => 'mivita.care',
    'type' => 'main',
]
  • Verhalten: Keine Shop-Daten, normale Corporate Website
  • Session: .mivita.care
  • Routing: routes/domains/main.php

2. Shop Domain (shop)

'shop' => [
    'host' => 'mivita.shop',
    'type' => 'main-shop',
    'default_user_shop' => 'aloevera',
]
  • Verhalten: Lädt Default-Shop (aloevera) aus Konfiguration
  • Session: .mivita.shop
  • Routing: routes/domains/shop.php

3. CRM Domain (crm)

'crm' => [
    'host' => 'my.mivita.care',
    'type' => 'crm',
]
  • Verhalten: CRM-Interface, keine Shop-Daten
  • Session: .mivita.care
  • Routing: routes/domains/crm.php

4. Portal Domain (portal)

'portal' => [
    'host' => 'in.mivita.care', 
    'type' => 'portal',
]
  • Verhalten: Partner-Portal, keine Shop-Daten
  • Session: .mivita.care
  • Routing: routes/domains/portal.php

5. Checkout Domain (checkout)

'checkout' => [
    'host' => 'checkout.mivita.care',
    'type' => 'checkout',
]
  • Verhalten: Behält vorhandene Shop-Session für Checkout
  • Session: .mivita.care
  • Routing: routes/domains/checkout.php

6. User Shop Subdomains (user-shop)

'user-shop' => [
    'host' => '{subdomain}.mivita.care',
    'type' => 'user-shop',
]
  • Verhalten: Dynamische User-Shops basierend auf Subdomain
  • Session: .mivita.care
  • Routing: routes/domains/user-shop.php

🔒 Reserved Subdomains

Die Konfiguration definiert reservierte Subdomains, die nicht als User-Shops verwendet werden können:

'reserved_subdomains' => [
    'my',       // CRM
    'in',       // Portal  
    'checkout', // Checkout
    'www',      // Standard
    'api',      // API
    'mail',     // Mail
],

🏗️ Parsing-Logik

Reihenfolge der Domain-Auflösung:

  1. Exakte Übereinstimmungen - Prüft main, shop, crm, portal, checkout
  2. User-Shop-Pattern - Prüft {subdomain}.mivita.care Pattern
  3. Reserved-Check - Stellt sicher, dass Subdomain nicht reserviert ist
  4. Unknown Fallback - Redirect zu main domain

Beispiel-Hosts:

'mivita.care'            type: 'main'
'mivita.shop'            type: 'main-shop'  
'my.mivita.care'         type: 'crm'
'in.mivita.care'         type: 'portal'
'checkout.mivita.care'   type: 'checkout'
'testuser.mivita.care'   type: 'user-shop', subdomain: 'testuser'
'www.mivita.care'        type: 'unknown' (reserved)
'unknown.example.com'    type: 'unknown'

⚙️ Session-Domain-Konfiguration

Die Middleware konfiguriert automatisch die richtige Session-Domain:

// Für .care Domains (main, crm, portal, checkout, user-shop):
Config::set('session.domain', '.mivita.care');

// Für .shop Domains:
Config::set('session.domain', '.mivita.shop');

🔗 URL-Generation

Die Middleware setzt config('app.url') für korrekte URL-Generation:

// Beispiele:
'https://mivita.care'
'https://mivita.shop' 
'https://testuser.mivita.care'
'https://my.mivita.care'

🛠️ Konfiguration anpassen

Environment-Variablen:

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.

Neue Domain hinzufügen:

  1. config/domains.php erweitern:
'new-domain' => [
    'host' => 'new.mivita.care',
    'type' => 'new-domain',
],
  1. SubdomainResolver.php erweitern:
'new-domain' => $this->handleNewDomain($request, $next, $domainInfo),
  1. Handler-Methode hinzufügen:
private function handleNewDomain($request, Closure $next, array $domainInfo)
{
    $this->configureSessionDomain($domainInfo['host']);
    Config::set('app.url', config('domains.protocol') . $domainInfo['host']);
    return $next($request);
}
  1. Route-Datei erstellen:
touch routes/domains/new-domain.php

🧪 Testing mit Domain-Config

Test-Szenarien:

# Main Domain
curl -H "Host: mivita.care" http://localhost/

# Shop Domain  
curl -H "Host: mivita.shop" http://localhost/

# User Shop
curl -H "Host: testuser.mivita.care" http://localhost/

# CRM
curl -H "Host: my.mivita.care" http://localhost/

# Portal
curl -H "Host: in.mivita.care" http://localhost/

# Checkout
curl -H "Host: checkout.mivita.care" http://localhost/

# Reserved Subdomain (should redirect)
curl -H "Host: www.mivita.care" http://localhost/

# Unknown Domain (should redirect)
curl -H "Host: unknown.example.com" http://localhost/

Vorteile der Config-Integration

  • Zentrale Verwaltung: Alle Domains in einer Datei
  • Umgebungs-spezifisch: Verschiedene Domains für dev/staging/prod
  • Erweiterbar: Neue Domains ohne Code-Änderungen
  • Validation: Reserved subdomains verhindern Konflikte
  • Wartbar: Klare Struktur und Dokumentation