diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index c9b5b3406b32f01e8d4dc52200b5e0d981546c22..24a8c577ad62a61ca1483aa960a79c646daf5593 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -16,6 +16,7 @@ class Kernel extends HttpKernel protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \Fideloper\Proxy\TrustProxies::class, + \App\Http\Middleware\LocalizationRedirect::class, // \App\Http\Middleware\VerifyCsrfToken::class, ]; diff --git a/app/Http/Middleware/LocalizationRedirect.php b/app/Http/Middleware/LocalizationRedirect.php new file mode 100644 index 0000000000000000000000000000000000000000..f9d9e37da710a023db9ac29679dae2d8596f40de --- /dev/null +++ b/app/Http/Middleware/LocalizationRedirect.php @@ -0,0 +1,52 @@ +<?php + +namespace App\Http\Middleware; + +use Closure; +use LaravelLocalization; + +class LocalizationRedirect +{ + /** + * Handle an incoming request. + * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @return mixed + */ + public function handle($request, Closure $next) + { + // We only redirect to the TLDs in the production version + if(env("APP_ENV", "") !== "production"){ + return $next($request); + } + + $locale = LaravelLocalization::getCurrentLocale(); + $host = $request->getHttpHost(); + if($host !== "metager.de" && $locale == "de"){ + $url = $request->url(); + $url = str_replace($host, "metager.de", $url); + $url = preg_replace("/^http:\/\//", "https://", $url); + $url = preg_replace("/^(https:\/\/[^\/]+)\/de/", "$1", $url); + return redirect($url); + } + + if($host !== "metager.es" && $locale == "es"){ + $url = $request->url(); + $url = str_replace($host, "metager.es", $url); + $url = preg_replace("/^http:\/\//", "https://", $url); + $url = preg_replace("/^(https:\/\/[^\/]+)\/es/", "$1", $url); + return redirect($url); + } + + if($host !== "metager.org" && $locale == "en"){ + $url = $request->url(); + $url = str_replace($host, "metager.org", $url); + $url = preg_replace("/^http:\/\//", "https://", $url); + $url = preg_replace("/^(https:\/\/[^\/]+)\/en/", "$1", $url); + return redirect($url); + } + + return $next($request); + } +}