diff --git a/src/Controllers/Language.php b/src/Controllers/Language.php index 53e81b9..c5cbc06 100644 --- a/src/Controllers/Language.php +++ b/src/Controllers/Language.php @@ -21,7 +21,7 @@ private function setLocale($locale, $request) $locale = config('app.locale'); } - if (Auth::check()) { + if (Auth::check() && Auth::user()->getAttribute('locale') instanceof \Illuminate\Support\Collection) { Auth::user()->setAttribute('locale', $locale)->save(); } else { $request->session()->put('locale', $locale); @@ -60,6 +60,8 @@ public function back($locale, Request $request) $url = config('language.back', 'session') === 'referer' ? $this->getUrlFromReferer($locale, $request) : $this->getUrlFromSession($locale, $request); + + $url = $request->url() == $url ? url('/') : $url; return redirect( $url diff --git a/src/Middleware/SetLocale.php b/src/Middleware/SetLocale.php index 9f2b658..83e1a46 100644 --- a/src/Middleware/SetLocale.php +++ b/src/Middleware/SetLocale.php @@ -86,6 +86,8 @@ public function handle($request, Closure $next) { if ($request->has('lang')) { $this->setLocale($request->get('lang')); + } elseif ($request->session()->get('locale')) { + $this->setLocale($request->session()->get('locale')); } elseif (auth()->check()) { $this->setUserLocale(); } else {