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