diff --git a/library/Notifications/Web/Form/ContactForm.php b/library/Notifications/Web/Form/ContactForm.php index bd2037fde..980a30231 100644 --- a/library/Notifications/Web/Form/ContactForm.php +++ b/library/Notifications/Web/Form/ContactForm.php @@ -16,6 +16,7 @@ use ipl\Stdlib\Filter; use ipl\Validator\CallbackValidator; use ipl\Validator\EmailAddressValidator; +use ipl\Validator\StringLengthValidator; use ipl\Web\Common\CsrfCounterMeasure; use ipl\Web\Compat\CompatForm; @@ -95,20 +96,23 @@ protected function assemble() 'username', [ 'label' => $this->translate('Username'), - 'validators' => [new CallbackValidator(function ($value, $validator) { - $contact = Contact::on($this->db)->filter(Filter::equal('username', $value)); - if ($this->contactId) { - $contact->filter(Filter::unequal('id', $this->contactId)); - } - - if ($contact->first() !== null) { - $validator->addMessage($this->translate('A contact with the same username already exists.')); - - return false; - } - - return true; - })] + 'validators' => [ + new StringLengthValidator(['max' => 254]), + new CallbackValidator(function ($value, $validator) { + $contact = Contact::on($this->db)->filter(Filter::equal('username', $value)); + if ($this->contactId) { + $contact->filter(Filter::unequal('id', $this->contactId)); + } + + if ($contact->first() !== null) { + $validator->addMessage($this->translate('A contact with the same username already exists.')); + + return false; + } + + return true; + }) + ] ] )->addElement( 'select',