Files
kulakpos_web/app/Http/Middleware/SetLocale.php

64 lines
1.7 KiB
PHP

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Symfony\Component\HttpFoundation\Response;
class SetLocale
{
public function handle(Request $request, Closure $next): Response
{
// Redirect to install if not installed
if (($request->is('/') || $request->is('login')) && !file_exists(storage_path('installed'))) {
return redirect('install');
}
// If DB connection fails → skip locale logic
try {
DB::connection()->getPdo();
} catch (\Throwable $e) {
app()->setLocale('en');
return $next($request);
}
// If options table does NOT exist → fallback
if (!Schema::hasTable('options')) {
app()->setLocale('en');
return $next($request);
}
// ---------- Locale Logic ----------
if (auth()->check()) {
if ($request->has('lang')) {
auth()->user()->update(['lang' => $request->lang]);
}
$lang = auth()->user()->lang
?? get_option('general')['default_lang']
?? 'en';
} elseif ($request->has('lang') || session()->has('lang')) {
if ($request->has('lang')) {
session(['lang' => $request->lang]);
}
$lang = session('lang')
?? get_option('general')['default_lang']
?? 'en';
} else {
$lang = get_option('general')['default_lang'] ?? 'en';
}
app()->setLocale($lang);
return $next($request);
}
}