mirror of
https://github.com/kmitresse/Cards-Rush.git
synced 2026-05-13 17:11:49 +00:00
feat: dev-web - add listener to stock all connected users
This commit is contained in:
+27
@@ -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<HttpSession> logins = new HashSet<HttpSession>();
|
||||
event.getServletContext().setAttribute("loginSession", logins);
|
||||
}
|
||||
|
||||
public static void addSession(HttpSession session){
|
||||
Set<HttpSession> logins = (Set<HttpSession>) session.getServletContext().getAttribute("loginSession");
|
||||
logins.add(session);
|
||||
}
|
||||
|
||||
public static void removeSession(HttpSession session){
|
||||
Set<HttpSession> logins = (Set<HttpSession>) session.getServletContext().getAttribute("loginSession");
|
||||
logins.remove(session);
|
||||
}
|
||||
|
||||
public void contextDestroyed(ServletContextEvent event){}
|
||||
}
|
||||
|
||||
@@ -31,4 +31,4 @@ public class LoginServlet extends HttpServlet {
|
||||
|
||||
public void destroy() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<User> connectedUsers = new ArrayList<User>();
|
||||
/*TODO: récuperer la liste des joueurs connectés
|
||||
penser à retirer l'utilisateur principal de la liste*/
|
||||
Set<HttpSession> loginsSessions = (Set<HttpSession>) 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 {
|
||||
|
||||
@@ -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() {
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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">
|
||||
</web-app>
|
||||
<listener>
|
||||
<listener-class>
|
||||
uppa.project.listener.SessionServletContextListener
|
||||
</listener-class>
|
||||
</listener>
|
||||
</web-app>
|
||||
|
||||
Reference in New Issue
Block a user