Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 33 |
UserNameConstraintValidator | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
90 | |
0.00% |
0 / 33 |
validate | |
0.00% |
0 / 1 |
90 | |
0.00% |
0 / 33 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\user\Plugin\Validation\Constraint\UserNameConstraintValidator. | |
*/ | |
namespace Drupal\user\Plugin\Validation\Constraint; | |
use Drupal\Component\Utility\Unicode; | |
use Symfony\Component\Validator\Constraint; | |
use Symfony\Component\Validator\ConstraintValidator; | |
/** | |
* Validates the UserName constraint. | |
*/ | |
class UserNameConstraintValidator extends ConstraintValidator { | |
/** | |
* {@inheritdoc} | |
*/ | |
public function validate($items, Constraint $constraint) { | |
if (!isset($items) || !$items->value) { | |
$this->context->addViolation($constraint->emptyMessage); | |
return; | |
} | |
$name = $items->first()->value; | |
if (substr($name, 0, 1) == ' ') { | |
$this->context->addViolation($constraint->spaceBeginMessage); | |
} | |
if (substr($name, -1) == ' ') { | |
$this->context->addViolation($constraint->spaceEndMessage); | |
} | |
if (strpos($name, ' ') !== FALSE) { | |
$this->context->addViolation($constraint->multipleSpacesMessage); | |
} | |
if (preg_match('/[^\x{80}-\x{F7} a-z0-9@_.\'-]/i', $name) | |
|| preg_match( | |
'/[\x{80}-\x{A0}' . // Non-printable ISO-8859-1 + NBSP | |
'\x{AD}' . // Soft-hyphen | |
'\x{2000}-\x{200F}' . // Various space characters | |
'\x{2028}-\x{202F}' . // Bidirectional text overrides | |
'\x{205F}-\x{206F}' . // Various text hinting characters | |
'\x{FEFF}' . // Byte order mark | |
'\x{FF01}-\x{FF60}' . // Full-width latin | |
'\x{FFF9}-\x{FFFD}' . // Replacement characters | |
'\x{0}-\x{1F}]/u', // NULL byte and control characters | |
$name) | |
) { | |
$this->context->addViolation($constraint->illegalMessage); | |
} | |
if (Unicode::strlen($name) > USERNAME_MAX_LENGTH) { | |
$this->context->addViolation($constraint->tooLongMessage, array('%name' => $name, '%max' => USERNAME_MAX_LENGTH)); | |
} | |
} | |
} |