mirror of
https://github.com/kmitresse/Cards-Rush.git
synced 2026-05-16 17:11:48 +00:00
feat!(DevWeb): Add BulmaCSS, refacto, handle error on login pages, use bean, filters and tags
This commit is contained in:
@@ -1,12 +1,8 @@
|
||||
package uppa.project;
|
||||
|
||||
import java.util.Calendar;
|
||||
import uppa.project.dao.DAO;
|
||||
import uppa.project.dao.DAOException;
|
||||
import uppa.project.dao.jpa.Game_JPA_DAO_Factory;
|
||||
import uppa.project.pojo.Card;
|
||||
import uppa.project.pojo.Deck;
|
||||
import uppa.project.pojo.User;
|
||||
import uppa.project.database.dao.DAOException;
|
||||
import uppa.project.database.pojo.Card;
|
||||
import uppa.project.database.pojo.Deck;
|
||||
|
||||
public class Main {
|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
package uppa.project.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
import uppa.project.database.dao.DAO;
|
||||
import uppa.project.database.dao.DAOException;
|
||||
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
|
||||
import uppa.project.database.pojo.User;
|
||||
|
||||
public class LoginBean implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String username;
|
||||
private String password;
|
||||
private User user;
|
||||
|
||||
public LoginBean() {
|
||||
}
|
||||
|
||||
public LoginBean(String username, String password) {
|
||||
this.username = username;
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public boolean validate() {
|
||||
Game_JPA_DAO_Factory factory = new Game_JPA_DAO_Factory();
|
||||
|
||||
try {
|
||||
DAO<User> userDao = factory.getDAOUser();
|
||||
User[] user = userDao.findByField("username", username);
|
||||
|
||||
for (User u : user) {
|
||||
if (u.getUsername().equals(username)) {
|
||||
this.user = u;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
} catch (DAOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public User getUser() {
|
||||
return user;
|
||||
}
|
||||
|
||||
public LoginBean setUsername(String username) {
|
||||
this.username = username;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LoginBean setPassword(String password) {
|
||||
this.password = password;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
package uppa.project.bean;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
import java.util.Date;
|
||||
import uppa.project.database.dao.DAO;
|
||||
import uppa.project.database.dao.DAOException;
|
||||
import uppa.project.database.dao.EntityManagerProvider;
|
||||
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
|
||||
import uppa.project.database.pojo.User;
|
||||
|
||||
public class RegisterBean implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String username;
|
||||
private String email;
|
||||
private String password;
|
||||
private String birth;
|
||||
private String gender;
|
||||
private String errorMessage;
|
||||
|
||||
public RegisterBean() {
|
||||
}
|
||||
|
||||
public RegisterBean(String username, String email, String password, String birth, String gender) {
|
||||
this.username = username;
|
||||
this.email = email;
|
||||
this.password = password;
|
||||
this.birth = birth;
|
||||
this.gender = gender;
|
||||
}
|
||||
|
||||
public boolean validate() {
|
||||
Game_JPA_DAO_Factory jpaDaoFactory = new Game_JPA_DAO_Factory();
|
||||
DAO<User> userDAO;
|
||||
|
||||
// Check if the user is valid
|
||||
try {
|
||||
userDAO = jpaDaoFactory.getDAOUser();
|
||||
|
||||
// Check if the username is already taken
|
||||
User[] users = userDAO.findByField("username", username);
|
||||
if (users.length > 0) {
|
||||
errorMessage = "Ce nom d'utilisateur est déjà pris";
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if the email is already taken
|
||||
users = userDAO.findByField("email", email);
|
||||
if (users.length > 0) {
|
||||
errorMessage = "Cet email est déjà utilisé";
|
||||
return false;
|
||||
}
|
||||
} catch(DAOException e) {
|
||||
errorMessage = "Une erreur est survenue (DB_CONNECTION_ERROR)";
|
||||
return false;
|
||||
}
|
||||
|
||||
// Create a new User
|
||||
User user = new User();
|
||||
user.setUsername(username);
|
||||
user.setPassword(password);
|
||||
user.setEmail(email);
|
||||
try {
|
||||
user.setGender(User.Gender.valueOf(gender));
|
||||
} catch (IllegalArgumentException e) {
|
||||
errorMessage = "Le genre n'est pas valide";
|
||||
return false;
|
||||
}
|
||||
|
||||
// convert the birthdate from String as YYYY-MM-DD to Date object
|
||||
try {
|
||||
LocalDate localDate = LocalDate.parse(birth);
|
||||
ZoneId defaultZoneId = ZoneId.systemDefault();
|
||||
Date date = Date.from(localDate.atStartOfDay(defaultZoneId).toInstant());
|
||||
user.setBirth(date);
|
||||
} catch (Exception e) {
|
||||
errorMessage = "La date de naissance n'est pas valide";
|
||||
return false;
|
||||
}
|
||||
|
||||
// Send the user to the database
|
||||
EntityManager entityManager = EntityManagerProvider.getInstance();
|
||||
entityManager.getTransaction().begin();
|
||||
try {
|
||||
userDAO = jpaDaoFactory.getDAOUser();
|
||||
userDAO.create(user);
|
||||
entityManager.getTransaction().commit();
|
||||
return true;
|
||||
} catch(DAOException e) {
|
||||
entityManager.getTransaction().rollback();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public RegisterBean setUsername(String username) {
|
||||
this.username = username;
|
||||
return this;
|
||||
}
|
||||
|
||||
public RegisterBean setPassword(String password) {
|
||||
this.password = password;
|
||||
return this;
|
||||
}
|
||||
|
||||
public RegisterBean setEmail(String email) {
|
||||
this.email = email;
|
||||
return this;
|
||||
}
|
||||
|
||||
public RegisterBean setBirth(String birth) {
|
||||
this.birth = birth;
|
||||
return this;
|
||||
}
|
||||
|
||||
public RegisterBean setGender(String gender) {
|
||||
this.gender = gender;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getErrorMessage() {
|
||||
return errorMessage;
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -4,9 +4,9 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.dao;
|
||||
package uppa.project.database.dao;
|
||||
|
||||
import uppa.project.dao.jpa.Game_JPA_DAO_Factory;
|
||||
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
|
||||
|
||||
/**
|
||||
* Factory renvoyant une factory de DAO en fonction du support de persistance choisi
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.dao;
|
||||
package uppa.project.database.dao;
|
||||
|
||||
/**
|
||||
* DAO abstrait et générique pour tout type de données
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.dao;
|
||||
package uppa.project.database.dao;
|
||||
|
||||
/**
|
||||
* Exception spécifique aux problèmes d'accès aux données via un DAO
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.provider;
|
||||
package uppa.project.database.dao;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.EntityManagerFactory;
|
||||
+5
-5
@@ -4,12 +4,12 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.dao;
|
||||
package uppa.project.database.dao;
|
||||
|
||||
import uppa.project.pojo.Game;
|
||||
import uppa.project.pojo.Player;
|
||||
import uppa.project.pojo.RecoveryPasswordToken;
|
||||
import uppa.project.pojo.User;
|
||||
import uppa.project.database.pojo.Game;
|
||||
import uppa.project.database.pojo.Player;
|
||||
import uppa.project.database.pojo.RecoveryPasswordToken;
|
||||
import uppa.project.database.pojo.User;
|
||||
|
||||
/**
|
||||
* Fabrique abstraite de DAO pour le schéma du jeu
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.dao;
|
||||
package uppa.project.database.dao;
|
||||
|
||||
/**
|
||||
* Type de support de persistance pour les données
|
||||
+5
-6
@@ -4,17 +4,16 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.dao.jpa;
|
||||
package uppa.project.database.dao.jpa;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.TypedQuery;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import uppa.project.dao.DAO;
|
||||
import uppa.project.dao.DAOException;
|
||||
import uppa.project.pojo.Game;
|
||||
import uppa.project.provider.EntityManagerProvider;
|
||||
import uppa.project.database.dao.DAO;
|
||||
import uppa.project.database.dao.DAOException;
|
||||
import uppa.project.database.pojo.Game;
|
||||
import uppa.project.database.dao.EntityManagerProvider;
|
||||
|
||||
/**
|
||||
* DAO pour les parties de jeu
|
||||
+5
-5
@@ -4,16 +4,16 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.dao.jpa;
|
||||
package uppa.project.database.dao.jpa;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.TypedQuery;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import uppa.project.dao.DAO;
|
||||
import uppa.project.dao.DAOException;
|
||||
import uppa.project.pojo.Player;
|
||||
import uppa.project.provider.EntityManagerProvider;
|
||||
import uppa.project.database.dao.DAO;
|
||||
import uppa.project.database.dao.DAOException;
|
||||
import uppa.project.database.dao.EntityManagerProvider;
|
||||
import uppa.project.database.pojo.Player;
|
||||
|
||||
/**
|
||||
* DAO pour les joueurs
|
||||
+5
-5
@@ -4,16 +4,16 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.dao.jpa;
|
||||
package uppa.project.database.dao.jpa;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.TypedQuery;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import uppa.project.dao.DAO;
|
||||
import uppa.project.dao.DAOException;
|
||||
import uppa.project.pojo.RecoveryPasswordToken;
|
||||
import uppa.project.provider.EntityManagerProvider;
|
||||
import uppa.project.database.dao.DAO;
|
||||
import uppa.project.database.dao.DAOException;
|
||||
import uppa.project.database.dao.EntityManagerProvider;
|
||||
import uppa.project.database.pojo.RecoveryPasswordToken;
|
||||
|
||||
/**
|
||||
* DAO pour les tokens de récupération de mot de passe
|
||||
+5
-5
@@ -4,16 +4,16 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.dao.jpa;
|
||||
package uppa.project.database.dao.jpa;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.TypedQuery;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import uppa.project.dao.DAO;
|
||||
import uppa.project.dao.DAOException;
|
||||
import uppa.project.pojo.User;
|
||||
import uppa.project.provider.EntityManagerProvider;
|
||||
import uppa.project.database.dao.DAO;
|
||||
import uppa.project.database.dao.DAOException;
|
||||
import uppa.project.database.pojo.User;
|
||||
import uppa.project.database.dao.EntityManagerProvider;
|
||||
|
||||
/**
|
||||
* DAO pour les utilisateurs
|
||||
+8
-5
@@ -4,12 +4,15 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.dao.jpa;
|
||||
package uppa.project.database.dao.jpa;
|
||||
|
||||
import uppa.project.dao.DAO;
|
||||
import uppa.project.pojo.*;
|
||||
import uppa.project.dao.DAOException;
|
||||
import uppa.project.dao.GameDAOFactory;
|
||||
import uppa.project.database.dao.DAO;
|
||||
import uppa.project.database.dao.GameDAOFactory;
|
||||
import uppa.project.database.pojo.Game;
|
||||
import uppa.project.database.pojo.Player;
|
||||
import uppa.project.database.pojo.RecoveryPasswordToken;
|
||||
import uppa.project.database.pojo.User;
|
||||
import uppa.project.database.dao.DAOException;
|
||||
|
||||
/**
|
||||
* Fabrique concrète de DAO pour le schéma relationnel sports avec une implémentation en JDBC.
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.pojo;
|
||||
package uppa.project.database.pojo;
|
||||
|
||||
import jakarta.persistence.Transient;
|
||||
|
||||
+1
-2
@@ -4,9 +4,8 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.pojo;
|
||||
package uppa.project.database.pojo;
|
||||
|
||||
import jakarta.persistence.Transient;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
||||
+1
-3
@@ -4,7 +4,7 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.pojo;
|
||||
package uppa.project.database.pojo;
|
||||
|
||||
import jakarta.persistence.CascadeType;
|
||||
import jakarta.persistence.Column;
|
||||
@@ -25,8 +25,6 @@ import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
/**
|
||||
* Représentation d'une partie de jeu
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.pojo;
|
||||
package uppa.project.database.pojo;
|
||||
|
||||
import jakarta.persistence.Column;
|
||||
import jakarta.persistence.Entity;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package uppa.project.pojo;
|
||||
package uppa.project.database.pojo;
|
||||
|
||||
import jakarta.persistence.Column;
|
||||
import jakarta.persistence.Entity;
|
||||
+2
-3
@@ -4,7 +4,7 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.pojo;
|
||||
package uppa.project.database.pojo;
|
||||
|
||||
import jakarta.persistence.CascadeType;
|
||||
import jakarta.persistence.Column;
|
||||
@@ -23,8 +23,6 @@ import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.time.LocalDate;
|
||||
import java.time.Period;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
@@ -195,6 +193,7 @@ public class User implements Serializable {
|
||||
|
||||
/**
|
||||
* Modifie le mot de passe de l'utilisateur
|
||||
* Le mot de passe est hashé avant d'être stocké
|
||||
*
|
||||
* @param password le nouveau mot de passe
|
||||
*/
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* HttpResponse.java, 20/03/2024
|
||||
* UPPA M1 TI 2023-2024
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.json;
|
||||
|
||||
/**
|
||||
* Classe représentant une réponse HTTP
|
||||
*
|
||||
* @author Kevin Mitresse
|
||||
* @author Lucàs Vabre
|
||||
*/
|
||||
public class HttpResponse {
|
||||
|
||||
/**
|
||||
* Défini si la réponse est un succès
|
||||
*/
|
||||
protected final int code;
|
||||
|
||||
/**
|
||||
* Message de la réponse
|
||||
*/
|
||||
protected final String message;
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
*
|
||||
* @param code code HTTP de l'erreur
|
||||
* @param message message d'erreur
|
||||
*/
|
||||
public HttpResponse(HttpResponseCode code, String message) {
|
||||
this.code = code.getCode();
|
||||
this.message = message;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package uppa.project.json;
|
||||
|
||||
public enum HttpResponseCode {
|
||||
OK(200),
|
||||
CREATED(201),
|
||||
NO_CONTENT(204),
|
||||
BAD_REQUEST(400),
|
||||
UNAUTHORIZED(401),
|
||||
FORBIDDEN(403),
|
||||
NOT_FOUND(404),
|
||||
CONFLICT(409),
|
||||
INTERNAL_SERVER_ERROR(500);
|
||||
|
||||
private final int code;
|
||||
|
||||
HttpResponseCode(int code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package uppa.project.pojo.json.websocket;
|
||||
package uppa.project.json.websocket;
|
||||
|
||||
public class Message {
|
||||
private final String type;
|
||||
@@ -1,53 +0,0 @@
|
||||
/*
|
||||
* ErrorResponse.java, 20/03/2024
|
||||
* UPPA M1 TI 2023-2024
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.pojo.json;
|
||||
|
||||
/**
|
||||
* Classe représentant une erreur
|
||||
*
|
||||
* @author Kevin Mitresse
|
||||
* @author Lucàs Vabre
|
||||
*/
|
||||
public class ErrorResponse extends HttpResponse{
|
||||
|
||||
/**
|
||||
* Type de l'erreur
|
||||
*/
|
||||
private final String error;
|
||||
|
||||
/**
|
||||
* Message d'erreur
|
||||
*/
|
||||
private final String message;
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
*
|
||||
* @param status code HTTP de l'erreur
|
||||
* @param error type de l'erreur
|
||||
* @param message message d'erreur
|
||||
*/
|
||||
public ErrorResponse(int status, String error, String message) {
|
||||
super(status);
|
||||
this.error = error;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return le type de l'erreur
|
||||
*/
|
||||
public String getError() {
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return le message d'erreur
|
||||
*/
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
/*
|
||||
* HttpResponse.java, 20/03/2024
|
||||
* UPPA M1 TI 2023-2024
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.pojo.json;
|
||||
|
||||
/**
|
||||
* Classe représentant une réponse HTTP
|
||||
*
|
||||
* @author Kevin Mitresse
|
||||
* @author Lucàs Vabre
|
||||
*/
|
||||
public abstract class HttpResponse {
|
||||
|
||||
/**
|
||||
* Code HTTP de la réponse
|
||||
*/
|
||||
protected final int status;
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
*
|
||||
* @param status code HTTP de l'erreur
|
||||
*/
|
||||
public HttpResponse(int status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return le code HTTP de la réponse
|
||||
*/
|
||||
public int getStatus() {
|
||||
return status;
|
||||
}
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
/*
|
||||
* LoginServlet.java, 20/03/2024
|
||||
* UPPA M1 TI 2023-2024
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.servlet;
|
||||
|
||||
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 java.io.IOException;
|
||||
|
||||
@WebServlet(name = "loginServlet", value = "/login")
|
||||
public class LoginServlet extends HttpServlet {
|
||||
|
||||
public void init() {
|
||||
}
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
|
||||
if (request.getSession().getAttribute("user") != null) {
|
||||
response.sendRedirect(request.getContextPath() + "/main-menu");
|
||||
return;
|
||||
}
|
||||
request.setAttribute("current", "login");
|
||||
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
/*
|
||||
* RegisterServlet.java, 20/03/2024
|
||||
* UPPA M1 TI 2023-2024
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.servlet;
|
||||
|
||||
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 java.io.IOException;
|
||||
|
||||
@WebServlet(name = "registerServlet", value = "/register")
|
||||
public class RegisterServlet extends HttpServlet {
|
||||
|
||||
public void init() {
|
||||
}
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
|
||||
if (request.getSession().getAttribute("user") != null) {
|
||||
response.sendRedirect(request.getContextPath() + "/main-menu");
|
||||
return;
|
||||
}
|
||||
|
||||
request.setAttribute("current", "register");
|
||||
request.getRequestDispatcher("/WEB-INF/views/register.jsp").forward(request, response);
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
}
|
||||
}
|
||||
@@ -1,82 +0,0 @@
|
||||
/*
|
||||
* LoginServlet.java, 20/03/2024
|
||||
* UPPA M1 TI 2023-2024
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.servlet.api.auth;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import jakarta.servlet.annotation.WebServlet;
|
||||
import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import uppa.project.dao.DAO;
|
||||
import uppa.project.dao.DAOException;
|
||||
import uppa.project.dao.jpa.Game_JPA_DAO_Factory;
|
||||
import uppa.project.listener.SessionServletContextListener;
|
||||
import uppa.project.pojo.User;
|
||||
|
||||
@WebServlet(name = "authLoginServlet", value = "/api/auth/login")
|
||||
public class AuthLoginServlet extends HttpServlet {
|
||||
|
||||
private static class JsonRequest {
|
||||
private String username;
|
||||
private String password;
|
||||
}
|
||||
|
||||
private final Gson gson = new Gson();
|
||||
|
||||
public void init() {
|
||||
}
|
||||
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
response.setContentType("application/json");
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
PrintWriter out = response.getWriter();
|
||||
|
||||
// Get the json in the request body
|
||||
StringBuilder sb = new StringBuilder();
|
||||
BufferedReader reader = request.getReader();
|
||||
String line;
|
||||
while((line = reader.readLine()) != null) {
|
||||
sb.append(line);
|
||||
}
|
||||
String requestBody = sb.toString();
|
||||
JsonRequest jsonRequest = gson.fromJson(requestBody, JsonRequest.class);
|
||||
|
||||
// Login User
|
||||
User user = loginUser(jsonRequest);
|
||||
|
||||
// Set user in session
|
||||
request.getSession().setAttribute("user", user);
|
||||
SessionServletContextListener.addSession(request.getSession());
|
||||
|
||||
out.println(gson.toJson(user));
|
||||
out.flush();
|
||||
}
|
||||
|
||||
private static User loginUser(JsonRequest jsonRequest) {
|
||||
String username = jsonRequest.username;
|
||||
String password = jsonRequest.password;
|
||||
|
||||
Game_JPA_DAO_Factory factory = new Game_JPA_DAO_Factory();
|
||||
try {
|
||||
DAO<User> userDao = factory.getDAOUser();
|
||||
User[] users = userDao.findByField("username", username);
|
||||
|
||||
for (User user : users) {
|
||||
if (user.verifyPassword(password)) return user;
|
||||
}
|
||||
} catch (DAOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
}
|
||||
}
|
||||
-103
@@ -1,103 +0,0 @@
|
||||
/*
|
||||
* RegisterApiServlet.java, 03/04/2024
|
||||
* UPPA M1 TI 2023-2024
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.servlet.api.auth;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.servlet.annotation.WebServlet;
|
||||
import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
import java.util.Date;
|
||||
import uppa.project.dao.DAO;
|
||||
import uppa.project.dao.DAOException;
|
||||
import uppa.project.pojo.User;
|
||||
import uppa.project.dao.jpa.Game_JPA_DAO_Factory;
|
||||
import uppa.project.provider.EntityManagerProvider;
|
||||
|
||||
@WebServlet(name = "authRegisterServlet", value = "/api/auth/register")
|
||||
public class AuthRegisterServlet extends HttpServlet {
|
||||
|
||||
private class JsonRequest {
|
||||
private String username;
|
||||
private String password;
|
||||
private String email;
|
||||
private String birthdate;
|
||||
|
||||
private String gender;
|
||||
}
|
||||
|
||||
private final Gson gson = new Gson();
|
||||
|
||||
public void init() {}
|
||||
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
response.setContentType("application/json");
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
PrintWriter out = response.getWriter();
|
||||
|
||||
// Get the json in the request body
|
||||
StringBuilder sb = new StringBuilder();
|
||||
BufferedReader reader = request.getReader();
|
||||
String line;
|
||||
while((line = reader.readLine()) != null) {
|
||||
sb.append(line);
|
||||
}
|
||||
String requestBody = sb.toString();
|
||||
JsonRequest jsonRequest = gson.fromJson(requestBody, JsonRequest.class);
|
||||
|
||||
// Create the user
|
||||
User user = this.createUser(jsonRequest);
|
||||
if (user == null) {
|
||||
// TODO send error
|
||||
return;
|
||||
}
|
||||
|
||||
out.println(gson.toJson(user));
|
||||
out.flush();
|
||||
}
|
||||
|
||||
private User createUser(JsonRequest jsonRequest) {
|
||||
|
||||
// Create a new User
|
||||
User user = new User();
|
||||
user.setUsername(jsonRequest.username);
|
||||
user.setPassword(jsonRequest.password);
|
||||
user.setEmail(jsonRequest.email);
|
||||
user.setGender(User.Gender.valueOf(jsonRequest.gender));
|
||||
|
||||
// convert the birthdate from String as YYYY-MM-DD to Date object)
|
||||
LocalDate localDate = LocalDate.parse(jsonRequest.birthdate);
|
||||
ZoneId defaultZoneId = ZoneId.systemDefault();
|
||||
Date date = Date.from(localDate.atStartOfDay(defaultZoneId).toInstant());
|
||||
user.setBirth(date);
|
||||
|
||||
// Send the user to the database
|
||||
EntityManager entityManager = EntityManagerProvider.getInstance();
|
||||
|
||||
entityManager.getTransaction().begin();
|
||||
try {
|
||||
Game_JPA_DAO_Factory jpaDaoFactory = new Game_JPA_DAO_Factory();
|
||||
DAO<User> userDAO = jpaDaoFactory.getDAOUser();
|
||||
|
||||
User newUser = userDAO.create(user);
|
||||
entityManager.getTransaction().commit();
|
||||
return newUser;
|
||||
} catch(DAOException e) {
|
||||
entityManager.getTransaction().rollback();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package uppa.project.web.filter;
|
||||
|
||||
import jakarta.servlet.Filter;
|
||||
import jakarta.servlet.FilterChain;
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.ServletRequest;
|
||||
import jakarta.servlet.ServletResponse;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
|
||||
public class AlreadyLoggedFilter implements Filter {
|
||||
@Override
|
||||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
|
||||
HttpServletRequest httpRequest = (HttpServletRequest) request;
|
||||
HttpServletResponse httpResponse = (HttpServletResponse) response;
|
||||
HttpSession session = httpRequest.getSession(false);
|
||||
|
||||
// Vérifier si l'utilisateur est connecté en vérifiant la présence d'une session
|
||||
boolean isLoggedIn = (session != null && session.getAttribute("user") != null);
|
||||
|
||||
// Si l'utilisateur n'est pas connecté, laisser passer la requête
|
||||
if (!isLoggedIn) {
|
||||
chain.doFilter(request, response);
|
||||
} else {
|
||||
// Sinon, rediriger vers la page du menu principal
|
||||
httpResponse.sendRedirect(httpRequest.getContextPath() + "/main-menu");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package uppa.project.web.filter;
|
||||
|
||||
import jakarta.servlet.Filter;
|
||||
import jakarta.servlet.FilterChain;
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.ServletRequest;
|
||||
import jakarta.servlet.ServletResponse;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
|
||||
public class AuthenticationFilter implements Filter {
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
|
||||
HttpServletRequest httpRequest = (HttpServletRequest) request;
|
||||
HttpServletResponse httpResponse = (HttpServletResponse) response;
|
||||
HttpSession session = httpRequest.getSession(false);
|
||||
|
||||
// Vérifier si l'utilisateur est connecté en vérifiant la présence d'une session
|
||||
boolean isLoggedIn = (session != null && session.getAttribute("user") != null);
|
||||
|
||||
// Si l'utilisateur est connecté, laisser passer la requête
|
||||
if (isLoggedIn) {
|
||||
chain.doFilter(request, response);
|
||||
} else {
|
||||
// Sinon, rediriger vers la page de connexion
|
||||
httpResponse.sendRedirect(httpRequest.getContextPath() + "/login");
|
||||
}
|
||||
}
|
||||
}
|
||||
+8
-8
@@ -4,7 +4,7 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.servlet;
|
||||
package uppa.project.web.servlet;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.servlet.ServletException;
|
||||
@@ -16,16 +16,16 @@ import java.io.IOException;
|
||||
import java.util.UUID;
|
||||
import javax.mail.Message;
|
||||
import uppa.project.Global;
|
||||
import uppa.project.dao.DAO;
|
||||
import uppa.project.dao.DAOException;
|
||||
import uppa.project.dao.jpa.DAO_JPA_User;
|
||||
import uppa.project.dao.jpa.Game_JPA_DAO_Factory;
|
||||
import uppa.project.pojo.RecoveryPasswordToken;
|
||||
import uppa.project.pojo.User;
|
||||
import uppa.project.database.dao.DAO;
|
||||
import uppa.project.database.dao.DAOException;
|
||||
import uppa.project.database.dao.jpa.DAO_JPA_User;
|
||||
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
|
||||
import uppa.project.database.pojo.RecoveryPasswordToken;
|
||||
import uppa.project.database.pojo.User;
|
||||
import java.util.Properties;
|
||||
import javax.mail.*;
|
||||
import javax.mail.internet.*;
|
||||
import uppa.project.provider.EntityManagerProvider;
|
||||
import uppa.project.database.dao.EntityManagerProvider;
|
||||
|
||||
|
||||
@WebServlet(name = "forgottenPasswordServlet", value = "/forgotten-password")
|
||||
+2
-7
@@ -4,7 +4,7 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.servlet;
|
||||
package uppa.project.web.servlet;
|
||||
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.annotation.WebServlet;
|
||||
@@ -20,13 +20,8 @@ public class IndexServlet extends HttpServlet {
|
||||
}
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
|
||||
if (request.getSession().getAttribute("user") != null) {
|
||||
response.sendRedirect(request.getContextPath() + "/main-menu");
|
||||
return;
|
||||
}
|
||||
|
||||
request.setAttribute("current", "index");
|
||||
request.getRequestDispatcher("/WEB-INF/views/index.jsp").forward(request, response);
|
||||
request.getRequestDispatcher("/WEB-INF/pages/index.jsp").forward(request, response);
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* LoginServlet.java, 20/03/2024
|
||||
* UPPA M1 TI 2023-2024
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.web.servlet;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
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 java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import uppa.project.bean.LoginBean;
|
||||
import uppa.project.json.HttpResponse;
|
||||
import uppa.project.json.HttpResponseCode;
|
||||
|
||||
@WebServlet(name = "loginServlet", value = "/login")
|
||||
public class LoginServlet extends HttpServlet {
|
||||
|
||||
public void init() {
|
||||
}
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
|
||||
request.setAttribute("current", "login");
|
||||
request.getRequestDispatcher("/WEB-INF/pages/login.jsp").forward(request, response);
|
||||
}
|
||||
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
response.setContentType("application/json");
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
PrintWriter out = response.getWriter();
|
||||
|
||||
LoginBean loginBean = new LoginBean()
|
||||
.setUsername(request.getParameter("username"))
|
||||
.setPassword(request.getParameter("password"))
|
||||
;
|
||||
|
||||
Gson gson = new Gson();
|
||||
HttpResponse httpResponse;
|
||||
if (loginBean.validate()) {
|
||||
request.getSession().setAttribute("user", loginBean.getUser());
|
||||
|
||||
httpResponse = new HttpResponse(HttpResponseCode.OK, "Login success");
|
||||
} else {
|
||||
httpResponse = new HttpResponse(HttpResponseCode.UNAUTHORIZED, "<strong>Erreur de connexion:</strong> Le nom d'utilisateur ou le " +
|
||||
"mot de passe est incorrect.");
|
||||
}
|
||||
|
||||
out.println(gson.toJson(httpResponse));
|
||||
out.flush();
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
}
|
||||
}
|
||||
+3
-6
@@ -4,7 +4,7 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.servlet;
|
||||
package uppa.project.web.servlet;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import jakarta.servlet.annotation.WebServlet;
|
||||
@@ -23,11 +23,8 @@ public class LogoutServlet extends HttpServlet {
|
||||
}
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
if (request.getSession().getAttribute("user") != null) {
|
||||
SessionServletContextListener.removeSession(request.getSession());
|
||||
request.getSession().removeAttribute("user");
|
||||
}
|
||||
|
||||
SessionServletContextListener.removeSession(request.getSession());
|
||||
request.getSession().removeAttribute("user");
|
||||
response.sendRedirect(request.getContextPath() + "/login");
|
||||
}
|
||||
|
||||
+8
-7
@@ -4,7 +4,7 @@
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.servlet;
|
||||
package uppa.project.web.servlet;
|
||||
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.annotation.WebServlet;
|
||||
@@ -16,9 +16,9 @@ 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;
|
||||
import uppa.project.database.pojo.Game;
|
||||
import uppa.project.database.pojo.Player;
|
||||
import uppa.project.database.pojo.User;
|
||||
|
||||
@WebServlet(name = "mainMenuServlet", value = "/main-menu")
|
||||
public class MainMenuServlet extends HttpServlet {
|
||||
@@ -34,8 +34,8 @@ public class MainMenuServlet extends HttpServlet {
|
||||
// }
|
||||
request.setAttribute("current", "main-menu");
|
||||
manageNewGame(request, response, user);
|
||||
manageStatistiques(request, response, user);
|
||||
request.getRequestDispatcher("/WEB-INF/views/main-menu.jsp").forward(request, response);
|
||||
manageStatistics(request, response, user);
|
||||
request.getRequestDispatcher("/WEB-INF/pages/main-menu.jsp").forward(request, response);
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
@@ -44,6 +44,7 @@ public class MainMenuServlet extends HttpServlet {
|
||||
private void manageNewGame(HttpServletRequest request, HttpServletResponse response, User sessionUser) throws IOException, ServletException {
|
||||
List<User> connectedUsers = new ArrayList<>();
|
||||
Set<HttpSession> loginsSessions = (Set<HttpSession>) request.getServletContext().getAttribute("loginSession");
|
||||
|
||||
if (loginsSessions == null) {
|
||||
throw new RuntimeException("No login sessions found");
|
||||
}
|
||||
@@ -57,7 +58,7 @@ public class MainMenuServlet extends HttpServlet {
|
||||
request.setAttribute("connectedUsers", connectedUsers);
|
||||
}
|
||||
|
||||
private void manageStatistiques(HttpServletRequest request, HttpServletResponse response, User sessionUser) throws IOException, ServletException {
|
||||
private void manageStatistics(HttpServletRequest request, HttpServletResponse response, User sessionUser) throws IOException, ServletException {
|
||||
List<Game> games = new ArrayList<>();
|
||||
if (sessionUser != null && sessionUser.getPlayedGames() != null) {
|
||||
for (Player player : sessionUser.getPlayedGames()) {
|
||||
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* RegisterServlet.java, 20/03/2024
|
||||
* UPPA M1 TI 2023-2024
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package uppa.project.web.servlet;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
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 java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import uppa.project.bean.LoginBean;
|
||||
import uppa.project.bean.RegisterBean;
|
||||
import uppa.project.json.HttpResponse;
|
||||
import uppa.project.json.HttpResponseCode;
|
||||
|
||||
@WebServlet(name = "registerServlet", value = "/register")
|
||||
public class RegisterServlet extends HttpServlet {
|
||||
|
||||
public void init() {
|
||||
}
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
|
||||
request.setAttribute("current", "register");
|
||||
request.getRequestDispatcher("/WEB-INF/pages/register.jsp").forward(request, response);
|
||||
}
|
||||
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
response.setContentType("application/json");
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
PrintWriter out = response.getWriter();
|
||||
|
||||
RegisterBean registerBean = new RegisterBean()
|
||||
.setUsername(request.getParameter("username"))
|
||||
.setEmail(request.getParameter("email"))
|
||||
.setPassword(request.getParameter("password"))
|
||||
.setBirth(request.getParameter("birth"))
|
||||
.setGender(request.getParameter("gender"))
|
||||
;
|
||||
|
||||
Gson gson = new Gson();
|
||||
HttpResponse httpResponse;
|
||||
if (registerBean.validate()) {
|
||||
httpResponse = new HttpResponse(
|
||||
HttpResponseCode.OK,
|
||||
"Register success"
|
||||
);
|
||||
} else {
|
||||
httpResponse = new HttpResponse(HttpResponseCode.UNAUTHORIZED, registerBean.getErrorMessage());
|
||||
}
|
||||
|
||||
out.println(gson.toJson(httpResponse));
|
||||
out.flush();
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
}
|
||||
}
|
||||
+7
-7
@@ -1,4 +1,4 @@
|
||||
package uppa.project.servlet;
|
||||
package uppa.project.web.servlet;
|
||||
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.annotation.WebServlet;
|
||||
@@ -6,11 +6,11 @@ import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import uppa.project.dao.DAOException;
|
||||
import uppa.project.dao.jpa.DAO_JPA_RecoveryPasswordToken;
|
||||
import uppa.project.dao.jpa.DAO_JPA_User;
|
||||
import uppa.project.pojo.RecoveryPasswordToken;
|
||||
import uppa.project.pojo.User;
|
||||
import uppa.project.database.dao.DAOException;
|
||||
import uppa.project.database.dao.jpa.DAO_JPA_RecoveryPasswordToken;
|
||||
import uppa.project.database.dao.jpa.DAO_JPA_User;
|
||||
import uppa.project.database.pojo.RecoveryPasswordToken;
|
||||
import uppa.project.database.pojo.User;
|
||||
|
||||
@WebServlet(name = "resetPasswordServlet", value = "/reset-password")
|
||||
public class ResetPasswordServlet extends HttpServlet {
|
||||
@@ -28,7 +28,7 @@ public class ResetPasswordServlet extends HttpServlet {
|
||||
return;
|
||||
}
|
||||
request.setAttribute("current", "reset-password");
|
||||
request.getRequestDispatcher("/WEB-INF/views/reset-password.jsp").forward(request, response);
|
||||
request.getRequestDispatcher("/WEB-INF/pages/reset-password.jsp").forward(request, response);
|
||||
}
|
||||
|
||||
/**
|
||||
+6
-16
@@ -1,4 +1,4 @@
|
||||
package uppa.project.websocket;
|
||||
package uppa.project.web.websocket;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import jakarta.websocket.OnClose;
|
||||
@@ -10,18 +10,16 @@ import jakarta.websocket.Session;
|
||||
import jakarta.websocket.server.ServerEndpoint;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import uppa.project.pojo.User;
|
||||
import uppa.project.pojo.json.websocket.Message;
|
||||
import uppa.project.database.pojo.User;
|
||||
import uppa.project.json.websocket.Message;
|
||||
|
||||
@ServerEndpoint(value = "/main-menu")
|
||||
public class MainMenuWS {
|
||||
@ServerEndpoint(value = "/ws/connected-users")
|
||||
public class ConnectedUsersWS {
|
||||
|
||||
private static final HashMap<Session, User> connections = new HashMap<>();
|
||||
|
||||
@OnOpen
|
||||
public void onOpen(Session session) {
|
||||
System.out.println("Connexion WebSocket ouverte : " + session.getId());
|
||||
}
|
||||
public void onOpen(Session session) {}
|
||||
|
||||
private void broadcastConnectedUsers() {
|
||||
Gson gson = new Gson();
|
||||
@@ -30,8 +28,6 @@ public class MainMenuWS {
|
||||
Message websocketObject = new Message("userList", gson.toJson(connectedUsers));
|
||||
String message = gson.toJson(websocketObject);
|
||||
|
||||
System.out.println("Broadcasting connected users : " + message);
|
||||
|
||||
for (Session session : connections.keySet()) {
|
||||
RemoteEndpoint.Basic remote = session.getBasicRemote();
|
||||
try {
|
||||
@@ -44,7 +40,6 @@ public class MainMenuWS {
|
||||
|
||||
@OnClose
|
||||
public void onClose(Session session) {
|
||||
System.out.println("Connexion WebSocket fermée : " + session.getId());
|
||||
connections.remove(session);
|
||||
|
||||
// Update connected users list
|
||||
@@ -53,7 +48,6 @@ public class MainMenuWS {
|
||||
|
||||
@OnError
|
||||
public void onError(Throwable throwable) {
|
||||
System.out.println("Erreur WebSocket : " + throwable.getMessage());
|
||||
throwable.printStackTrace();
|
||||
}
|
||||
|
||||
@@ -62,12 +56,8 @@ public class MainMenuWS {
|
||||
Gson gson = new Gson();
|
||||
Message websocketMessage = gson.fromJson(message, Message.class);
|
||||
|
||||
System.out.println("Message reçu : " + websocketMessage);
|
||||
|
||||
if (websocketMessage.getType().equals("linkUserSession")) {
|
||||
User user = gson.fromJson(websocketMessage.getData(), User.class);
|
||||
System.out.println(user);
|
||||
|
||||
connections.put(session, user);
|
||||
broadcastConnectedUsers();
|
||||
}
|
||||
Reference in New Issue
Block a user