Validação de senha do FOSUserBundle

9

Estou tentando substituir a validação atual de senhas no FOSUserBundle. Eu tentei algumas opções, mas ainda não consigo encontrar a solução.

Para aumentar o MinLength da senha, criei um validation.yml com:

# 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]}

Isso está funcionando bem para mim no /register , mas no /change-password a validação do tamanho mínimo padrão do FOSUserBundle está assumindo a propriedade.

Para declarar minha pergunta mais claramente, qual é a maneira correta de definir o MinLength da senha no FOSUserBundle para garantir que ela seja validada em todos os lugares?

Além disso, qual é a abordagem correta com o FOSUserBundle para verificar dentro de ChangePassword que oldpassword != newpassword ?

    
por MadManMonty 09.02.2012 в 00:50
fonte

2 respostas

4

validation.yml deve estar no mesmo pacote que sobrescreve a entidade de usuário do FOS

Em vez de Acme, você deve usar o FOS e só precisa de um conjunto de validação.

# 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] }

Quando estiver com problemas, vá para a fonte: link

    
por pfisher 18.09.2013 / 22:34
fonte
1

Você pode usar os Grupos de validação

link

    
por anthofremion 09.02.2012 / 09:26
fonte