diff --git a/WEB-INF/classes/controleurs/Authent.class b/WEB-INF/classes/controleurs/Authent.class index 139134f5554cfa3055570d95a80febbdc68ca1e5..920855b89692099df8c6a5dab8660d799935b3fe 100644 Binary files a/WEB-INF/classes/controleurs/Authent.class and b/WEB-INF/classes/controleurs/Authent.class differ diff --git a/WEB-INF/classes/controleurs/Create.class b/WEB-INF/classes/controleurs/Create.class index 05e14fb6cd5a891051b6c9b75f5917a9ba48cefc..9efc2667aa778558e4bc0c4b4d73f917a06fbe2b 100644 Binary files a/WEB-INF/classes/controleurs/Create.class and b/WEB-INF/classes/controleurs/Create.class differ diff --git a/WEB-INF/classes/dao/UtilisateurDAO.class b/WEB-INF/classes/dao/UtilisateurDAO.class index f26a8e259ea4a9876e13616ecc2c14ef86c594e3..8595cfff30b6338fe906d1377094fbc24d027814 100644 Binary files a/WEB-INF/classes/dao/UtilisateurDAO.class and b/WEB-INF/classes/dao/UtilisateurDAO.class differ diff --git a/WEB-INF/classes/dto/Utilisateur.class b/WEB-INF/classes/dto/Utilisateur.class index a71b683cdb265925591456bce2ba70b2d61eaabd..c87498ebe0bb2fa3021a67e8342d704ec3b5f040 100644 Binary files a/WEB-INF/classes/dto/Utilisateur.class and b/WEB-INF/classes/dto/Utilisateur.class differ diff --git a/WEB-INF/src/controleurs/AddUser.java b/WEB-INF/src/controleurs/AddUser.java new file mode 100644 index 0000000000000000000000000000000000000000..8b0e1e96783cef7a8e7e70b2d4ef85b57d5afbc3 --- /dev/null +++ b/WEB-INF/src/controleurs/AddUser.java @@ -0,0 +1,68 @@ +package controleurs; + +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import dao.FilDAO; +import dao.MessageDAO; +import dao.ParticipantFilDAO; +import dao.UtilisateurDAO; +import dto.Fil; +import dto.Utilisateur; +import jakarta.servlet.*; +import jakarta.servlet.http.*; +import jakarta.servlet.annotation.WebServlet; + +//Servlet qui permet de rediriger l'utilisateur vers le login.html si il n'est pas connecté, et si il l'est, +// on récupère sa liste de fils et on redirige vers la JSP menu +@WebServlet("/AddUser") +public class AddUser extends HttpServlet { + + protected void doGet(HttpServletRequest req, HttpServletResponse res) + throws ServletException, IOException { + 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(); + List<Fil> fils = filDAO.getFilsByUser(utilisateur.getId()); + req.setAttribute("fils", fils); + String rese = req.getParameter("filId"); + if (rese != null) { + if (filDAO.partFil(Integer.parseInt(rese), utilisateur.getId())) { + req.setAttribute("filId", rese); + + ParticipantFilDAO participantFilDAO = new ParticipantFilDAO(); + + List<Utilisateur> liste = participantFilDAO.getUsersByFilId(Integer.parseInt(rese)); + + req.setAttribute("listeUsers", liste); + + } + } + req.getRequestDispatcher("addUser.jsp").forward(req, res); + } + } + + protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String userIdString = req.getParameter("userId"); + String filIdString = req.getParameter("filId"); + if (userIdString != null) { + int userId = Integer.parseInt(userIdString); + + int filId = Integer.parseInt(filIdString); + + UtilisateurDAO utilisateurDAO = new UtilisateurDAO(); + utilisateurDAO.deleteUserById(userId, filId); + + res.sendRedirect("Menu?filId="+req.getParameter("filId")); + + } else { + res.sendRedirect("Menu"); + } + } +} \ No newline at end of file diff --git a/WEB-INF/src/controleurs/Menu.java b/WEB-INF/src/controleurs/Menu.java index 67c56f1ac741052eb85b5cfce90f748c57232a8a..74d11f90b46fd947cf2b28731081798503924f09 100644 --- a/WEB-INF/src/controleurs/Menu.java +++ b/WEB-INF/src/controleurs/Menu.java @@ -7,6 +7,7 @@ import java.util.Map; import dao.FilDAO; import dao.MessageDAO; +import dao.ParticipantFilDAO; import dao.UtilisateurDAO; import dto.Fil; import dto.Utilisateur; @@ -47,7 +48,20 @@ public class Menu extends HttpServlet { userNames.put(mess.getUid(), user.getPrenom()+" "+user.getNom()); } } + + ParticipantFilDAO participantFilDAO = new ParticipantFilDAO(); + // Vérifier si l'utilisateur est admin du fil + boolean isAdmin = participantFilDAO.isAdmin(utilisateur, Integer.parseInt(rese)); + + // Envoyer les données à la JSP + req.setAttribute("isAdmin", isAdmin); + req.setAttribute("userNames", userNames); + + List<Utilisateur> liste = participantFilDAO.getUsersByFilId(Integer.parseInt(rese)); + + req.setAttribute("listeUsers", liste); + } } req.getRequestDispatcher("menu.jsp").forward(req, res); diff --git a/WEB-INF/src/dao/ParticipantFilDAO.java b/WEB-INF/src/dao/ParticipantFilDAO.java index 9f19434852fab620879691cf6448dbb48d1756d9..9120a9c473bc124dd48bcef0e83851c1c8c364fa 100644 --- a/WEB-INF/src/dao/ParticipantFilDAO.java +++ b/WEB-INF/src/dao/ParticipantFilDAO.java @@ -1,9 +1,12 @@ package dao; +import dto.Utilisateur; + import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.ArrayList; import java.util.List; public class ParticipantFilDAO { @@ -46,4 +49,22 @@ public class ParticipantFilDAO { return false; } } + + public List<dto.Utilisateur> getUsersByFilId(int filId){ + //Récupérer la liste des utilisateurs du fil passé en paramètre + String query = "SELECT u.* FROM UTILISATEUR AS u JOIN PARTICIPANT_FIL AS participant ON u.U_ID = participant.UP_ID WHERE participant.FP_ID = ?"; + try (Connection con = ds.getConnection();){ + PreparedStatement ps = con.prepareStatement(query); + ps.setInt(1, filId); + ResultSet rs = ps.executeQuery(); + List<dto.Utilisateur> liste = new ArrayList<>(); + while (rs.next()){ + liste.add(new Utilisateur(rs.getInt("u_id"), rs.getString("mail"), rs.getString("nom"), rs.getString("prenom"))); + } + return liste; + }catch (Exception e){ + System.err.println(e.getMessage()); + return null; + } + } } diff --git a/WEB-INF/src/dao/UtilisateurDAO.java b/WEB-INF/src/dao/UtilisateurDAO.java index d395625a703c80db3dac029f8df5dc382ba126b9..33f8c71a2709a27313c075db8aa4a6ea3a0f2b58 100644 --- a/WEB-INF/src/dao/UtilisateurDAO.java +++ b/WEB-INF/src/dao/UtilisateurDAO.java @@ -131,4 +131,18 @@ public class UtilisateurDAO { } return userId; } + + public boolean deleteUserById(int userId, int filId) { + String query = "Delete from participant_fil where up_id = ? and fp_id = ?"; + try (Connection con = ds.getConnection()) { + PreparedStatement ps = con.prepareStatement(query); + ps.setInt(1, userId); + ps.setInt(2, filId); + ResultSet rs = ps.executeQuery(); + return rs.next(); + } catch (Exception e) { + System.err.println(e.getMessage()); + return false; // En cas d'erreur, on retourne false + } + } } \ No newline at end of file diff --git a/addUser.jsp b/addUser.jsp index d115e002b2e6dd6f2534913399573a9fafc38e26..0134278d8919a34db91da7bbb83546c51714e4c0 100644 --- a/addUser.jsp +++ b/addUser.jsp @@ -1,4 +1,7 @@ <%@ page import="dto.Utilisateur" %> +<%@ page import="dao.ParticipantFilDAO" %> +<%@ page import="java.util.List" %> + <!DOCTYPE html> <html lang="en"> @@ -25,6 +28,33 @@ <button type="submit" class="btn btn-primary">Ajouter</button> </form> </div> + +<div class="container"> + <h2>Liste des Membres du Fil</h2> + <ul class="list-group"> + <% + List<Utilisateur> utilisateurs = (List<Utilisateur>) request.getAttribute("listeUsers"); + + if (utilisateurs != null && !utilisateurs.isEmpty()) { + for (Utilisateur user : utilisateurs) { + %> + <li class="list-group-item d-flex justify-content-between align-items-center"> + <%= user.getPrenom() %> <%= user.getNom() %> - <%= user.getEmail() %> + <form action="AddUser" method="post" style="display:inline;"> + <input type="hidden" name="userId" value="<%= user.getId() %>"> + <input type="hidden" name="filId" value="<%= request.getParameter("filId") %>"> + <button type="submit" class="btn btn-danger btn-sm">Supprimer</button> + </form> + </li> + <% + } + } else { + %> + <li class="list-group-item">Aucun membre trouve .</li> + <% } %> + </ul> +</div> + <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> </body> </html> \ No newline at end of file diff --git a/menu.jsp b/menu.jsp index 55207069fb0a698deba93c0808e7db20885248d9..655ed7af57f80587ca09a13cf3a98b5a1c2945f7 100644 --- a/menu.jsp +++ b/menu.jsp @@ -99,16 +99,21 @@ </div> <% } %> </div> - +<% +Boolean isAdmin = (Boolean) request.getAttribute("isAdmin"); +%> <form action="EnvoyerMessage" method="POST" class="w-100 mt-auto"> <input type="hidden" name="fid" value="<%= request.getAttribute("filId") %>"> <input type="hidden" name="uid" value="<%= utilisateur.getId() %>"> <div class="input-group p-1 rounded border d-flex align-items-center bg-white"> - <a href="addUser.jsp?filId=<%=request.getAttribute("filId")%>" class="btn btn-light text-dark fs3"> +<% +if(isAdmin){ +%> + <a href="AddUser?filId=<%=request.getAttribute("filId")%>" class="btn btn-light text-dark fs3"> <i class="bi bi-person-plus fs-4"></i> </a> - <span class="px-2 text-muted bg-white">|</span> +<% } %> <button class="btn btn-light text-dark" type="button"> <i class="bi bi-image fs-4"></i> </button>