21
Июл
2021

Как реализовать мультиязычную авторизацию с помощью пакета 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('[email protected]'),
                        '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 не работает!

Источник: https://ru.stackoverflow.com/questions/1307526/%D0%9A%D0%B0%D0%BA-%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-%D0%BC%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D1%8F%D0%B7%D1%8B%D1%87%D0%BD%D1%83%D1%8E-%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8E-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%B0-socialite-%D0%BD%D0%B0-laravel

Тебе может это понравится...

Добавить комментарий