diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/listener/SessionServletContextListener.java b/S2/DevWeb/Projet/src/main/java/uppa/project/listener/SessionServletContextListener.java new file mode 100644 index 0000000..28a0028 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/listener/SessionServletContextListener.java @@ -0,0 +1,27 @@ +package uppa.project.listener; + +import jakarta.servlet.ServletContextEvent; +import jakarta.servlet.ServletContextListener; +import jakarta.servlet.http.HttpSession; +import java.util.HashSet; +import java.util.Set; + +public class SessionServletContextListener implements ServletContextListener { + public void contextInitialized(ServletContextEvent event){ + Set logins = new HashSet(); + event.getServletContext().setAttribute("loginSession", logins); + } + + public static void addSession(HttpSession session){ + Set logins = (Set) session.getServletContext().getAttribute("loginSession"); + logins.add(session); + } + + public static void removeSession(HttpSession session){ + Set logins = (Set) session.getServletContext().getAttribute("loginSession"); + logins.remove(session); + } + + public void contextDestroyed(ServletContextEvent event){} +} + diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/LoginServlet.java b/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/LoginServlet.java index 9adf8ed..63a8b71 100644 --- a/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/LoginServlet.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/LoginServlet.java @@ -31,4 +31,4 @@ public class LoginServlet extends HttpServlet { public void destroy() { } -} \ No newline at end of file +} diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/MainMenuServlet.java b/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/MainMenuServlet.java index 6909e40..f540f59 100644 --- a/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/MainMenuServlet.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/MainMenuServlet.java @@ -11,9 +11,11 @@ import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Set; import uppa.project.pojo.Game; import uppa.project.pojo.Player; import uppa.project.pojo.User; @@ -32,23 +34,26 @@ public class MainMenuServlet extends HttpServlet { } manageNewGame(request, response, user); manageStatistiques(request, response, user); - response.sendRedirect(request.getContextPath() + "/main-menu"); + request.getRequestDispatcher("/WEB-INF/views/main-menu.jsp").forward(request, response); } public void destroy() { } - private void manageMainMenu(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - - } - private void manageNewGame(HttpServletRequest request, HttpServletResponse response, User sessionUser) throws IOException, ServletException { List connectedUsers = new ArrayList(); - /*TODO: récuperer la liste des joueurs connectés - penser à retirer l'utilisateur principal de la liste*/ + Set loginsSessions = (Set) request.getServletContext().getAttribute("loginSession"); + if (loginsSessions == null) { + throw new RuntimeException("No login sessions found"); + } + for(HttpSession session : loginsSessions) { + User connectedUser = (User) session.getAttribute("user"); + if(session.getServletContext().getContextPath().equals(request.getServletContext().getContextPath()) && connectedUser != null && !connectedUser.equals(sessionUser)) { + connectedUsers.add(connectedUser); + } + } connectedUsers.remove(sessionUser); request.setAttribute("connectedUsers", connectedUsers); - request.getRequestDispatcher("/WEB-INF/views/new-game.jsp").forward(request, response); } private void manageStatistiques(HttpServletRequest request, HttpServletResponse response, User sessionUser) throws IOException, ServletException { diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/NewGameServlet.java b/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/NewGameServlet.java deleted file mode 100644 index 3d0a9e7..0000000 --- a/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/NewGameServlet.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * NewGameServlet.java, 20/03/2024 - * UPPA M1 TI 2023-2024 - * Pas de copyright, aucun droits - */ - -package uppa.project.servlet; - -import jakarta.servlet.ServletContext; -import jakarta.servlet.ServletException; -import jakarta.servlet.annotation.WebServlet; -import jakarta.servlet.http.HttpServlet; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.servlet.http.HttpSession; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import uppa.project.pojo.User; - - -@WebServlet(name = "newGameServlet", value = "/new-game") -public class NewGameServlet extends HttpServlet { - public void init() { - } - - public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - - } - - public void destroy() { - } -} diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/api/auth/AuthLoginServlet.java b/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/api/auth/AuthLoginServlet.java index 1264377..7acec72 100644 --- a/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/api/auth/AuthLoginServlet.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/api/auth/AuthLoginServlet.java @@ -56,7 +56,6 @@ public class AuthLoginServlet extends HttpServlet { JsonElement password = jsonBody.get("password"); if (username == null || password == null) { int STATUS = 400; - ErrorResponse error = new ErrorResponse(STATUS, "Bad Request", "Username and password are required"); response.setStatus(STATUS); out.println(gson.toJson(error)); @@ -101,4 +100,4 @@ public class AuthLoginServlet extends HttpServlet { public void destroy() { } -} \ No newline at end of file +} diff --git a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/web.xml b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/web.xml index 28f95c6..05b6ff2 100644 --- a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/web.xml +++ b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/web.xml @@ -3,4 +3,9 @@ xmlns="https://jakarta.ee/xml/ns/jakartaee" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" version="5.0"> - \ No newline at end of file + + + uppa.project.listener.SessionServletContextListener + + +