Я хочу использовать новый NotCompromisedPassword, выпущенный на SF 4.3: https://symfony.com/blog/new-in-symfony-4-3-compromised-password-validator
Я настроил его на свой validation.yaml так:
App\Entity\User:
constraints:
- App\Validator\Constraints\ConstraintPassword: ~
properties:
plainPassword:
- Symfony\Component\Validator\Constraints\NotCompromisedPassword: ~
Это работает, но я хочу настроить сообщение об ошибке, например, используя его непосредственно в моем ConstraintPasswordValidator. php:
<?php
namespace App\Validator\Constraints;
use App\Entity\User;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\Constraints\NotCompromisedPassword;
use Symfony\Component\Validator\ConstraintValidator;
class ConstraintPasswordValidator extends ConstraintValidator
{
/**
* @param User $user
* @param Constraint $constraint
*/
public function validate($user, Constraint $constraint)
{
if (strlen($user->getPlainPassword()) < 8 || strlen($user->getPlainPassword() < 35)) {
$this->context->buildViolation($constraint->lengthError)
->addViolation();
}
// Doing something like that
$notCompromised = new NotCompromisedPassword();
$notCompromised->message = "My custom error message";
//Then, build the violation if password leaked
}
}
Возможно, его нужно создать и настроить в моем ConstraintPassword . php? Но я не знаю, как
<?php
namespace App\Validator\Constraints;
use Symfony\Component\Validator\Constraint;
class ConstraintPassword extends Constraint
{
public $lengthError = 'Erreur : La longueur du mot de passe doit être comprise entre 8 et 35 caractères';
public function validatedBy()
{
return \get_class($this).'Validator';
}
public function getTargets()
{
return self::CLASS_CONSTRAINT;
}
}