mivita/app/Http/Middleware/Localization.php
2026-04-10 17:15:27 +02:00

38 lines
944 B
PHP

<?php
namespace App\Http\Middleware;
use App\Services\LocaleGuard;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Session;
class Localization
{
/**
* Session locale must be validated: arbitrary strings break Symfony/Carbon
* (e.g. scanner payloads stored as "locale").
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): mixed
{
if (! Session::has('locale')) {
return $next($request);
}
$raw = Session::get('locale');
$normalized = LocaleGuard::normalize(is_string($raw) ? $raw : null);
if ($normalized !== null) {
App::setLocale($normalized);
return $next($request);
}
Session::forget('locale');
return $next($request);
}
}