/**
  * @param UserInterface $userEntity
  * @param string $type
  * @param int|null $expire
  *
  * @return string
  */
 public function setCode4User(UserInterface $userEntity, $type, $expire = null)
 {
     $entityManager = $this->entityManager;
     $this->getRepositoryManager()->deleteCodes4User($userEntity->getId(), $type);
     do {
         $found = false;
         $code = $this->formatService->getCode();
         if ($this->getRepositoryManager()->getCode($code)) {
             $found = true;
         }
     } while ($found);
     $userCodesEntity = new Entity();
     $userCodesEntity->setCode($code)->setUser($userEntity)->setType($type);
     if (!$expire) {
         $expireOption = $this->collectionOptions->getUserCodesOptions()->getExpire();
         if (isset($expireOption[$type])) {
             $expire = $expireOption[$type];
         } else {
             $expire = $expireOption['general'];
         }
     }
     if ($expire) {
         $dateTime = new DateTime();
         $userCodesEntity->setExpire($dateTime->setTimestamp(time() + $expire));
     }
     $entityManager->persist($userCodesEntity);
     $entityManager->flush();
     return $code;
 }
 /**
  * @param UserInterface $user
  * @param       $answer
  *
  * @return bool
  */
 public function isAnswerAllowed(UserInterface $user, $answer)
 {
     $answerEntity = $this->getEntityManagerAnswer()->getAnswer4UserId($user->getId());
     if (!$answerEntity) {
         return true;
     }
     // @TODO better workflow, with ZendFilter
     $realAnswer = strtolower(trim($answerEntity->getAnswer()));
     $plainAnswer = strtolower(trim($answer));
     return $realAnswer === $plainAnswer;
 }
Exemple #3
0
 /**
  * @param UserInterface $user
  * @return bool
  */
 protected function isCountryAllowed(UserInterface $user)
 {
     $result = true;
     $entityManager = $this->entityManager;
     /** @var CountryList $countryList */
     $countryList = $entityManager->getRepository($this->collectionOptions->getEntityOptions()->getCountryList());
     $country = $countryList->getCountryCode4Ip($this->ipService->getIp2Decimal());
     /** @var RepositoryAvailableCountries $availableCountries */
     $availableCountries = $entityManager->getRepository($this->collectionOptions->getEntityOptions()->getAvailableCountries());
     if (!$availableCountries->isCountryAllowedForUser($user->getId(), $country)) {
         $code = $this->userCodeService->setCode4User($user, UserCodesEntity::TYPE_CONFIRM_COUNTRY);
         $this->mailService->confirmCountry($user, $code);
         $this->getFlashMessenger()->setNamespace($this::ERROR_NAME_SPACE)->addMessage('Please confirm your new ip with your email');
         $result = false;
     }
     return $result;
 }