Files
timebank-cc-public/app/Http/Middleware/StoreUserLangPreference.php
Ronald Huynen 2547717edb Initial commit
2026-03-23 21:37:59 +01:00

63 lines
2.5 KiB
PHP

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
class StoreUserLangPreference
{
/**
* Handle an incoming request.
* Store the active profile's language preference according to the current locale in the database.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
$activeProfile = getActiveProfile();
if ($activeProfile) {
$currentLocale = LaravelLocalization::getCurrentLocale();
$profile_lang = $activeProfile->lang_preference;
// Check if this is an email verification route (both /email/verify/... and /*/email/verified)
$isVerificationRoute = $request->is('email/verify/*') || $request->is('*/email/verified');
// If this is the start of email verification flow, store original locale before updating
if ($isVerificationRoute && !session()->has('verification_original_locale')) {
session(['verification_original_locale' => $profile_lang]);
\Log::info('StoreUserLangPreference: Stored original locale for verification route', [
'route' => $request->path(),
'original_locale' => $profile_lang,
'current_locale' => $currentLocale,
]);
}
// Skip updating lang_preference during email verification flow
// to preserve the user's original locale
$isEmailVerificationFlow = session()->has('verification_original_locale');
if ($currentLocale && $currentLocale != $profile_lang && !$isEmailVerificationFlow) {
\Log::info('StoreUserLangPreference: Updating lang_preference', [
'profile_id' => $activeProfile->id,
'from' => $profile_lang,
'to' => $currentLocale,
]);
$activeProfile->update(['lang_preference' => $currentLocale]);
} elseif ($isEmailVerificationFlow) {
\Log::info('StoreUserLangPreference: Skipping update during verification flow', [
'profile_id' => $activeProfile->id,
'current_locale' => $currentLocale,
'profile_lang' => $profile_lang,
]);
}
}
return $next($request);
}
}