From 3d2af56991d76fdb935d054cc7414f37b75c3f35 Mon Sep 17 00:00:00 2001 From: Yannis Devos <yannis.devos.etu@univ-lille.fr> Date: Fri, 14 Mar 2025 18:19:39 +0100 Subject: [PATCH] Changement de mdp et debut du delete --- WEB-INF/src/controleurs/Account.java | 39 +++++++++++++++++--- WEB-INF/src/controleurs/DeleteAccount.java | 41 ++++++++++++++++++++++ WEB-INF/src/dao/UserDAO.java | 23 ++++++++++-- css/account.css | 5 +++ 4 files changed, 100 insertions(+), 8 deletions(-) create mode 100644 WEB-INF/src/controleurs/DeleteAccount.java create mode 100644 css/account.css diff --git a/WEB-INF/src/controleurs/Account.java b/WEB-INF/src/controleurs/Account.java index bdf889d..ddc2dcd 100644 --- a/WEB-INF/src/controleurs/Account.java +++ b/WEB-INF/src/controleurs/Account.java @@ -22,15 +22,14 @@ public class Account extends HttpServlet { if (req.getSession().getAttribute("user") != null) { UserDAO userDao = new UserDAO(); - ThreadDAO threadDao = new ThreadDAO(); PrintWriter out = res.getWriter(); String login = (String) req.getSession().getAttribute("login"); - User user = (User) req.getSession().getAttribute("user"); if (user != null) { out.println("<html><body><meta charset=\"utf-8\">"); out.println("<link rel=\"stylesheet\" href=\"css/feed.css\">"); + out.println("<link rel=\"stylesheet\" href=\"css/account.css\">"); out.println("<title>Account</title>"); out.println("<h1>Account Settings</h1>"); @@ -38,15 +37,45 @@ public class Account extends HttpServlet { out.println(PageGeneration.generateNavMenu()); out.println("</body>"); - out.println("<form action=\"/AccountSettings\" method=\"post\"></form>"); - out.println("<button type=\"submit\">test</button>"); + + + out.println("<h2>CHANGE YOUR PASSWORD</h2>"); + out.println("<form class=\"changepwdForm\" action=\"/s4a021-web-backend/Account\">"); + out.println("<input name=\"newPwd\" type=\"password\" placeholder=\"New password\">"); + out.println("<button type=\"submit\">Change it !</button>"); + out.println("</form>"); + + String npwd = req.getParameter("newPwd"); + if (npwd != null){ + System.out.println(user.getUserName()); + System.out.println(user.getPwd()); + System.out.println(user.getId()); + boolean b = userDao.updatePassword(user.getUserName(), user.getPwd(), npwd); + System.out.println(b); + if (b == true){ + out.println("<p style=\"color:lightgreen\">Your password was successfully changed"); + }else { + out.println("<p style=\"color:red\">Hmmm... try again"); + } + } + +// out.println("<h2>JE SAIS PAS</h2>"); +// out.println("<form class=\"changepwdForm\" action=\"/s4a021-web-backend/Account?interact=del\">"); +// out.println("<button type=\"submit\">Delete Account</button>"); +// out.println("</form>"); + + out.println("<h2>DELETE YOUR ACCOUNT</h2>"); + out.println("<form class=\"delForm\" action=\"/s4a021-web-backend/deletedAccount\">"); + out.println("<button type=\"submit\">Delete Account</button>"); + out.println("</form>"); + out.println("<footer>"); out.println("Connected as " + login); out.println("</footer>"); out.println("</html>"); } } else { - res.sendRedirect("/index.html"); + res.sendRedirect("/s4a021-web-backend/"); } } } diff --git a/WEB-INF/src/controleurs/DeleteAccount.java b/WEB-INF/src/controleurs/DeleteAccount.java new file mode 100644 index 0000000..29b6bf6 --- /dev/null +++ b/WEB-INF/src/controleurs/DeleteAccount.java @@ -0,0 +1,41 @@ +package controleurs; + +import dao.ThreadDAO; +import dao.UserDAO; +import dto.Message; +import dto.MyThread; +import dto.User; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +import java.io.IOException; +import java.io.PrintWriter; +import java.sql.SQLException; +import java.util.List; + +@WebServlet("/deletedAccount") +public class DeleteAccount extends HttpServlet { + @Override + public void service(HttpServletRequest req, HttpServletResponse res) throws IOException { + + if (req.getSession().getAttribute("user") != null) { + UserDAO userDao = new UserDAO(); + PrintWriter out = res.getWriter(); + String login = (String) req.getSession().getAttribute("login"); + User user = (User) req.getSession().getAttribute("user"); + + if (user != null) { + out.println("<html><body><meta charset=\"utf-8\">"); + out.println("<link rel=\"stylesheet\" href=\"css/feed.css\">"); + out.println("<link rel=\"stylesheet\" href=\"css/account.css\">"); + out.println("<title>Account</title>"); + out.println("</body>"); + out.println("Your account was successfully deleted !"); + } + } else { + res.sendRedirect("/s4a021-web-backend/"); + } + } +} diff --git a/WEB-INF/src/dao/UserDAO.java b/WEB-INF/src/dao/UserDAO.java index 9b098e9..d53c633 100644 --- a/WEB-INF/src/dao/UserDAO.java +++ b/WEB-INF/src/dao/UserDAO.java @@ -31,6 +31,23 @@ public class UserDAO { } } + public boolean updatePassword(String username, String password, String newPassword){ + try{ + if (isDatabased(getUserByLogs(username, password))) { + PreparedStatement stmt = this.con.prepareStatement("UPDATE userAccount SET password=? WHERE username=? AND password=?"); + stmt.setString(1, newPassword); + stmt.setString(2, username); + stmt.setString(3, password); + + stmt.executeUpdate(); + return true; + } + }catch (SQLException sqle){ + sqle.getStackTrace(); + } + return false; + } + public List<User> getAllUsers(){ ArrayList<User> users = new ArrayList<>(); try{ @@ -48,7 +65,7 @@ public class UserDAO { } catch (SQLException sqle) { sqle.getStackTrace(); } - + return users; } @@ -121,7 +138,7 @@ public class UserDAO { public boolean userExists(String login, String password) { if (getUserByLogs(login, password) == null) { return false; - } + } return true; } @@ -282,7 +299,7 @@ public class UserDAO { return messages; } - public LocalDate getFollowDateOfThread(User user, MyThread thread) + public LocalDate getFollowDateOfThread(User user, MyThread thread) throws SQLException { LocalDate followDate = null; PreparedStatement ps = this.con.prepareStatement(""" diff --git a/css/account.css b/css/account.css new file mode 100644 index 0000000..b06fd30 --- /dev/null +++ b/css/account.css @@ -0,0 +1,5 @@ +.delForm>button{ + background-color : red; + border-color : red; + color : white; +} \ No newline at end of file -- GitLab