57 lines
2.2 KiB
PHP
57 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Middleware;
|
|
|
|
use Closure;
|
|
use Illuminate\Http\Request;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
class ThemeMiddleware
|
|
{
|
|
/**
|
|
* Handle an incoming request.
|
|
*
|
|
* @param Closure(Request): (Response) $next
|
|
*/
|
|
public function handle(Request $request, Closure $next): Response
|
|
{
|
|
$host = $request->getHost();
|
|
$path = $request->path();
|
|
|
|
// Theme-Switching über Subdomains
|
|
if (str_contains($host, 'b2in')) {
|
|
config(['app.theme' => 'b2in']);
|
|
} elseif (str_contains($host, 'b2a') || str_contains($host, 'bridges2america')) {
|
|
config(['app.theme' => 'b2a']);
|
|
} elseif (str_contains($host, 'stileigentum')) {
|
|
config(['app.theme' => 'stileigentum']);
|
|
} elseif (str_contains($host, 'style2own')) {
|
|
config(['app.theme' => 'style2own']);
|
|
}
|
|
|
|
// Theme-Switching über URL-Parameter (für Testing)
|
|
if ($request->has('theme')) {
|
|
$theme = $request->get('theme');
|
|
if (in_array($theme, ['b2in', 'b2a', 'stileigentum', 'style2own'])) {
|
|
config(['app.theme' => $theme]);
|
|
}
|
|
}
|
|
|
|
// Theme-Switching über Pfade (für lokale Entwicklung ohne Domain-Setup)
|
|
if (str_starts_with($path, 'b2in/')) {
|
|
config(['app.theme' => 'b2in']);
|
|
$request->server->set('REQUEST_URI', '/'.substr($path, 5)); // Entferne 'b2in/' vom Pfad
|
|
} elseif (str_starts_with($path, 'b2a/') || str_starts_with($path, 'bridges2america/')) {
|
|
config(['app.theme' => 'b2a']);
|
|
$request->server->set('REQUEST_URI', '/'.substr($path, 4)); // Entferne 'b2a/' vom Pfad
|
|
} elseif (str_starts_with($path, 'stileigentum/')) {
|
|
config(['app.theme' => 'stileigentum']);
|
|
$request->server->set('REQUEST_URI', '/'.substr($path, 13)); // Entferne 'stileigentum/' vom Pfad
|
|
} elseif (str_starts_with($path, 'style2own/')) {
|
|
config(['app.theme' => 'style2own']);
|
|
$request->server->set('REQUEST_URI', '/'.substr($path, 10)); // Entferne 'style2own/' vom Pfad
|
|
}
|
|
|
|
return $next($request);
|
|
}
|
|
}
|