/** * Handles login using this service. * * @param Request $request * * @return array|bool|RedirectResponse */ public function handleLogin($request) { /** @var RedirectResponse $response */ $response = $this->driver->redirect(); if (!$request->ajax()) { return $response; } $url = $response->getTargetUrl(); $result = ['response' => ['redirect' => true, 'url' => $url]]; return $result; }
/** * @param \Lio\Github\GithubAuthenticatorListener $listener * @return \Illuminate\Http\RedirectResponse */ public function authBySocialite(GithubAuthenticatorListener $listener) { try { $githubUser = $this->socialite->user(); } catch (Exception $e) { return $listener->invalidLogin(); } if ($user = $this->users->getByGithubId($githubUser->getId())) { return $this->loginUser($listener, $user); } return $listener->userNotFound($this->githubUserToArray($githubUser)); }
public function registerOrLogin(AuthDelegate $delegate, Provider $socialite) { // Attempt to get YouTube user using code->accessToken->user $youtubeUser = $socialite->user(); // If user exists, log them in. if ($this->userRepository->existsByYoutubeId($youtubeUser->getId())) { $user = $this->userRepository->getByYoutubeId($youtubeUser->getId()); $this->login($youtubeUser, $user); return $delegate->userLoggedIn(); } // No user found, let's register them. $user = $this->register($youtubeUser); $this->login($youtubeUser, $user); return $delegate->userJustRegistered(); }
public function createOrGetUser(Provider $provider) { $providerUser = $provider->user(); $providerName = class_basename($provider); $account = SocialAccount::whereProvider($providerName)->whereProviderUserId($providerUser->getId())->first(); if ($account) { return $account->user; } else { $account = new SocialAccount(['provider_user_id' => $providerUser->getId(), 'provider' => $providerName]); $user = User::whereEmail($providerUser->getEmail())->first(); if (!$user) { $user = User::create(['email' => $providerUser->getEmail(), 'name' => $providerUser->getName()]); } $account->user()->associate($user); $account->save(); return $user; } }
public function showLogin() { return $this->socialite->redirect(); }