/**
  * @param string $provider
  * @param OAuth2User $oauthUser
  * @return User
  */
 public function authenticate($provider, OAuth2User $oauthUser)
 {
     if ($user = $this->userManager->getByOAuthUser($provider, $oauthUser)) {
         return $this->saveLoggedUser($user);
     }
     if ($user = $this->userManager->create($provider, $oauthUser)) {
         return $this->saveLoggedUser($user);
     }
     $this->session->set('oauth2.data', array('provider' => $provider, 'user' => $oauthUser));
 }
Exemplo n.º 2
0
 /**
  * @param array $oauthData
  * @param string $name
  * @param string $email
  * @param string $bio
  * @param string $redirectTo
  * @return string
  */
 public function create(array $oauthData, $name, $email, $bio, $redirectTo)
 {
     try {
         $user = $this->userManager->create($oauthData['provider'], $oauthData['user'], $name, $email, !empty($bio) ? $bio : null);
         $this->authService->saveLoggedUser($user);
         return json_encode(array('data' => array('id' => $user->getId(), 'username' => $user->getDefaultProfile()->getUsername()), 'redirectTo' => $redirectTo));
     } catch (InvalidArgumentException $error) {
         return json_encode(array('error' => $error->getMessage()));
     } catch (PDOException $error) {
         return json_encode(array('error' => 'Não foi possível salvar os dados na camada de persistência'));
     } catch (Exception $error) {
         return json_encode(array('error' => 'Erro interno no processamento da requisição'));
     }
 }