2012-02-08 6 views
9

Я пытаюсь переопределить текущую проверку паролей в FOSUserBundle. Я пробовал несколько вариантов, но я все еще не могу найти решение.Проверка пароля FOSUserBundle

Чтобы увеличить MINLENGTH установлен пароль, я создал validation.yml с:

# src/Acme/UserBundle/Resources/config/validation.yml 
Acme\UserBundle\Entity\User: 
    properties: 
     username: 
      - MinLength: { limit: 3, message: "Your username must have at least {{ limit }} characters." } 
      - MaxLength: { limit: 255, message: "The username is too long" } 
      - NotBlank: { message: "Please enter a username"}  

     plainPassword: 
      - NotBlank: { message: "Please enter a password"} 
      - MinLength: { limit: 8, message: "Your password must have at least {{ limit }} characters.", groups [Registration,Profile]} 
       - MaxLength: { limit: 255, message: "The password is too long" } 

Acme\UserBundle\Form\Model\ChangePassword: 
    properties: 
     new: 
      - NotBlank: { message: "Please enter a new password", groups [ChangePassword]} 
      - MinLength: { limit: 8, message: "Your password must have at least {{ limit }} characters.", groups [ChangePassword]} 
      - MaxLength: { limit: 255, message: "The password is too long", groups [ChangePassword]} 

Acme\UserBundle\Form\Model\ResetPassword: 
     new: 
      - NotBlank: { message: "Please enter a new password", groups [ResetPassword]} 
      - MinLength: { limit: 8, message: "Your new password must have at least {{ limit }} characters.", groups [ResetPassword]} 
      - MaxLength: { limit: 255, message: "The new password is too long", groups [ResetPassword]} 

Это работает для меня штраф на /register, но /change-password по умолчанию мин проверки длины от FOSUserBundle принимает владение.

Чтобы более подробно изложить мой вопрос, каков правильный способ установки MinLength для пароля в FOSUserBundle, чтобы убедиться, что он валидирован везде?

Кроме того, что такое правильный подход с FOSUserBundle для проверки в ChangePassword, что oldpassword != newpassword?

ответ

1

Вы можете использовать Validation группы

http://symfony.com/doc/2.0/book/validation.html#validation-groups

+0

Это то, что я снятую в попытке увидеть, если это было причиной моих проблем. Я вернул их обратно, чтобы проверить, они, похоже, не имеют никакого значения. Я отредактирую выше, чтобы включить их обратно для ясности. – MadManMonty

4

validation.yml должен быть в той же связке, что переписывает объекта пользователя FOS

Вместо Acme вы должны использовать ФОС, и вы должны только один набор проверки.

# src/Acme/UserBundle/Resources/config/validation.yml 
FOS\UserBundle\Model\User: 
    properties: 
     username: 
     - MinLength: { limit: 3, message: "Your username must have at least {{ limit }} characters." } 
     - MaxLength: { limit: 255, message: "The username is too long" } 
     - NotBlank: { message: "Please enter a username"}  

     plainPassword: 
     - NotBlank: { message: "Please enter a password", groups:[Registration, ResetPassword, ChangePassword] } 
     - MinLength: { limit: 8, message: "Your password must have at least {{ limit }} characters.", groups:[Registration, ResetPassword, ChangePassword] } 
     - MaxLength: { limit: 255, message: "The password is too long", groups:[Registration, ResetPassword, ChangePassword] } 

Когда в беде, идти к источнику: https://github.com/FriendsOfSymfony/FOSUserBundle/issues/987

+1

это, похоже, не является правильным синтаксисом для проверки длины на основе этого http://symfony.com/doc/current/reference/constraints/Length.html – gondo