/** * @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; } }