customerSocialAccountRepository = $customerSocialAccountRepository; $this->_config = request('_config'); } /** * Redirects to the social provider * * @param string $provider * @return \Illuminate\Http\Response */ public function redirectToProvider($provider) { return Socialite::driver($provider)->redirect(); } /** * Handles callback * * @param string $provider * @return \Illuminate\Http\Response */ public function handleProviderCallback($provider) { try { $user = Socialite::driver($provider)->user(); } catch (\Exception $e) { return redirect()->route('customer.session.index'); } $customer = $this->customerSocialAccountRepository->findOrCreateCustomer($user, $provider); auth()->guard('customer')->login($customer, true); return redirect()->intended(route($this->_config['redirect'])); } }