/** * Login or register a user with social provider. * * @param Request $request * @param UserRepository $repository * @param $provider * @return \Illuminate\Http\RedirectResponse */ public function login(Request $request, UserRepository $repository, $provider) { $this->assertProvider($provider); $providerCode = $request->has('code') || $request->has('oauth_token'); if (!$providerCode) { return $this->getAuthorizationFirst($provider); } $user = $repository->loginSocialiteUser($this->getSocialiteUser($provider), $provider); $this->guard()->login($user); flash()->success(trans('messages.login.title', ['name' => $user->name]), trans('messages.login.content')); return isset($request->ref) ? redirect(route($request->ref)) : redirect($this->redirectTo); }