diff --git a/WEB-INF/src/controleurs/AccountAuthent.java b/WEB-INF/src/controleurs/AccountAuthent.java index 7d0522747cc5f898fd5f08e813ea1ed77f1e1dd8..af17eeeab1cfd022385aa1eb1e776815e22f045c 100644 --- a/WEB-INF/src/controleurs/AccountAuthent.java +++ b/WEB-INF/src/controleurs/AccountAuthent.java @@ -1,7 +1,6 @@ package controleurs; import java.io.IOException; - import jakarta.servlet.http.*; import jakarta.servlet.annotation.WebServlet; import dao.UtilisateurDAO; @@ -20,6 +19,11 @@ public class AccountAuthent extends HttpServlet { String login = StringEscapeUtils.escapeHtml4(req.getParameter("login")); String mdp = StringEscapeUtils.escapeHtml4(req.getParameter("mdp")); + if (login == null || login.isEmpty() || mdp == null || mdp.isEmpty()) { + res.sendRedirect("Menu"); + return; + } + Utilisateur utilisateur = utilisateurDAO.checkUser(login, mdp); if (utilisateur != null) { diff --git a/WEB-INF/src/controleurs/AccountCreate.java b/WEB-INF/src/controleurs/AccountCreate.java index 740558ccc54b2fac2f6bb70a54863602250c0471..d6b1f38c39e93f6bb4d075ee343c86744834497c 100644 --- a/WEB-INF/src/controleurs/AccountCreate.java +++ b/WEB-INF/src/controleurs/AccountCreate.java @@ -1,7 +1,6 @@ package controleurs; import java.io.IOException; - import jakarta.servlet.http.*; import jakarta.servlet.annotation.WebServlet; import dao.UtilisateurDAO; @@ -32,7 +31,9 @@ public class AccountCreate extends HttpServlet { res.sendRedirect("new.html"); return; } + Utilisateur utilisateur = new Utilisateur(mail, nom, prenom); + if (utilisateurDAO.addUser(utilisateur, mdp)) { utilisateur.setId(utilisateurDAO.getUserIdByEmail(mail)); session.setAttribute("utilisateur", utilisateur); diff --git a/WEB-INF/src/controleurs/FilAddUser.java b/WEB-INF/src/controleurs/FilAddUser.java index fa37b7dbb65fcda205e22608b82434c1d287c49e..f757ae37641cb3e851c99476949067990779522d 100644 --- a/WEB-INF/src/controleurs/FilAddUser.java +++ b/WEB-INF/src/controleurs/FilAddUser.java @@ -28,10 +28,27 @@ public class FilAddUser extends HttpServlet { return; } - String filIdParam = StringEscapeUtils.escapeHtml4(req.getParameter("filId")); - int filId = Integer.parseInt(filIdParam); - String utilisateurs = StringEscapeUtils.escapeHtml4(req.getParameter("utilisateurs")); - boolean admin = Boolean.parseBoolean(StringEscapeUtils.escapeHtml4(req.getParameter("admin"))); + String filIdParam = req.getParameter("filId"); + if (filIdParam == null || filIdParam.isEmpty()) { + res.sendRedirect("Menu"); + return; + } + + int filId; + try { + filId = Integer.parseInt(filIdParam); + } catch (NumberFormatException e) { + res.sendRedirect("Menu"); + return; + } + + String utilisateurs = req.getParameter("utilisateurs"); + if (utilisateurs == null || utilisateurs.isEmpty()) { + res.sendRedirect("Menu?filId=" + filId); + return; + } + + boolean admin = Boolean.parseBoolean(req.getParameter("admin")); if (!participantFilDAO.isAdmin(u, filId)) { res.sendRedirect("Menu?filId=" + filId); @@ -46,7 +63,6 @@ public class FilAddUser extends HttpServlet { for (String email : users) { int userId = utilisateurDAO.getUserIdByEmail(email); - System.out.println(email); if (userId != -1) { participantFilDAO.addParticipant(userId, filId, admin); } diff --git a/WEB-INF/src/controleurs/FilCreate.java b/WEB-INF/src/controleurs/FilCreate.java index dc8abe1f253c2c7586a369c6bfac9ec3ca8e9cad..3eadc30312421e64a6555c20b34cb2ac4239e900 100644 --- a/WEB-INF/src/controleurs/FilCreate.java +++ b/WEB-INF/src/controleurs/FilCreate.java @@ -27,6 +27,12 @@ public class FilCreate extends HttpServlet { String titre = StringEscapeUtils.escapeHtml4(req.getParameter("titre")); String utilisateurs = StringEscapeUtils.escapeHtml4(req.getParameter("utilisateurs")); + + if (titre == null || titre.isEmpty() || utilisateurs == null || utilisateurs.isEmpty()) { + res.sendRedirect("Menu"); + return; + } + boolean admin = Boolean.parseBoolean(req.getParameter("admin")); List<String> users = Arrays.stream(utilisateurs.split("/")) @@ -34,6 +40,11 @@ public class FilCreate extends HttpServlet { .filter(email -> !email.isEmpty()) .collect(Collectors.toList()); + if (users.isEmpty()) { + res.sendRedirect("Menu"); + return; + } + FilDAO filDAO = new FilDAO(); int fid = filDAO.addFil(uid, titre, users, admin); diff --git a/WEB-INF/src/controleurs/FilLeave.java b/WEB-INF/src/controleurs/FilLeave.java index 3dacc7a961e106e8db877c8b6303b2fc9aef9f97..fa127f8a4e825966e6444a71c18b3d2132424dfa 100644 --- a/WEB-INF/src/controleurs/FilLeave.java +++ b/WEB-INF/src/controleurs/FilLeave.java @@ -10,8 +10,9 @@ import org.apache.tomcat.jakartaee.commons.lang3.StringEscapeUtils; @WebServlet("/LeaveFil") public class FilLeave extends HttpServlet { + protected void service(HttpServletRequest req, HttpServletResponse res) - throws ServletException, IOException { + throws IOException { HttpSession session = req.getSession(false); Utilisateur u = (Utilisateur) session.getAttribute("utilisateur"); if (u == null || u.getId() == 0) { @@ -19,11 +20,28 @@ public class FilLeave extends HttpServlet { return; } int uid = u.getId(); - int filId = Integer.parseInt(StringEscapeUtils.escapeHtml4(req.getParameter("filId"))); + + String filIdParam = StringEscapeUtils.escapeHtml4(req.getParameter("filId")); + if (filIdParam == null || filIdParam.isEmpty()) { + res.sendRedirect("Menu"); + return; + } + + int filId = -1; + try { + filId = Integer.parseInt(filIdParam); + } catch (NumberFormatException e) { + res.sendRedirect("Menu"); + return; + } + + if (filId <= 0) { + res.sendRedirect("Menu"); + return; + } ParticipantFilDAO participantFilDAO = new ParticipantFilDAO(); participantFilDAO.deleteUserById(uid, filId); - res.sendRedirect("Menu"); } } diff --git a/WEB-INF/src/controleurs/FilUser.java b/WEB-INF/src/controleurs/FilUser.java index f48c60a5a671b311180277fe877e4a0932e519e6..f67fa131578d732cc6cdec2e5d710adfc7b959f3 100644 --- a/WEB-INF/src/controleurs/FilUser.java +++ b/WEB-INF/src/controleurs/FilUser.java @@ -21,40 +21,48 @@ public class FilUser extends HttpServlet { res.setContentType("text/html;charset=UTF-8"); HttpSession session = req.getSession(true); Utilisateur utilisateur = (Utilisateur) session.getAttribute("utilisateur"); + if (utilisateur == null) { res.sendRedirect("login.html"); - } else { - List<Fil> fils = filDAO.getFilsByUser(utilisateur.getId()); - req.setAttribute("fils", fils); - String rese = req.getParameter("filId"); - if (rese != null) { - rese = StringEscapeUtils.escapeHtml4(rese); - if (participantFilDAO.partFil(Integer.parseInt(rese), utilisateur.getId())) { - req.setAttribute("filId", rese); + return; + } - List<Utilisateur> liste = participantFilDAO.getUsersByFilId(Integer.parseInt(rese)); + List<Fil> fils = filDAO.getFilsByUser(utilisateur.getId()); + req.setAttribute("fils", fils); + String filIdParam = req.getParameter("filId"); + if (filIdParam != null && !filIdParam.isEmpty()) { + filIdParam = StringEscapeUtils.escapeHtml4(filIdParam); + try { + int filId = Integer.parseInt(filIdParam); + if (participantFilDAO.partFil(filId, utilisateur.getId())) { + req.setAttribute("filId", filIdParam); + List<Utilisateur> liste = participantFilDAO.getUsersByFilId(filId); req.setAttribute("listeUsers", liste); } + } catch (NumberFormatException e) { + res.sendRedirect("Menu"); + return; } - req.getRequestDispatcher("addUser.jsp").forward(req, res); } + req.getRequestDispatcher("addUser.jsp").forward(req, res); } protected void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException { String userIdString = req.getParameter("userId"); String filIdString = req.getParameter("filId"); - - if (userIdString != null) { + if (userIdString != null && filIdString != null && !userIdString.isEmpty() && !filIdString.isEmpty()) { userIdString = StringEscapeUtils.escapeHtml4(userIdString); filIdString = StringEscapeUtils.escapeHtml4(filIdString); - int userId = Integer.parseInt(userIdString); - int filId = Integer.parseInt(filIdString); - - participantFilDAO.deleteUserById(userId, filId); - - res.sendRedirect("Menu?filId=" + filIdString); + try { + int userId = Integer.parseInt(userIdString); + int filId = Integer.parseInt(filIdString); + participantFilDAO.deleteUserById(userId, filId); + res.sendRedirect("Menu?filId=" + filIdString); + } catch (NumberFormatException e) { + res.sendRedirect("Menu"); + } } else { res.sendRedirect("Menu"); } diff --git a/WEB-INF/src/controleurs/LikeControler.java b/WEB-INF/src/controleurs/LikeControler.java index 58ddaf52a86ef3270a3562f6b8f37f1edb0bd357..4a93ac13a62e9eb063181cc14f90c5d74074716a 100644 --- a/WEB-INF/src/controleurs/LikeControler.java +++ b/WEB-INF/src/controleurs/LikeControler.java @@ -28,8 +28,27 @@ public class LikeControler extends HttpServlet { response.setContentType("text/html;charset=UTF-8"); HttpSession session = request.getSession(true); - int mid = Integer.parseInt(StringEscapeUtils.escapeHtml4(request.getParameter("messId"))); - int fid = Integer.parseInt(StringEscapeUtils.escapeHtml4(request.getParameter("fid"))); + String messIdParam = request.getParameter("messId"); + String fidParam = request.getParameter("fid"); + + if (messIdParam == null || messIdParam.isEmpty() || fidParam == null || fidParam.isEmpty()) { + response.sendRedirect("Menu"); + return; + } + + messIdParam = StringEscapeUtils.escapeHtml4(messIdParam); + fidParam = StringEscapeUtils.escapeHtml4(fidParam); + + int mid; + int fid; + + try { + mid = Integer.parseInt(messIdParam); + fid = Integer.parseInt(fidParam); + } catch (NumberFormatException e) { + response.sendRedirect("Menu"); + return; + } Utilisateur user = (Utilisateur) session.getAttribute("utilisateur"); @@ -45,6 +64,7 @@ public class LikeControler extends HttpServlet { } else { likeDAO.addLike(mid, user.getId()); } + response.sendRedirect("Menu?filId=" + fid); } } diff --git a/WEB-INF/src/controleurs/Menu.java b/WEB-INF/src/controleurs/Menu.java index 118d59e8cff41f9a97ac8bde1568f0a60984ef9e..987ac7c0098ccf0c9a9bfc1ac57402e3982abab0 100644 --- a/WEB-INF/src/controleurs/Menu.java +++ b/WEB-INF/src/controleurs/Menu.java @@ -23,43 +23,54 @@ public class Menu extends HttpServlet { res.setContentType("text/html;charset=UTF-8"); HttpSession session = req.getSession(true); Utilisateur utilisateur = (Utilisateur) session.getAttribute("utilisateur"); + if (utilisateur == null) { res.sendRedirect("login.html"); - } else { - FilDAO filDAO = new FilDAO(); - ParticipantFilDAO participantFilDAO = new ParticipantFilDAO(); - List<Fil> fils = filDAO.getFilsByUser(utilisateur.getId()); - req.setAttribute("fils", fils); - String rese = StringEscapeUtils.escapeHtml4(req.getParameter("filId")); - if (rese != null) { - if (participantFilDAO.partFil(Integer.parseInt(rese), utilisateur.getId())) { - MessageDAO mDAO = new MessageDAO(); - mDAO.checkTimeMessage(); - List<dto.Message> messages = mDAO.getLastMessages(Integer.parseInt(rese)); - req.setAttribute("message", messages); - req.setAttribute("filId", rese); - - Map<Integer, String> userNames = new HashMap<>(); - UtilisateurDAO utilisateurDAO = new UtilisateurDAO(); - for (dto.Message mess : messages) { - if (!userNames.containsKey(mess.getUid())) { - Utilisateur user = utilisateurDAO.getUserById(mess.getUid()); - userNames.put(mess.getUid(), user.getPrenom() + " " + user.getNom()); - } - } - - boolean isAdmin = participantFilDAO.isAdmin(utilisateur, Integer.parseInt(rese)); + return; + } - req.setAttribute("isAdmin", isAdmin); + FilDAO filDAO = new FilDAO(); + ParticipantFilDAO participantFilDAO = new ParticipantFilDAO(); + List<Fil> fils = filDAO.getFilsByUser(utilisateur.getId()); + req.setAttribute("fils", fils); - req.setAttribute("userNames", userNames); + String filIdParam = StringEscapeUtils.escapeHtml4(req.getParameter("filId")); + if (filIdParam == null || filIdParam.isEmpty()) { + res.sendRedirect("Menu"); + return; + } - List<Utilisateur> liste = participantFilDAO.getUsersByFilId(Integer.parseInt(rese)); + try { + int filId = Integer.parseInt(filIdParam); + if (participantFilDAO.partFil(filId, utilisateur.getId())) { + MessageDAO mDAO = new MessageDAO(); + mDAO.checkTimeMessage(); + List<dto.Message> messages = mDAO.getLastMessages(filId); + req.setAttribute("message", messages); + req.setAttribute("filId", filIdParam); - req.setAttribute("listeUsers", liste); + Map<Integer, String> userNames = new HashMap<>(); + UtilisateurDAO utilisateurDAO = new UtilisateurDAO(); + for (dto.Message mess : messages) { + if (!userNames.containsKey(mess.getUid())) { + Utilisateur user = utilisateurDAO.getUserById(mess.getUid()); + if (user != null) { + userNames.put(mess.getUid(), user.getPrenom() + " " + user.getNom()); + } + } } + boolean isAdmin = participantFilDAO.isAdmin(utilisateur, filId); + req.setAttribute("isAdmin", isAdmin); + List<Utilisateur> liste = participantFilDAO.getUsersByFilId(filId); + req.setAttribute("listeUsers", liste); + } else { + res.sendRedirect("Menu"); + return; } - req.getRequestDispatcher("menu.jsp").forward(req, res); + } catch (NumberFormatException e) { + res.sendRedirect("Menu"); + return; } + req.getRequestDispatcher("menu.jsp").forward(req, res); } } diff --git a/WEB-INF/src/controleurs/MessageSend.java b/WEB-INF/src/controleurs/MessageSend.java index 7d746c663023944cd0c2633c205adc5df9c29bea..257443691b2ebe88702fd4bd599ac21cf1edd182 100644 --- a/WEB-INF/src/controleurs/MessageSend.java +++ b/WEB-INF/src/controleurs/MessageSend.java @@ -24,13 +24,29 @@ public class MessageSend extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - int fid = Integer.parseInt(request.getParameter("fid")); - int uid = Integer.parseInt(request.getParameter("uid")); + + String fidParam = request.getParameter("fid"); + String uidParam = request.getParameter("uid"); + + if (fidParam == null || fidParam.isEmpty() || uidParam == null || uidParam.isEmpty()) { + response.sendRedirect("Menu"); + return; + } + + int fid = -1; + int uid = -1; + + try { + fid = Integer.parseInt(fidParam); + uid = Integer.parseInt(uidParam); + } catch (NumberFormatException e) { + response.sendRedirect("Menu"); + return; + } String message = StringEscapeUtils.escapeHtml4(request.getParameter("message")); HttpSession session = request.getSession(true); - Utilisateur user = (Utilisateur) session.getAttribute("utilisateur"); if (user == null || user.getId() == 0) { @@ -53,7 +69,6 @@ public class MessageSend extends HttpServlet { response.sendRedirect("Menu?filId=" + fid); return; } - if (message != null && !message.trim().isEmpty()) { if (isImage) { messageDAO.addMessage(fid, uid, imageData, true); diff --git a/sql/LilleConnect.sql b/sql/LilleConnect.sql index a263fc82a5622e9be3b4d719d1518e6a3268ae34..41dd4b4e9e4c5d6ae6622f26a665a48e96b15564 100644 --- a/sql/LilleConnect.sql +++ b/sql/LilleConnect.sql @@ -147,14 +147,14 @@ INSERT INTO MESSAGE (F_ID, U_ID, MESSAGE_DATA, IS_IMAGE, d_vie, DateMessage) VALUES ( (SELECT F_ID FROM FIL WHERE TITRE = 'Fil de Tom seul'), (SELECT U_ID FROM UTILISATEUR WHERE PRENOM = 'Tom' AND NOM = 'Dequesnes'), - convert_to('Message 1 de Tom', 'UTF8'), FALSE, 14, '2025-03-10 00:00:01' + convert_to('Message 1 de Tom', 'UTF8'), FALSE, 14, '2025-03-17 00:00:01' ); INSERT INTO MESSAGE (F_ID, U_ID, MESSAGE_DATA, IS_IMAGE, d_vie, DateMessage) VALUES ( (SELECT F_ID FROM FIL WHERE TITRE = 'Fil de Tom seul'), (SELECT U_ID FROM UTILISATEUR WHERE PRENOM = 'Tom' AND NOM = 'Dequesnes'), - convert_to('Message 2 de Tom', 'UTF8'), FALSE, 14, '2025-03-10 00:00:02' + convert_to('Message 2 de Tom', 'UTF8'), FALSE, 14, '2025-03-17 00:00:02' ); /* Giorgio dans son fil */ @@ -162,14 +162,14 @@ INSERT INTO MESSAGE (F_ID, U_ID, MESSAGE_DATA, IS_IMAGE, d_vie, DateMessage) VALUES ( (SELECT F_ID FROM FIL WHERE TITRE = 'Fil de Giorgio seul'), (SELECT U_ID FROM UTILISATEUR WHERE PRENOM = 'Giorgio' AND NOM = 'Utzeri'), - convert_to('Message 1 de Giorgio', 'UTF8'), FALSE, 14, '2025-03-10 00:00:03' + convert_to('Message 1 de Giorgio', 'UTF8'), FALSE, 14, '2025-03-17 00:00:03' ); INSERT INTO MESSAGE (F_ID, U_ID, MESSAGE_DATA, IS_IMAGE, d_vie, DateMessage) VALUES ( (SELECT F_ID FROM FIL WHERE TITRE = 'Fil de Giorgio seul'), (SELECT U_ID FROM UTILISATEUR WHERE PRENOM = 'Giorgio' AND NOM = 'Utzeri'), - convert_to('Message 2 de Giorgio', 'UTF8'), FALSE, 14, '2025-03-10 00:00:04' + convert_to('Message 2 de Giorgio', 'UTF8'), FALSE, 14, '2025-03-17 00:00:04' ); /* Tom et Giorgio dans le fil commun */ @@ -177,14 +177,14 @@ INSERT INTO MESSAGE (F_ID, U_ID, MESSAGE_DATA, IS_IMAGE, d_vie, DateMessage) VALUES ( (SELECT F_ID FROM FIL WHERE TITRE = 'Fil de discussion entre Tom et Giorgio'), (SELECT U_ID FROM UTILISATEUR WHERE PRENOM = 'Tom' AND NOM = 'Dequesnes'), - convert_to('Message 1 de Tom dans le fil commun', 'UTF8'), FALSE, 14, '2025-03-10 00:00:05' + convert_to('Message 1 de Tom dans le fil commun', 'UTF8'), FALSE, 14, '2025-03-17 00:00:05' ); INSERT INTO MESSAGE (F_ID, U_ID, MESSAGE_DATA, IS_IMAGE, d_vie, DateMessage) VALUES ( (SELECT F_ID FROM FIL WHERE TITRE = 'Fil de discussion entre Tom et Giorgio'), (SELECT U_ID FROM UTILISATEUR WHERE PRENOM = 'Giorgio' AND NOM = 'Utzeri'), - convert_to('Message 1 de Giorgio dans le fil commun', 'UTF8'), FALSE, 14, '2025-03-10 00:00:06' + convert_to('Message 1 de Giorgio dans le fil commun', 'UTF8'), FALSE, 14, '2025-03-17 00:00:06' ); \! echo 'Création de message de test avec succès'