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

3.6 KiB

Hotfix für DomainContext Binding-Problem

🚨 Problem

Der RouteServiceProvider versucht DomainContext aus dem Service Container zu holen, aber die Klasse hat required Parameter und kann nicht automatisch aufgelöst werden.

Sofort-Lösung (Hotfix)

Option 1: RouteServiceProvider temporär deaktivieren

File: app/Providers/RouteServiceProvider.php

Kommentiere die problematische Zeile aus:

protected function loadDomainAwareRoutes(): void
{
    // TEMPORÄR AUSKOMMENTIERT BIS CLAUDE v2 IMPLEMENTIERT
    // /** @var DomainContext $context */
    // $context = app(DomainContext::class);
    
    // Fallback: Lade alle Routen für alle Domains
    $this->loadAllDomainRoutesForCaching();
    
    // Original code auskommentiert:
    /*
    $this->loadSharedRoutes();
    if (config('app.debug')) {
        \Log::channel('domain')->info('loadDomainAwareRoutes', ['context' => $context]);
    }
    match ($context->type) {
        'main' => $this->loadDomainRoutes('main', 'main.php'),
        'main-shop' => [
            $this->loadDomainRoutes('shop', 'shop.php'),
            $this->loadDomainRoutes('portal', 'portal.php'),
        ],
        'user-shop' => [
            $this->loadDomainRoutes('user-shop', 'user-shop.php'),
            $this->loadDomainRoutes('portal', 'portal.php'),
        ],
        'crm' => $this->loadDomainRoutes('crm', 'crm.php'),
        'portal' => $this->loadDomainRoutes('portal', 'portal.php'),
        'checkout' => $this->loadDomainRoutes('checkout', 'checkout.php'),
        default => $this->loadAllDomainRoutesForCaching(),
    };
    */
}

Option 2: DomainServiceProvider temporär deaktivieren

File: config/app.php

'providers' => [
    // ... andere providers
    
    // TEMPORÄR AUSKOMMENTIERT:
    // App\Providers\DomainServiceProvider::class,
    
    // ... rest of providers
];

🎯 Permanente Lösung: Claude v2 Implementation

Nach dem Hotfix, implementiere Claude v2:

# 1. Hotfix anwenden (siehe oben)
# 2. Cache löschen
php artisan config:clear
php artisan route:clear

# 3. Claude v2 implementieren
cp dev/subdomain-optimization-claude-v2/src/Http/Middleware/SubdomainResolver.php app/Http/Middleware/

# 4. Middleware registrieren in app/Http/Kernel.php
# (siehe IMPLEMENTATION.md für Details)

# 5. RouteServiceProvider zurück auf einfache Routen
# (entferne domain-aware routing logic)

🔄 RouteServiceProvider für Claude v2 anpassen

Nach Claude v2 Implementation, vereinfache den RouteServiceProvider:

protected function loadDomainAwareRoutes(): void
{
    // Einfacher Ansatz: Lade Standard-Web-Routen
    // Domain-Logic wird von SubdomainResolver-Middleware behandelt
    
    $this->loadSharedRoutes();
    
    // Lade alle Web-Routen (Domain-Filtering passiert in Middleware)
    Route::group([], base_path('routes/web.php'));
    
    // Optional: Spezielle Domain-Routen falls nötig
    if (file_exists(base_path('routes/domains'))) {
        foreach (glob(base_path('routes/domains/*.php')) as $routeFile) {
            Route::group([], $routeFile);
        }
    }
}

Sofortige Ausführung

Führe diesen Hotfix jetzt sofort aus:

# Backup erstellen
cp app/Providers/RouteServiceProvider.php app/Providers/RouteServiceProvider.php.backup

# Config auskommentieren
sed -i 's/App\\Providers\\DomainServiceProvider::class,/\/\/ App\\Providers\\DomainServiceProvider::class, \/\/ TEMPORÄR DEAKTIVIERT/' config/app.php

# Cache löschen
php artisan config:clear
php artisan route:clear

# Test ob Anwendung läuft
php artisan route:list

Danach sollte die Anwendung wieder laufen und du kannst in Ruhe Claude v2 implementieren.