src/Form/Website/Type/Authentication/ResetPasswordType.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Form\Website\Type\Authentication;
  3. use Symfony\Component\Form\AbstractType;
  4. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  5. use Symfony\Component\Form\FormBuilderInterface;
  6. use Symfony\Component\OptionsResolver\OptionsResolver;
  7. use Symfony\Component\Validator\Constraints\Length;
  8. use Symfony\Component\Validator\Constraints\NotBlank;
  9. use Symfony\Component\Validator\Constraints\EqualTo;
  10. use Symfony\Component\Validator\Constraints\Regex;
  11. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  12. /**
  13. * Formulaire de réinitialisation de mot de passe
  14. */
  15. class ResetPasswordType extends AbstractType
  16. {
  17. public function buildForm(FormBuilderInterface $builder, array $options): void
  18. {
  19. $builder
  20. ->add('newPassword', PasswordType::class, [
  21. 'label' => 'Mot de passe',
  22. 'required' => true,
  23. 'attr' => [
  24. 'placeholder' => 'Votre nouveau mot de passe',
  25. ],
  26. 'constraints' => [
  27. new NotBlank([
  28. 'message' => 'Le mot de passe est obligatoire.',
  29. ]),
  30. new Length([
  31. 'min' => 8,
  32. 'minMessage' => 'Le mot de passe doit contenir au moins {{ limit }} caractères.',
  33. ]),
  34. new Regex([
  35. 'pattern' => '/(?=.*[A-Z]).+/',
  36. 'message' => 'Le mot de passe doit contenir au moins une lettre majuscule (A-Z).',
  37. ]),
  38. new Regex([
  39. 'pattern' => '/(?=.*[a-z]).+/',
  40. 'message' => 'Le mot de passe doit contenir au moins une lettre minuscule (a-z).',
  41. ]),
  42. new Regex([
  43. 'pattern' => '/(?=.*\d).+/',
  44. 'message' => 'Le mot de passe doit contenir au moins un chiffre (0-9).',
  45. ]),
  46. new Regex([
  47. 'pattern' => '/(?=.*[!@#\$%\^&*\(\)]).+/',
  48. 'message' => 'Le mot de passe doit contenir au moins un caractère spécial parmi : ! @ # $ % ^ & * ( ).',
  49. ]),
  50. ],
  51. ])
  52. ->add('confirmPassword', PasswordType::class, [
  53. 'label' => 'Confirmation du mot de passe',
  54. 'required' => true,
  55. 'attr' => [
  56. 'placeholder' => 'Votre confirmation de mot de passe',
  57. ],
  58. 'constraints' => [
  59. new NotBlank([
  60. 'message' => 'La confirmation du mot de passe est obligatoire.',
  61. ]),
  62. new EqualTo([
  63. 'message' => 'Les mots de passe doivent correspondre.',
  64. 'propertyPath' => 'parent.all[newPassword].data',
  65. ]),
  66. ],
  67. ])
  68. ->add('submit', SubmitType::class, [
  69. 'label' => 'Modifier le mot de passe',
  70. 'attr' => [
  71. 'class' => 'btn btn-primary',
  72. ],
  73. ]);
  74. }
  75. public function configureOptions(OptionsResolver $resolver): void
  76. {
  77. $resolver->setDefaults([
  78. 'csrf_protection' => true,
  79. 'csrf_token_id' => 'forgot_password',
  80. ]);
  81. }
  82. }