Browse Source

Ajout gestion de l'inscription avec la bdd

Clément K 4 years ago
parent
commit
6cafaac949

+ 3 - 0
config/packages/security.yaml

@@ -1,4 +1,7 @@
 security:
+    encoders:
+        App\Entity\User:
+            algorithm: bcrypt
     # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
     providers:
         users_in_memory: { memory: null }

+ 1 - 1
src/Controller/LoginController.php

@@ -25,7 +25,7 @@ class LoginController extends AbstractController
         $formBuilder
             ->add('identifiant', TextType::class)
             ->add('mot_de_passe', PasswordType::class)
-            ->setAction($this->generateUrl('login'));;
+            ->setAction($this->generateUrl('login'));
 
         // Génération du formulaire
         $form = $formBuilder->getForm();

+ 27 - 5
src/Controller/RegisterController.php

@@ -2,7 +2,10 @@
 
 namespace App\Controller;
 
+use App\Entity\User;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
+use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
+use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\Routing\Annotation\Route;
 use Symfony\Component\Form\Extension\Core\Type\TextType;
@@ -10,15 +13,16 @@ use Symfony\Component\Form\Extension\Core\Type\PasswordType;
 use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
 use Symfony\Component\Form\Extension\Core\Type\TextareaType;
 use Symfony\Component\Form\Extension\Core\Type\EmailType;
+use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
 
 class RegisterController extends AbstractController
 {
     /**
      * @Route("/register", name="register")
      */
-    public function index(): Response
+    public function index(Request $request, UserPasswordEncoderInterface $encoder): Response
     {
-        // $profile = new User();
+        $user = new User();
 
         // Instanciation du fromBuilder
         $formBuilder = $this->createFormBuilder(); //$profile);
@@ -27,15 +31,33 @@ class RegisterController extends AbstractController
         $formBuilder
             ->add('identifiant', TextType::class)
             ->add('courriel', EmailType::class, ['required' => false])
-            ->add('mot_de_passe', PasswordType::class)
-            ->add('confirmer_le_mot_de_passe', PasswordType::class)
+            ->add('mot_de_passe', RepeatedType::class, array(
+                'type' => PasswordType::class,
+                'first_options' => array('label' => 'Mot de passe'),
+                'second_options' => array('label' => 'Répéter le mot de passe')
+            ))
             ->add('description', TextareaType::class, ['required' => false])
             ->add('profil_prive', CheckboxType::class, ['required' => false])
-            ->setAction($this->generateUrl('register'));;
+            ->setAction($this->generateUrl('register'));
 
         // Génération du formulaire
         $form = $formBuilder->getForm();
 
+        if ($request->getMethod() == 'POST') {
+            $form->handleRequest($request);
+            if ($form->isValid()) {
+                $user->setUsername($form->get("identifiant")->getData());
+                $encoded_passwd = $encoder->encodePassword($user, $form->get('mot_de_passe')->getData());
+                $user->setPassword($encoded_passwd);
+                $user->setIsPrivate($form->get("profil_prive")->getData());
+                $user->setDescription($form->get('description')->getData());
+                $em = $this->getDoctrine()->getManager();
+                $em->persist($user);
+                $em->flush();
+                return $this->redirectToRoute('index');
+            }
+        }
+
         return $this->render('register/index.html.twig', [
             'form' => $form->createView()
         ]);

+ 17 - 1
src/Entity/User.php

@@ -6,11 +6,12 @@ use App\Repository\UserRepository;
 use Doctrine\Common\Collections\ArrayCollection;
 use Doctrine\Common\Collections\Collection;
 use Doctrine\ORM\Mapping as ORM;
+use Symfony\Component\Security\Core\User\UserInterface;
 
 /**
  * @ORM\Entity(repositoryClass=UserRepository::class)
  */
-class User
+class User implements UserInterface
 {
     /**
      * @ORM\Id
@@ -224,4 +225,19 @@ class User
 
         return $this;
     }
+
+    public function getRoles()
+    {
+        // TODO: Implement getRoles() method.
+    }
+
+    public function getSalt()
+    {
+        // TODO: Implement getSalt() method.
+    }
+
+    public function eraseCredentials()
+    {
+        // TODO: Implement eraseCredentials() method.
+    }
 }