Как проверить пароль пользователя, созданного с помощью диспетчера пользователей?

Я хочу знать, как проверить произвольный пароль на соответствие правилам проверки, определенным в validation.xml, Я создал страницу администратора, где пользователи-администраторы могут создавать других пользователей-администраторов. Я хочу проверить этих пользователей, используя те же правила, которые используются, когда анонимные пользователи регистрируются в своей учетной записи на /register стр. Из того, что я вижу, эти правила определены в validation.xml,

В общем, я хочу сделать что-то вроде этого:

$userManager = $container->get('fos_user.user_manager');
$user = $userManager->createUser();
$user->setPlainPassword('1');
$arrayOfErrors = functionThatValidatesUserPassword($user);

или даже вызвать функцию с паролем, например, так:

$arrayOfErrors = functionThatValidatesUserPassword('1');

Что я должен использовать, чтобы заменить functionThatValidatesUserPassword Вот?

Я думал, что служба валидатора может работать, но когда я пытаюсь

$validator = $this->get('validator');
$errors = $validator->validate($user);
print_r($errors);exit;

Я просто получаю пустой список ошибок. Я ожидал увидеть сообщение об ошибке «Пароль слишком короткий», что вы получите, если зарегистрируетесь с тем же паролем на /register стр.

Я использую Symfony 3.4 и FosUserBundle 2.0.


При поиске ответов на мой вопрос я обнаружил следующие два поста, описывающие, как переопределить правила, определенные в validation.xml файл.

Я планирую переопределить правила проверки, но сейчас я просто хочу подтвердить свой пароль, используя встроенные правила, которые поставляются с FosUserBundle.

1

Решение

Я нашел ответ на мою проблему. Ограничения во встроенном validation.xml файла FOSUserBundle принадлежат группы проверки. По умолчанию validate Функция проверяет только те ограничения, которые не принадлежат ни к одной группе. Существует третий параметр validate функция, которая принимает массив групп, содержащих ограничения, которые вы хотите проверить. Поэтому все, что вам нужно сделать, это передать группы, которые содержат ограничения, которые вы хотите проверить. Например, поле пароля относится к следующим группам: Регистрация, Профиль, ResetPassword, ChangePassword. Я использовал группу регистрации, поэтому мой код выглядит так:

$userManager = $this->get('fos_user.user_manager');
$user = $userManager->createUser();
$user->setPlainPassword('1');
$validator = $this->get('validator', null, array("Registration"));
$errors = $validator->validate($user);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]