tests updates

This commit is contained in:
Mark Gregory
2026-07-24 14:25:34 +01:00
parent c74b95e78c
commit 3dabaf17a7
2 changed files with 40 additions and 5 deletions
@@ -1,19 +1,53 @@
<?php <?php
namespace Modules\Localization\Http\Middleware; namespace Modules\Localization\Http\Middleware;
use Closure; use Closure;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Schema;
use Modules\Localization\Models\Locale; use Modules\Localization\Models\Locale;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
final class SetLocale final class SetLocale
{ {
public function handle(Request $request, Closure $next): Response public function handle(Request $request, Closure $next): Response
{ {
$code = $request->route('locale') ?: $request->session()->get(config('localization.session_key')); $sessionKey = (string) config('localization.session_key', 'locale');
if (! $code) { $code = Locale::query()->where('is_default', true)->value('code') ?: config('localization.default_locale'); } $fallback = (string) config('localization.default_locale', config('app.locale', 'en'));
if (Locale::query()->where('code', $code)->where('is_active', true)->exists()) {
app()->setLocale($code); $code = $request->route('locale');
$request->session()->put(config('localization.session_key'), $code);
if (! $code && $request->hasSession()) {
$code = $request->session()->get($sessionKey);
} }
if (! Schema::hasTable('locales')) {
app()->setLocale(is_string($code) && $code !== '' ? $code : $fallback);
return $next($request);
}
if (! $code) {
$code = Locale::query()
->where('is_default', true)
->value('code') ?: $fallback;
}
$isActive = Locale::query()
->where('code', $code)
->where('is_active', true)
->exists();
if ($isActive) {
app()->setLocale((string) $code);
if ($request->hasSession()) {
$request->session()->put($sessionKey, $code);
}
} else {
app()->setLocale($fallback);
}
return $next($request); return $next($request);
} }
} }
+1
View File
@@ -38,6 +38,7 @@
"Api": true, "Api": true,
"Enterprise": true, "Enterprise": true,
"Commerce": true, "Commerce": true,
"Products": true,
"Security": true, "Security": true,
"Automation": true, "Automation": true,
"AI": true, "AI": true,