Esempio n. 1
0
 /**
  * Creates new account if username is not taken yet.
  * Tries to authenticate the user
  * if username is already taken.
  * @param string $username login of the user
  * @param string $password plain text password
  * @throws \Exception
  */
 public function create($username, $password)
 {
     $account = $this->objectManager->getRepository('Application\\Entity\\Account')->findBy(array('username' => $username));
     if ($account != null) {
         return $this->authenticate($username, $password);
     }
     try {
         try {
             $account = new Account();
             $passwordHash = static::hashPassword($password);
             $email = new EMailAddress();
             $person = new Person();
             $credentials = new Credentials();
             $credentials->setOwner($person);
             $credentials->setNameFirst($username);
             $person->addCredential($credentials);
             $email->setValue($username)->setOwner($person);
             $person->addEmailAddress($email);
             $account->setUsername($username)->setPassword($passwordHash);
             $account->setPerson($person);
             $this->objectManager->persist($email);
             $this->objectManager->persist($credentials);
             $this->objectManager->persist($person);
             $this->objectManager->persist($account);
             $this->objectManager->flush();
             $success = true;
         } catch (\Exception $e) {
             throw new \Exception("Failed to write data to the database.", 500, $e);
             $success = false;
         }
         return $this->authenticate($username, $password);
     } catch (\Exception $e) {
         throw new \Exception("Failed to create an account due to unknown internal server error.", 500, $e);
     }
 }
Esempio n. 2
0
 /**
  * @param  string $identity
  * @param  string $token
  * @param  array  $data (Optional)
  * @return \Application\Entity\User
  * @throws InvalidTokenException
  */
 public function signup($identity, $token, array $data = array())
 {
     // validate token
     $gpUser = $this->_requestUserData($token);
     if ($gpUser->getUserId() !== $identity) {
         throw new InvalidTokenException('Invalid identity and token pair');
     }
     // first check existing credentials
     /** @var \Application\Entity\Credentials $credentials */
     $credentials = $this->_getCredentials($identity);
     if (null !== $credentials) {
         // only update token and return user
         $this->updateToken($credentials, $token);
         return $credentials->getUser();
     }
     $attributes = $gpUser->getAttributes();
     $data['email'] = $attributes['payload']['email'];
     // register new user
     $credentials = new Credentials();
     $credentials->setIdentity($identity)->setToken($token)->setType($this->_credentialType)->setStatus(CredentialsStatus::CONFIRMED);
     // retrieve or create new user
     $user = null === $credentials->getUser() ? $this->_findUserByEmailOrCreateNew($data['email']) : $credentials->getUser();
     $user = $this->_updateUser($user, $data, false);
     $user->addCredential($credentials)->setStatus(UserStatus::ACTIVE);
     return $user;
 }
 /**
  * @param  Credentials $credentials
  * @return void
  */
 protected function _updateCredentialsLastUsage(Credentials $credentials)
 {
     $sm = $this->getServiceLocator();
     /** @var \Doctrine\ORM\EntityManager $em */
     $em = $sm->get('em');
     $credentials->setLastUsedAt(new \DateTime());
     $em->persist($credentials);
     $em->flush($credentials);
 }
Esempio n. 4
0
 public function create(Person $owner, $nameFirst, $nameLast)
 {
     $credentials = new Credentials();
     $credentials->setOwner($owner);
     $credentials->setNameFirst($nameFirst);
     $credentials->setNameLast($nameLast);
     $this->objectManager->persist($credentials);
     $this->objectManager->flush();
     return $credentials;
 }
Esempio n. 5
0
 public function create($data)
 {
     var_dump($data);
     $hydrator = new DoctrineObject($this->objectManager, 'Application\\Entity\\Credentials');
     $person = new Person();
     $credentials = new Credentials();
     $credentials->setOwner($person);
     $hydrator->hydrate($data, $credentials);
     $person->addCredential($credentials);
     $this->objectManager->persist($person);
     $this->objectManager->flush();
     return $person;
 }
Esempio n. 6
0
 /**
  * @param  string $identity
  * @param  string $token
  * @param  array  $data (Optional)
  * @return \Application\Entity\User
  * @throws InvalidTokenException
  */
 public function signup($identity, $token, array $data = array())
 {
     // validate token
     $fbUser = $this->_requestUserData($token);
     if ($fbUser->getId() !== $identity) {
         throw new InvalidTokenException('Invalid identity and token pair');
     }
     // first check existing credentials
     /** @var \Application\Entity\Credentials $credentials */
     $credentials = $this->_getCredentials($identity);
     if (null !== $credentials) {
         // only update token and return user
         $this->updateToken($credentials, $token);
         return $credentials->getUser();
     }
     // register new user
     $credentials = new Credentials();
     $credentials->setIdentity($identity)->setToken($token)->setType($this->_credentialType)->setStatus(CredentialsStatus::CONFIRMED);
     // retrieve or create new user
     $user = null === $credentials->getUser() ? $this->_findUserByEmailOrCreateNew($fbUser->getField('email')) : $credentials->getUser();
     $user = $this->_updateUser($user, array('email' => $fbUser->getField('email'), 'birthday' => $fbUser->getBirthday(), 'firstname' => $fbUser->getFirstName(), 'lastname' => $fbUser->getLastName(), 'gender' => $fbUser->getGender()), false);
     $user->addCredential($credentials)->setStatus(UserStatus::ACTIVE);
     return $user;
 }
Esempio n. 7
0
 /**
  * @param  Credentials $credentials
  * @param  string      $token
  * @return void
  */
 public function updateToken(Credentials $credentials, $token)
 {
     $token = $this->getServiceLocator()->get('ZF\\OAuth2\\Adapter\\PdoAdapter')->getBcrypt()->create($token);
     $credentials->setToken($token);
 }