Ejemplo n.º 1
0
 public function createUser(User $user)
 {
     $now = new DateTime();
     $rawPass = null;
     $userPass = $user->getPassword();
     if (empty($userPass)) {
         $rawPass = Strings::random(self::RANDOM_PASS_LENGTH);
     } else {
         $rawPass = $user->getPassword();
     }
     $this->entityManager->beginTransaction();
     $user->setPassword($this->generateNewPassword($rawPass));
     $user->setCreated($now);
     $user->setUpdated($now);
     $user->setWebProfile(new WebProfile());
     $user->contact->setUpdated($now);
     $user->getWebProfile()->setUpdated($now);
     $user->getWebProfile()->setStatus(WebProfileStatus::BAD);
     try {
         $this->contactDao->save($user->getContact());
     } catch (DuplicateEntryException $e) {
         $this->entityManager->rollback();
         throw new Exceptions\DuplicateEntryException($e->getMessage(), Exceptions\DuplicateEntryException::EMAIL_EXISTS, $e->getPrevious());
     }
     try {
         $this->userDao->save($user);
         $this->entityManager->commit();
     } catch (DuplicateEntryException $e) {
         $this->entityManager->rollback();
         throw new Exceptions\DuplicateEntryException($e->getMessage(), Exceptions\DuplicateEntryException::BIRTH_NUM_EXISTS, $e->getPrevious());
     } catch (\Exception $e) {
         $this->entityManager->rollback();
         $this->logError($e->getMessage());
         throw new Exceptions\DataErrorException($e->getMessage(), $e->getCode(), $e->getPrevious());
     }
     $this->logInfo("User %user was successfully created", ["user" => $user]);
     $user->insertRawPassword($rawPass);
     $this->onCreate(clone $user);
 }