Как реализовать мультиязычную авторизацию с помощью пакета Socialite на Laravel 8
На сайте меняется локализация через middleware:
public function handle($request, Closure $next)
{
app()->setLocale($request->segment(1));
return $next($request);
}
То есть по ссылке: http://domain.com/en/home уже отображается view с англ. переводом.
Так же подключён пакет Socialite для авторизации пользователей.
Контроллер SocialController имеет два метода:
class SocialController extends Controller
{
public function redirectToSocialProvider($provider)
{
return Socialite::driver($provider)->redirect();
}
public function loginWithSocial($provider)
{
try {
$user = Socialite::driver($provider)->user();
$isUser = User::where('email', $user->email)->first();
if($isUser){
Auth::login($isUser);
return redirect('/');
}else{
$createUser = User::create([
'name' => $user->name,
'email' => $user->email,
'image' => $user->avatar,
'provider_id_'.$provider => $user->id,
'password' => encrypt('admin@123'),
'role' => 'user'
]);
Auth::login($createUser);
return redirect('/');
}
} catch (Exception $exception) {
dd($exception->getMessage());
}
}
}
Подскажите как после авторизации пользователя с помощью пакета Socialite, в функцию loginWithSocial, где происходит авторизация/регистрация пользователя, передать значение локализации, с которой была авторизация?
То есть, пользователь, который авторизуется по ссылке http://domain.com/en/login после авторизации попадает на главную (русскоязычную) страницу сайта, а не на англоязычную.
P.S. Метод описанный по ссылке https://stackoverflow.com/questions/59360934/laravel-socialitegoogle-login-redirect-to-multiple-views и этой https://laracasts.com/discuss/channels/laravel/socialite-provider-login-page-language не работает!