59 lines
1.7 KiB
PHP
59 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Middleware;
|
|
|
|
use Closure;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\UrlGenerator;
|
|
use Illuminate\Support\Facades\URL;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
/**
|
|
* Middleware um die URL-Konfiguration basierend auf der aktuellen Domain zu setzen.
|
|
*
|
|
* Diese Middleware muss sehr früh im Request-Lifecycle ausgeführt werden,
|
|
* um sicherzustellen, dass url() und asset() die richtige Domain verwenden.
|
|
*/
|
|
class SetDomainUrl
|
|
{
|
|
/**
|
|
* Handle an incoming request.
|
|
*/
|
|
public function handle(Request $request, Closure $next): Response
|
|
{
|
|
$host = $request->getHost();
|
|
|
|
// Suche nach der Domain-Konfiguration
|
|
$domainConfig = null;
|
|
$domains = config('domains.domains', []);
|
|
|
|
foreach ($domains as $name => $config) {
|
|
if (is_array($config) && isset($config['domain_name']) && $config['domain_name'] === $host) {
|
|
$domainConfig = $config;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Wenn eine Domain-Konfiguration gefunden wurde, setze die URL
|
|
if ($domainConfig && isset($domainConfig['url'])) {
|
|
$domainUrl = $domainConfig['url'];
|
|
|
|
// URL-Generator konfigurieren
|
|
URL::forceRootUrl($domainUrl);
|
|
URL::forceScheme(parse_url($domainUrl, PHP_URL_SCHEME) ?: 'https');
|
|
|
|
// Asset-Root setzen
|
|
/** @var UrlGenerator $urlGenerator */
|
|
$urlGenerator = app('url');
|
|
$urlGenerator->useAssetOrigin($domainUrl);
|
|
|
|
// Config aktualisieren
|
|
config([
|
|
'app.url' => $domainUrl,
|
|
'app.asset_url' => $domainUrl,
|
|
]);
|
|
}
|
|
|
|
return $next($request);
|
|
}
|
|
}
|