App\Http\Controllers\Frontend\Auth\SocialLoginController::login PHP Method

login() public method

public login ( Illuminate\Http\Request $request, $provider ) : Illuminate\Http\RedirectResponse | mixed
$request Illuminate\Http\Request
$provider
return Illuminate\Http\RedirectResponse | mixed
    public function login(Request $request, $provider)
    {
        //If the provider is not an acceptable third party than kick back
        if (!in_array($provider, $this->helper->getAcceptedProviders())) {
            return redirect()->route('frontend.index')->withFlashDanger(trans('auth.socialite.unacceptable', ['provider' => $provider]));
        }
        /**
         * The first time this is hit, request is empty
         * It's redirected to the provider and then back here, where request is populated
         * So it then continues creating the user
         */
        if (!$request->all()) {
            return $this->getAuthorizationFirst($provider);
        }
        /**
         * Create the user if this is a new social account or find the one that is already there
         */
        $user = $this->user->findOrCreateSocial($this->getSocialUser($provider), $provider);
        /**
         * User has been successfully created or already exists
         * Log the user in
         */
        auth()->login($user, true);
        /**
         * User authenticated, check to see if they are active.
         */
        if (!access()->user()->isActive()) {
            access()->logout();
            throw new GeneralException(trans('exceptions.frontend.auth.deactivated'));
        }
        /**
         * Throw an event in case you want to do anything when the user logs in
         */
        event(new UserLoggedIn($user));
        /**
         * Set session variable so we know which provider user is logged in as, if ever needed
         */
        session([config('access.socialite_session_name') => $provider]);
        /**
         * Return to the intended url or default to the class property
         */
        return redirect()->intended(route('frontend.index'));
    }