43 lines
1.3 KiB
PHP
Executable File
43 lines
1.3 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Validator;
|
|
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
use Symfony\Component\Validator\Constraint;
|
|
use Symfony\Component\Validator\ConstraintValidator;
|
|
|
|
/**
|
|
* @Annotation
|
|
*/
|
|
class UserusernameValidator extends ConstraintValidator
|
|
{
|
|
protected $em;
|
|
|
|
public function __construct(EntityManagerInterface $em)
|
|
{
|
|
$this->em = $em;
|
|
}
|
|
|
|
public function validate($value, Constraint $constraint)
|
|
{
|
|
if (!empty($value)) {
|
|
// On s'assure que le login soit de 5 caractères minimum
|
|
if (strlen($value) < '5') {
|
|
$this->context->addViolation($constraint->messageinvalid);
|
|
}
|
|
|
|
// On s'assure que le username ne contient pas des caractères speciaux
|
|
$string = preg_replace('~[^@a-zA-Z0-9._-]~', '', $value);
|
|
if ($string != $value) {
|
|
$this->context->addViolation($constraint->messageinvalid);
|
|
}
|
|
|
|
// On s'assure que le username n'existe pas dans la table des registration
|
|
$registration = $this->em->getRepository("App\Entity\Registration")->findOneBy(['username' => $value]);
|
|
if ($registration) {
|
|
$this->context->addViolation($constraint->messagenotunique);
|
|
}
|
|
}
|
|
}
|
|
}
|