Socialite: перенаправление на основе роли после входа в систему - PullRequest
0 голосов
/ 24 марта 2020

Я использую socialite для входа в систему пользователя вместе с аутентификацией на основе форм.

После входа в систему пользователь должен быть перенаправлен на соответствующие им маршруты в зависимости от роли.

 public function authenticated(Request $request, User $user)
    {
        // $role = Auth::user()->isRole();
        $role = $user->role;

        switch ($role) {
            case 'admin':
                return redirect()->route('admin');
            break;
            case 'manager':
                return redirect()->route('manager');
            break;
            case 'customer':
            break;
            default:
            return redirect()->route('admin');
        }
    }
public function handleProviderCallback($provider)
    {
        $socialUser = Socialite::driver($provider)->user();

        $user = User::where(['email' => $socialUser->getEmail()])->first();

        if($user){
            Auth::login($user, true);
        }else{
            $user = User::create([
                'name'          => $socialUser->getName(),
                'email'         => $socialUser->getEmail(),
                'avatar'         => $socialUser->getAvatar(),
                'provider_id'   => $socialUser->getId(),
                'provider'      => $provider,
                ]);
                Auth::login($user, true);
            }

            // return redirect($this->redirectTo);
            // Instead
            // Redirect based on role
        }

Примечание. Я не хочу копировать содержимое метода authenticated () в handleProviderCallback () только для того, чтобы не повторяться. Есть ли способ вызвать метод authenticated () или я могу использовать промежуточное ПО RedirectIfAuthenticated?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...