Add missing (explicit) username length validation in username form field
authorMatthias Schmidt <gravatronics@live.com>
Tue, 27 Feb 2018 16:39:46 +0000 (17:39 +0100)
committerMatthias Schmidt <gravatronics@live.com>
Tue, 27 Feb 2018 16:39:46 +0000 (17:39 +0100)
See #2509

wcfsetup/install/files/lib/system/form/builder/field/UsernameFormField.class.php

index d1ff62afac7c6e2de9a2407b55974f5c969f5ef6..475af9e0f2c717813654bb263160bb58c78ea077 100644 (file)
@@ -64,11 +64,18 @@ class UsernameFormField extends AbstractFormField implements IMaximumLengthFormF
                                $this->addValidationError(new FormFieldValidationError('empty'));
                        }
                }
-               else if (!UserUtil::isValidUsername($this->getValue())) {
-                       $this->addValidationError(new FormFieldValidationError('invalid', 'wcf.form.field.username.error.invalid'));
-               }
-               else if (!UserUtil::isAvailableUsername($this->getValue())) {
-                       $this->addValidationError(new FormFieldValidationError('notUnique', 'wcf.form.field.username.error.notUnique'));
+               else {
+                       $this->validateMinimumLength($this->getValue());
+                       $this->validateMaximumLength($this->getValue());
+                       
+                       if (empty($this->getValidationErrors())) {
+                               if (!UserUtil::isValidUsername($this->getValue())) {
+                                       $this->addValidationError(new FormFieldValidationError('invalid', 'wcf.form.field.username.error.invalid'));
+                               }
+                               else if (!UserUtil::isAvailableUsername($this->getValue())) {
+                                       $this->addValidationError(new FormFieldValidationError('notUnique', 'wcf.form.field.username.error.notUnique'));
+                               }
+                       }
                }
                
                parent::validate();