From 4a84f5ec7d583d0b5a03eee9298ef6cd8cad71d5 Mon Sep 17 00:00:00 2001 From: Fabienmcll Date: Thu, 30 Jan 2025 14:48:12 +0100 Subject: [PATCH] - Ajout dans inscription de la confirmation du mot de passe. --- .env.example | 2 +- src/Controller/RegistrationController.php | 21 ++++--- src/Form/RegistrationType.php | 73 ++++++++++++----------- templates/login/index.html.twig | 12 +--- templates/registration/index.html.twig | 68 +++++++++++++-------- 5 files changed, 98 insertions(+), 78 deletions(-) diff --git a/.env.example b/.env.example index 580c283..c9c097a 100644 --- a/.env.example +++ b/.env.example @@ -2,7 +2,7 @@ APP_ENV=dev APP_SECRET= DB_ROOT_PASSWORD=rootpswd -DB_DATABASE=cloudsprint +DB_DATABASE=booknest DB_USERNAME=dev DB_PASSWORD=cfai42 DB_HOST=db diff --git a/src/Controller/RegistrationController.php b/src/Controller/RegistrationController.php index c5c4111..22a3e51 100644 --- a/src/Controller/RegistrationController.php +++ b/src/Controller/RegistrationController.php @@ -1,5 +1,4 @@ entityManager = $entityManager; $this->passwordHasher = $passwordHasher; @@ -30,16 +29,20 @@ class RegistrationController extends AbstractController $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - // Hacher le mot de passe avant de persister l'utilisateur - $plainPassword = $user->getPassword(); // Récupération du mot de passe brut - $hashedPassword = $this->passwordHasher->hashPassword($user, $plainPassword); // Hachage du mot de passe - $user->setPassword($hashedPassword); // Remplacer le mot de passe brut par le mot de passe haché + $plainPassword = $user->getPassword(); + $confirmPassword = $form->get('confirmPassword')->getData(); + + if ($plainPassword !== $confirmPassword) { + $this->addFlash('error', 'Les mots de passe ne correspondent pas.'); + return $this->redirectToRoute('app_registration'); + } + + $hashedPassword = $this->passwordHasher->hashPassword($user, $plainPassword); + $user->setPassword($hashedPassword); - // Persist de l'utilisateur haché $this->entityManager->persist($user); $this->entityManager->flush(); - // Message flash de succès $this->addFlash('success', 'Votre compte a été créé avec succès !'); return $this->redirectToRoute('home'); } diff --git a/src/Form/RegistrationType.php b/src/Form/RegistrationType.php index 69330e4..885de02 100644 --- a/src/Form/RegistrationType.php +++ b/src/Form/RegistrationType.php @@ -12,39 +12,44 @@ use Symfony\Component\OptionsResolver\OptionsResolver; class RegistrationType extends AbstractType { -public function buildForm(FormBuilderInterface $builder, array $options) -{ -$builder -->add('email', EmailType::class, [ -'label' => 'Email', -'attr' => ['class' => 'form-control'] -]) -->add('password', PasswordType::class, [ -'label' => 'Mot de passe', -'attr' => ['class' => 'form-control'] -]) -->add('pseudo', TextType::class, [ -'label' => 'Pseudo', -'attr' => ['class' => 'form-control'] -]) -->add('firstname', TextType::class, [ -'label' => 'Prénom', -'attr' => ['class' => 'form-control'] -]) -->add('lastname', TextType::class, [ -'label' => 'Nom', -'attr' => ['class' => 'form-control'] -]) -->add('submit', SubmitType::class, [ -'label' => 'S\'inscrire', -'attr' => ['class' => 'btn btn-primary'] -]); -} + public function buildForm(FormBuilderInterface $builder, array $options) + { + $builder + ->add('email', EmailType::class, [ + 'label' => 'Email', + 'attr' => ['class' => 'form-control'] + ]) + ->add('password', PasswordType::class, [ + 'label' => 'Mot de passe', + 'attr' => ['class' => 'form-control'] + ]) + ->add('confirmPassword', PasswordType::class, [ + 'label' => 'Confirmer le mot de passe', + 'attr' => ['class' => 'form-control'], + 'mapped' => false, // Ce champ n'est pas mappé à l'entité User + ]) + ->add('pseudo', TextType::class, [ + 'label' => 'Pseudo', + 'attr' => ['class' => 'form-control'] + ]) + ->add('firstname', TextType::class, [ + 'label' => 'Prénom', + 'attr' => ['class' => 'form-control'] + ]) + ->add('lastname', TextType::class, [ + 'label' => 'Nom', + 'attr' => ['class' => 'form-control'] + ]) + ->add('submit', SubmitType::class, [ + 'label' => 'S\'inscrire', + 'attr' => ['class' => 'btn btn-primary'] + ]); + } -public function configureOptions(OptionsResolver $resolver) -{ -$resolver->setDefaults([ -'data_class' => User::class, -]); -} + public function configureOptions(OptionsResolver $resolver) + { + $resolver->setDefaults([ + 'data_class' => User::class, + ]); + } } diff --git a/templates/login/index.html.twig b/templates/login/index.html.twig index 6374360..b9a0193 100644 --- a/templates/login/index.html.twig +++ b/templates/login/index.html.twig @@ -24,21 +24,13 @@ - +
- {% for type, messages in app.flashes %} -
- {% for message in messages %} -
- {{ message }} -
- {% endfor %} -
- {% endfor %} +
diff --git a/templates/registration/index.html.twig b/templates/registration/index.html.twig index 7c7982f..0907e08 100644 --- a/templates/registration/index.html.twig +++ b/templates/registration/index.html.twig @@ -1,5 +1,3 @@ -{# templates/registration/register.html.twig #} - {% extends 'base.html.twig' %} {% block title %}Inscription{% endblock %} @@ -11,6 +9,30 @@ {{ form_start(form) }} +
+ {{ form_label(form.firstname, 'Prénom', {'label_attr': {'class': 'block text-sm font-medium text-gray-700'}}) }} +
+ {{ form_widget(form.firstname, {'attr': {'class': 'w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm'}}) }} +
+ {{ form_errors(form.firstname) }} +
+ +
+ {{ form_label(form.lastname, 'Nom', {'label_attr': {'class': 'block text-sm font-medium text-gray-700'}}) }} +
+ {{ form_widget(form.lastname, {'attr': {'class': 'w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm'}}) }} +
+ {{ form_errors(form.lastname) }} +
+ +
+ {{ form_label(form.pseudo, 'Pseudo', {'label_attr': {'class': 'block text-sm font-medium text-gray-700'}}) }} +
+ {{ form_widget(form.pseudo, {'attr': {'class': 'w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm'}}) }} +
+ {{ form_errors(form.pseudo) }} +
+
{{ form_label(form.email, 'Email', {'label_attr': {'class': 'block text-sm font-medium text-gray-700'}}) }}
@@ -28,27 +50,11 @@
- {{ form_label(form.pseudo, 'Pseudo', {'label_attr': {'class': 'block text-sm font-medium text-gray-700'}}) }} + {{ form_label(form.confirmPassword, 'Confirmer le mot de passe', {'label_attr': {'class': 'block text-sm font-medium text-gray-700'}}) }}
- {{ form_widget(form.pseudo, {'attr': {'class': 'w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm'}}) }} + {{ form_widget(form.confirmPassword, {'attr': {'class': 'w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm'}}) }}
- {{ form_errors(form.pseudo) }} -
- -
- {{ form_label(form.firstname, 'Prénom', {'label_attr': {'class': 'block text-sm font-medium text-gray-700'}}) }} -
- {{ form_widget(form.firstname, {'attr': {'class': 'w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm'}}) }} -
- {{ form_errors(form.firstname) }} -
- -
- {{ form_label(form.lastname, 'Nom', {'label_attr': {'class': 'block text-sm font-medium text-gray-700'}}) }} -
- {{ form_widget(form.lastname, {'attr': {'class': 'w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm'}}) }} -
- {{ form_errors(form.lastname) }} + {{ form_errors(form.confirmPassword) }}
@@ -56,11 +62,25 @@ 'attr': {'class': 'w-full px-4 py-2 bg-indigo-600 text-white font-semibold rounded-md hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500'} }) }}
+ {% for type, messages in app.flashes %} -
+
{% for message in messages %} -
- {{ message }} +
+
+ {% if type == 'success' %} + Succès: + {% else %} + Erreur: + {% endif %} +
+

{{ message }}

{% endfor %}