public function signInOauth2(RegistrationRequest $registrationRequest) { if (!$this->accountService->hasAccountWithEmail($registrationRequest->getEmail())) { $this->accountService->createOAuth2Account($registrationRequest); } $oauth2Account = $this->accountService->findOAuthAccount($registrationRequest->getProvider(), $registrationRequest->getProviderAccountId()); return $this->auth($oauth2Account->getAccount()); }
public function createOAuth2Account(RegistrationRequest $registrationRequest) : Account { $email = $registrationRequest->getEmail(); $provider = $registrationRequest->getProvider(); $providerAccountId = $registrationRequest->getProviderAccountId(); $account = $this->createAccount($email, GenerateRandomString::gen(32)); $oauthAccount = new OAuthAccount($account); $oauthAccount->setProvider($provider); $oauthAccount->setProviderAccountId($providerAccountId); $this->accountRepository->createOAuth2Account($oauthAccount); return $account; }
public function getAccountWith(RegistrationRequest $registrationRequest) : OAuthAccount { return $this->findOneBy(['email' => $registrationRequest->getEmail(), 'provider' => $registrationRequest->getProvider(), 'providerAccountId' => $registrationRequest->getProviderAccountId()]); }