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