Browse Source

Ajout de la connexion

Clément K 4 years ago
parent
commit
d024b3568a

+ 34 - 2
src/Controller/LoginController.php

@@ -2,19 +2,29 @@
 
 namespace App\Controller;
 
+use App\Entity\User;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
+use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpFoundation\Session\Session;
 use Symfony\Component\Routing\Annotation\Route;
 use Symfony\Component\Form\Extension\Core\Type\TextType;
 use Symfony\Component\Form\Extension\Core\Type\PasswordType;
+use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
 
 class LoginController extends AbstractController
 {
     /**
      * @Route("/login", name="login")
      */
-    public function index(): Response
+    public function index(Request $request, UserPasswordEncoderInterface $encoder): Response
     {
+        $session = $this->get('session');
+
+        if (null !== $session->get('user')) {
+            $session->save();
+            return $this->redirectToRoute('profile', ['id' => $session->get('user')]);
+        }
 
         // $profile = new User();
 
@@ -30,8 +40,30 @@ class LoginController extends AbstractController
         // Génération du formulaire
         $form = $formBuilder->getForm();
 
+        if ($request->getMethod() == 'POST') {
+            $form->handleRequest($request);
+            if ($form->isValid()) {
+                $id = $form->get("identifiant")->getData();
+                $passwd = $form->get('mot_de_passe')->getData();
+                $em = $this->getDoctrine()->getManager();
+                $repository_profile = $em->getRepository(User::class);
+                $profile = $repository_profile->findOneBy(array('username' => $id));
+                if ($profile) {
+                    if ($encoder->isPasswordValid($profile, $passwd)) {
+                        $session->set('user', $id);
+                        return $this->render('profile/index.html.twig');
+                    }
+                }
+                return $this->render('login/index.html.twig', [
+                    'message' => "Utilisateur ou mot de passe incorrect",
+                    'form' => $form->createView()
+                ]);
+            }
+        }
+
         return $this->render('login/index.html.twig', [
-            'form' => $form->createView()
+            'form' => $form->createView(),
+            'message' => ""
         ]);
     }
 }

+ 1 - 0
src/Controller/ProfileController.php

@@ -5,6 +5,7 @@ namespace App\Controller;
 use App\Entity\User;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpFoundation\Session\Session;
 use Symfony\Component\Routing\Annotation\Route;
 
 class ProfileController extends AbstractController

+ 13 - 2
src/Controller/RegisterController.php

@@ -44,14 +44,24 @@ class RegisterController extends AbstractController
         $form = $formBuilder->getForm();
 
         if ($request->getMethod() == 'POST') {
+
             $form->handleRequest($request);
             if ($form->isValid()) {
+                $chosen_username = $form->get("identifiant")->getData();
+                $em = $this->getDoctrine()->getManager();
+                $repository_profile = $em->getRepository(User::class);
+                $profile = $repository_profile->findOneBy(array('username' => $chosen_username));
+                if ($profile) {
+                    return $this->render('register/index.html.twig', [
+                        'message' => "Nom d'utilisateur déjà existant",
+                        'form' => $form->createView()
+                    ]);
+                }
                 $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');
@@ -59,7 +69,8 @@ class RegisterController extends AbstractController
         }
 
         return $this->render('register/index.html.twig', [
-            'form' => $form->createView()
+            'form' => $form->createView(),
+            'message' => ""
         ]);
     }
 }

+ 1 - 1
templates/base.html.twig

@@ -10,10 +10,10 @@
         {% endblock %}
 
         {% block javascripts %}
-            {#{{ encore_entry_script_tags('app') }}#}
         {% endblock %}
     </head>
     <body>
         {% block body %}{% endblock %}
+
     </body>
 </html>

+ 3 - 0
templates/login/index.html.twig

@@ -3,6 +3,9 @@
 {% block title %}Se connecter{% endblock %}
 
 {% block body %}
+    {% if message %}
+        <div>{{ message }}</div>
+    {% endif %}
 {{ form_start(form) }}
 {{ form_errors(form) }}
     {{ form_widget(form) }} <input type="submit">

+ 6 - 2
templates/register/index.html.twig

@@ -3,8 +3,12 @@
 {% block title %}S'enregistrer{% endblock %}
 
 {% block body %}
+    {% if message %}
+        <div>{{ message }}</div>
+    {% endif %}
 {{ form_start(form) }}
-{{ form_errors(form) }}
-    {{ form_widget(form) }} <input type="submit">
+    {{ form_errors(form) }}
+    {{ form_widget(form) }}
+    <input type="submit">
 {{ form_end(form) }}
 {% endblock %}