src/Form/Website/Type/Authentication/ConnectionType.php line 20

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\CheckboxType;
  5. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  6. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  7. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  8. use Symfony\Component\Form\FormBuilderInterface;
  9. use Symfony\Component\OptionsResolver\OptionsResolver;
  10. use Symfony\Component\Validator\Constraints\Length;
  11. use Symfony\Component\Validator\Constraints\Regex;
  12. use Symfony\Component\Validator\Constraints\NotBlank;
  13. /**
  14. * Formulaire de connexion client
  15. */
  16. class ConnectionType extends AbstractType
  17. {
  18. public function buildForm(FormBuilderInterface $builder, array $options): void
  19. {
  20. $builder
  21. ->add('email', EmailType::class, [
  22. 'label' => 'Email',
  23. 'required' => true,
  24. 'attr' => [
  25. 'placeholder' => 'Votre adresse email',
  26. 'autocomplete' => 'email',
  27. ],
  28. 'constraints' => [
  29. new NotBlank([
  30. 'message' => 'Le mot de passe est obligatoire.',
  31. ]),
  32. new Length([
  33. 'min' => 8,
  34. 'minMessage' => 'Le mot de passe doit contenir au moins {{ limit }} caractères.',
  35. ]),
  36. new Regex([
  37. 'pattern' => '/(?=.*[A-Z]).+/',
  38. 'message' => 'Le mot de passe doit contenir au moins une lettre majuscule (A-Z).',
  39. ]),
  40. new Regex([
  41. 'pattern' => '/(?=.*[a-z]).+/',
  42. 'message' => 'Le mot de passe doit contenir au moins une lettre minuscule (a-z).',
  43. ]),
  44. new Regex([
  45. 'pattern' => '/(?=.*\d).+/',
  46. 'message' => 'Le mot de passe doit contenir au moins un chiffre (0-9).',
  47. ]),
  48. new Regex([
  49. 'pattern' => '/(?=.*[!@#\$%\^&*\(\)]).+/',
  50. 'message' => 'Le mot de passe doit contenir au moins un caractère spécial parmi : ! @ # $ % ^ & * ( ).',
  51. ]),
  52. ],
  53. ])
  54. ->add('password', PasswordType::class, [
  55. 'label' => 'Mot de passe',
  56. 'required' => true,
  57. 'attr' => [
  58. 'placeholder' => 'Votre mot de passe',
  59. 'autocomplete' => 'current-password',
  60. ],
  61. 'constraints' => [
  62. new NotBlank([
  63. 'message' => 'Le mot de passe est obligatoire.',
  64. ]),
  65. ],
  66. ])
  67. ->add('submit', SubmitType::class, [
  68. 'label' => 'Me connecter',
  69. 'attr' => [
  70. 'class' => 'btn btn-primary',
  71. ],
  72. ]);
  73. }
  74. public function configureOptions(OptionsResolver $resolver): void
  75. {
  76. $resolver->setDefaults([
  77. 'csrf_protection' => true,
  78. 'csrf_token_id' => 'customer_authenticate',
  79. ]);
  80. }
  81. }