From 3103e46acabde881358fc4af9ad3e1cfdd113d6c Mon Sep 17 00:00:00 2001
From: Florine Lefebvre <florine.lefebvre.etu@univ-lille.fr>
Date: Thu, 6 Mar 2025 18:06:49 +0100
Subject: [PATCH] modification du mdp possible

---
 WEB-INF/src/controleur/Account.java | 29 +++++++++++++++++++++++++++--
 WEB-INF/vue/compte.jsp              |  6 +++++-
 WEB-INF/vue/creerFil.jsp            |  4 ++--
 3 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/WEB-INF/src/controleur/Account.java b/WEB-INF/src/controleur/Account.java
index 46f9664..0b3f559 100644
--- a/WEB-INF/src/controleur/Account.java
+++ b/WEB-INF/src/controleur/Account.java
@@ -1,6 +1,8 @@
 package controleur;
 
 import java.io.IOException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 
 import jakarta.servlet.ServletException;
 import jakarta.servlet.annotation.WebServlet;
@@ -34,10 +36,33 @@ public class Account extends HttpServlet{
             case "update":
                 String firstname = req.getParameter("firstname");
                 String lastname = req.getParameter("lastname");
+                String password = req.getParameter("password");
 
                 User user = daoUser.findByUsername(username);
-                user.setFirstname(firstname);
-                user.setLastname(lastname);
+                if(!firstname.equals("")) user.setFirstname(firstname);
+                if(!lastname.equals("")) user.setLastname(lastname);
+                if(!password.equals("")){
+                    String hashedPassword;
+        
+                    MessageDigest md;
+                    this.getServletContext();
+                    try {
+                        md = MessageDigest.getInstance("MD5");
+                        md.update(password.getBytes());
+                        byte[] byteOfPasswordMD = md.digest();
+                        StringBuilder sb = new StringBuilder();
+                        for (byte b : byteOfPasswordMD) {
+                            sb.append(String.format("%02x", b));
+                        }
+                        hashedPassword = sb.toString();
+                    } catch (NoSuchAlgorithmException e) {
+                        req.setAttribute("error", "Problème lors du hashage du mot de passe");
+                        req.getRequestDispatcher("/WEB-INF/vue/error.jsp").forward(req, resp);
+                        return;
+                    }
+
+                    user.setPassword(hashedPassword);
+                }
                 daoUser.update(user);
                 resp.sendRedirect("navigation?page=compte");
                 break;
diff --git a/WEB-INF/vue/compte.jsp b/WEB-INF/vue/compte.jsp
index 4007fad..24c468c 100644
--- a/WEB-INF/vue/compte.jsp
+++ b/WEB-INF/vue/compte.jsp
@@ -82,6 +82,10 @@
                                     </p>
                                     <input class="form-control" name="username" type="text" value="<%= username %>" disabled>
                                 </div>
+                                <div class="mt-2 mb-3">
+                                    <p class="mb-1">Mot de passe</p>
+                                    <input class="form-control" name="password" type="password" placeholder="••••••••••" maxlength="50">
+                                </div>
                                 <div class="mt-2 mb-3">
                                     <p class="mb-1">Prénom</p>
                                     <input class="form-control" name="firstname" type="text" value="<%= user.getFirstname() %>" maxlength="50">
@@ -108,7 +112,7 @@
                                     <a class="ms-3 align-self-center btn btn-success" href="navigation?page=creerFil">Créer un fil <i class="bi-plus-square-fill"></i></a>
                                 </div>
                             </div>
-                        <% } else {%> 
+                        <% } else { %>
 
                             <% for(Thread thread : daoThread.findByCreator(username)){ %>
 
diff --git a/WEB-INF/vue/creerFil.jsp b/WEB-INF/vue/creerFil.jsp
index be14c35..1a3f162 100644
--- a/WEB-INF/vue/creerFil.jsp
+++ b/WEB-INF/vue/creerFil.jsp
@@ -68,8 +68,8 @@
                                     <input class="form-control" name="username" type="text" value="<%= (String) session.getAttribute("username")%>" disabled>
                                 </div>
                             </div>
-                            <div class="mt-5 d-flex flex-column justify-content-center">
-                                <input class="btn btn-primary flex-fill" type="submit" value="Créer un fil">
+                            <div class="mt-5 d-flex justify-content-center">
+                                <input class="btn btn-primary" type="submit" value="Créer un fil">
                             </div>
                         </form>
                     </div>
-- 
GitLab