tests updates
This commit is contained in:
@@ -1,19 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Localization\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Modules\Localization\Models\Locale;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
final class SetLocale
|
||||
{
|
||||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
$code = $request->route('locale') ?: $request->session()->get(config('localization.session_key'));
|
||||
if (! $code) { $code = Locale::query()->where('is_default', true)->value('code') ?: config('localization.default_locale'); }
|
||||
if (Locale::query()->where('code', $code)->where('is_active', true)->exists()) {
|
||||
app()->setLocale($code);
|
||||
$request->session()->put(config('localization.session_key'), $code);
|
||||
$sessionKey = (string) config('localization.session_key', 'locale');
|
||||
$fallback = (string) config('localization.default_locale', config('app.locale', 'en'));
|
||||
|
||||
$code = $request->route('locale');
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
"Api": true,
|
||||
"Enterprise": true,
|
||||
"Commerce": true,
|
||||
"Products": true,
|
||||
"Security": true,
|
||||
"Automation": true,
|
||||
"AI": true,
|
||||
|
||||
Reference in New Issue
Block a user