Example #1
0
 /**
  * @param $data
  * @param UserInterface $user
  * @return bool
  */
 public function addEmail($data, UserInterface $user)
 {
     $form = $this->getAddEmailForm();
     $form->setData($data);
     if (!$form->isValid()) {
         foreach ($form->getElements() as $messages) {
             /** @var \Zend\Form\ElementInterface $messages */
             foreach ($messages->getMessages() as $message) {
                 $this->getFlashMessenger()->setNamespace(self::ERROR_NAMESPACE)->addMessage($message);
             }
         }
         return false;
     }
     $user = $this->getUser4Id($user->getId());
     if ($user->getEmail()) {
         $this->getFlashMessenger()->setNamespace(self::ERROR_NAMESPACE)->addMessage('Email already exists in your Account');
         return false;
     }
     $data = $form->getData();
     $entityManager = $this->entityManager;
     if ($this->collectionOptions->getRegisterOptions()->isMailConfirmation()) {
         $userExtensionName = $this->collectionOptions->getEntityOptions()->getUserExtension();
         /** @var \PServerCore\Entity\UserExtension $userExtension */
         $userExtension = new $userExtensionName();
         /** @var \PServerCore\Entity\Repository\UserExtension $extensionRepository */
         $extensionRepository = $entityManager->getRepository($userExtensionName);
         $extensionRepository->deleteExtension($user, $userExtension::KEY_ADD_EMAIL);
         $userExtension->setKey($userExtension::KEY_ADD_EMAIL)->setUser($user)->setValue($data['email']);
         $entityManager->persist($userExtension);
         $entityManager->flush();
         $code = $this->userCodeService->setCode4User($user, UserCodesEntity::TYPE_ADD_EMAIL);
         $user->setEmail($data['email']);
         $this->mailService->addEmail($user, $code);
         $this->getFlashMessenger()->setNamespace(self::SUCCESS_NAMESPACE)->addMessage('Success, please confirm your mail.');
     } else {
         $user->setEmail($data['email']);
         $entityManager->persist($user);
         $entityManager->flush();
         $this->authService->getStorage()->write($user);
     }
     return true;
 }
 /**
  * RegisterFilter constructor.
  * @param Collection $collection
  * @param EntityManager $entityManager
  * @param DataServiceInterface $gameBackendService
  */
 public function __construct(Collection $collection, EntityManager $entityManager, DataServiceInterface $gameBackendService)
 {
     $this->collection = $collection;
     $this->entityManager = $entityManager;
     $this->gameBackendService = $gameBackendService;
     $validationUsernameOptions = $this->collection->getValidationOptions()->getUsername();
     $this->add(['name' => 'username', 'required' => true, 'filters' => [['name' => 'StringTrim']], 'validators' => [['name' => 'StringLength', 'options' => ['min' => $validationUsernameOptions['length']['min'], 'max' => $validationUsernameOptions['length']['max']]], ['name' => 'Alnum'], $this->getUsernameValidator(), $this->getUserNameBackendNotExistsValidator()]]);
     $this->add(['name' => 'email', 'required' => true, 'filters' => [['name' => 'StringTrim']], 'validators' => [['name' => 'EmailAddress', 'options' => ['allow' => Hostname::ALLOW_DNS, 'useMxCheck' => true, 'useDeepMxCheck' => true]], $this->getStriposValidator()]]);
     if (!$this->collection->getRegisterOptions()->isDuplicateEmail()) {
         $element = $this->get('email');
         /** @var \Zend\Validator\ValidatorChain $chain */
         $chain = $element->getValidatorChain();
         $chain->attach($this->getEmailValidator());
         $element->setValidatorChain($chain);
     }
     $this->add(['name' => 'emailVerify', 'required' => true, 'filters' => [['name' => 'StringTrim']], 'validators' => [['name' => 'StringLength', 'options' => ['min' => 6, 'max' => 255]], ['name' => 'Identical', 'options' => ['token' => 'email']]]]);
     $passwordLengthOptions = $this->collection->getPasswordOptions()->getLength();
     $this->add(['name' => 'password', 'required' => true, 'filters' => [['name' => 'StringTrim']], 'validators' => [['name' => 'StringLength', 'options' => ['min' => $passwordLengthOptions['min'], 'max' => $passwordLengthOptions['max']]], new Validator\PasswordRules($this->collection->getPasswordOptions())]]);
     $this->add(['name' => 'passwordVerify', 'required' => true, 'filters' => [['name' => 'StringTrim']], 'validators' => [['name' => 'StringLength', 'options' => ['min' => $passwordLengthOptions['min'], 'max' => $passwordLengthOptions['max']]], ['name' => 'Identical', 'options' => ['token' => 'password']], new Validator\PasswordRules($this->collection->getPasswordOptions())]]);
     if ($this->collection->getPasswordOptions()->isSecretQuestion()) {
         $this->add(['name' => 'question', 'required' => true, 'validators' => [['name' => 'InArray', 'options' => ['haystack' => $this->getSecretQuestionList()]]]]);
         $this->add(['name' => 'answer', 'required' => true, 'filters' => [['name' => 'StringTrim']], 'validators' => [['name' => 'StringLength', 'options' => ['min' => 3, 'max' => 255]]]]);
     }
 }
 /**
  * AddEmailFilter constructor.
  * @param EntityManager $entityManager
  * @param array $config
  * @param Collection $collection
  */
 public function __construct(EntityManager $entityManager, array $config, Collection $collection)
 {
     $this->entityManager = $entityManager;
     $this->config = $config;
     $this->collectionOptions = $collection;
     $this->add(['name' => 'email', 'required' => true, 'filters' => [['name' => 'StringTrim']], 'validators' => [['name' => 'EmailAddress', 'options' => ['allow' => Hostname::ALLOW_DNS, 'useMxCheck' => true, 'useDeepMxCheck' => true]], $this->getStriposValidator()]]);
     if (!$collection->getRegisterOptions()->isDuplicateEmail()) {
         $element = $this->get('email');
         /** @var \Zend\Validator\ValidatorChain $chain */
         $chain = $element->getValidatorChain();
         $chain->attach($this->getEmailValidator());
         $element->setValidatorChain($chain);
     }
     $this->add(['name' => 'emailVerify', 'required' => true, 'filters' => [['name' => 'StringTrim']], 'validators' => [['name' => 'StringLength', 'options' => ['min' => 6, 'max' => 255]], ['name' => 'Identical', 'options' => ['token' => 'email']]]]);
 }
Example #4
0
 /**
  * read from the config if system works with mail confirmation
  * @return boolean
  */
 public function isRegisterMailConfirmationOption()
 {
     return (bool) $this->collectionOptions->getRegisterOptions()->isMailConfirmation();
 }