diff --git a/app/Http/Middleware/SetLocale.php b/app/Http/Middleware/SetLocale.php
index d886ab0..d07fe12 100644
--- a/app/Http/Middleware/SetLocale.php
+++ b/app/Http/Middleware/SetLocale.php
@@ -44,6 +44,8 @@ class SetLocale
return $tenantLang;
}
- return config('app.locale', 'ro');
+ // Hard-code fallback la 'ro' — indiferent de APP_LOCALE din env,
+ // portal-ul client-facing e livrat cu RO ca implicit safe (RU disponibil via switcher).
+ return 'ro';
}
}
diff --git a/resources/views/partials/lang-switcher.blade.php b/resources/views/partials/lang-switcher.blade.php
index 8b7880c..9143fdc 100644
--- a/resources/views/partials/lang-switcher.blade.php
+++ b/resources/views/partials/lang-switcher.blade.php
@@ -1,45 +1,37 @@
@php
$locales = [
- 'ro' => ['label' => 'RO', 'full' => 'Română', 'flag' => '🇷🇴'],
- 'ru' => ['label' => 'RU', 'full' => 'Русский', 'flag' => '🇷🇺'],
- 'en' => ['label' => 'EN', 'full' => 'English', 'flag' => '🇬🇧'],
+ 'ro' => ['label' => 'RO', 'full' => 'Română'],
+ 'ru' => ['label' => 'RU', 'full' => 'Русский'],
+ 'en' => ['label' => 'EN', 'full' => 'English'],
];
$current = app()->getLocale();
- // Default: dark-glass style suits colored header (shop, tracking). Override via $style param.
$style = $style ?? 'chip';
+ $back = urlencode(request()->fullUrl());
@endphp
@if ($style === 'chip')
@else
- {{-- light style for pale backgrounds (invitations, auth pages) --}}
@endif
diff --git a/routes/web.php b/routes/web.php
index 215ea4c..1707ff4 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -129,16 +129,23 @@ Route::post('/t/{token}/approve/{kind}/{lineToken}', [\App\Http\Controllers\Trac
->where('lineToken', '[A-Za-z0-9]{16,32}')
->name('tracking.approve');
-// Locale switch — POST /locale/{lang} sets session and persists to user.
-Route::post('/locale/{lang}', function (Request $request, string $lang) {
+// Locale switch — GET/POST /locale/{lang} sets session and persists to user.
+// GET intentionally supported so simple links (no CSRF token) work; anyone
+// setting their own language is not a security concern.
+Route::match(['get', 'post'], '/locale/{lang}', function (Request $request, string $lang) {
if (! in_array($lang, ['ro', 'ru', 'en'], true)) {
abort(404);
}
$request->session()->put('locale', $lang);
+ $request->session()->save(); // force write to session store before redirecting
if ($u = $request->user()) {
$u->forceFill(['locale' => $lang])->saveQuietly();
}
- return back();
+ // Prefer explicit redirect from query, otherwise fall back to referer / homepage
+ $to = $request->query('redirect')
+ ?: $request->header('referer')
+ ?: '/';
+ return redirect($to);
})->name('locale.switch');
// PWA — manifest pentru panou central (service.mir.md).