diff --git a/WEB-INF/src/controleur/Account.java b/WEB-INF/src/controleur/Account.java index 46f9664b179d681cef595103d05dcb4cb01e2c26..0b3f5594b5d79182e1c49fce9f60a890ce668c0a 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 4007fad91d0fbb337a1e3926f9b4529a217a40c8..24c468cdea6049f0b3e4a8e1c513bd744ed241e1 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 be14c35edcbc7ab38d33ab196853cdc268795f2e..1a3f1620e4d7e365330805e10086f5d5622c1691 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>