5.2 KiB
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:
- Exakte Übereinstimmungen - Prüft main, shop, crm, portal, checkout
- User-Shop-Pattern - Prüft
{subdomain}.mivita.carePattern - Reserved-Check - Stellt sicher, dass Subdomain nicht reserviert ist
- 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:
- config/domains.php erweitern:
'new-domain' => [
'host' => 'new.mivita.care',
'type' => 'new-domain',
],
- SubdomainResolver.php erweitern:
'new-domain' => $this->handleNewDomain($request, $next, $domainInfo),
- 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);
}
- 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