refacto: devWeb - remove max warning as possible (back)

This commit is contained in:
kmitresse
2024-05-01 15:17:30 +02:00
parent 0741b5ce94
commit 1270077aef
22 changed files with 362 additions and 105 deletions
@@ -4,8 +4,6 @@ public final class Global {
public static final String APP_NAME = "Cards Rush"; public static final String APP_NAME = "Cards Rush";
public static final String PERSISTENCE_UNIT_NAME = "prod"; public static final String PERSISTENCE_UNIT_NAME = "prod";
public static final String PERSISTENCE_UNIT_NAME_TEST = "test";
public static final String TOMCAT_PORT = "8088";
public static final String MAIL_USERNAME = "cardsrushuppa@gmail.com"; public static final String MAIL_USERNAME = "cardsrushuppa@gmail.com";
public static final String MAIL_PASSWORD = "aktr zity mayw kvek"; public static final String MAIL_PASSWORD = "aktr zity mayw kvek";
public static final String MAIL_PORT = "587"; public static final String MAIL_PORT = "587";
@@ -1,5 +1,12 @@
/*
* ForgottenPasswordBeen.java, 20/03/2024
* UPPA M1 TI 2023-2024
* Pas de copyright, aucun droits
*/
package uppa.project.bean; package uppa.project.bean;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Properties; import java.util.Properties;
import java.util.UUID; import java.util.UUID;
@@ -22,6 +29,7 @@ import static uppa.project.web.servlet.ForgottenPasswordServlet.CreateToken;
public class ForgottenPasswordBean implements Serializable { public class ForgottenPasswordBean implements Serializable {
@Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private String email; private String email;
@@ -29,10 +37,12 @@ public class ForgottenPasswordBean implements Serializable {
public ForgottenPasswordBean() { public ForgottenPasswordBean() {
} }
public ForgottenPasswordBean(String email) { /**
this.email = email; * Validation des paramètres de la requête & gestion de la création du token de réinitialisation de mot de passe
} *
* @param requestPath le chemin de la requête
* @return true si l'adresse e-mail est valide, false sinon
*/
public boolean validate(String requestPath) { public boolean validate(String requestPath) {
Game_JPA_DAO_Factory factory = new Game_JPA_DAO_Factory(); Game_JPA_DAO_Factory factory = new Game_JPA_DAO_Factory();
@@ -53,12 +63,22 @@ public class ForgottenPasswordBean implements Serializable {
return false; return false;
} }
/**
*
* @param email l'adresse e-mail supposée de l'utilisateur ayant oublié son mot de passe.
* @return this
*/
public ForgottenPasswordBean setEmail(String email) { public ForgottenPasswordBean setEmail(String email) {
this.email = email; this.email = email;
return this; return this;
} }
/**
* Création et envoi d'un token de réinitialisation de mot de passe
*
* @param user l'utilisateur ayant oublié son mot de passe
* @param requestPath le chemin de la requête
*/
private void sendTokenEmail(User user, String requestPath) { private void sendTokenEmail(User user, String requestPath) {
String token = UUID.randomUUID().toString(); String token = UUID.randomUUID().toString();
@@ -1,5 +1,12 @@
/*
* LoginBean.java, 20/03/2024
* UPPA M1 TI 2023-2024
* Pas de copyright, aucun droits
*/
package uppa.project.bean; package uppa.project.bean;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import uppa.project.database.dao.DAO; import uppa.project.database.dao.DAO;
import uppa.project.database.dao.DAOException; import uppa.project.database.dao.DAOException;
@@ -10,22 +17,20 @@ import uppa.project.json.HttpResponseCode;
public class LoginBean implements Serializable { public class LoginBean implements Serializable {
@Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private String username; private String username;
private String password; private String password;
private User user; private User user;
private HttpResponse error; private HttpResponse error;
public LoginBean() { public LoginBean() {
} }
public LoginBean(String username, String password) { /**
this.username = username; * Validation des paramètres de la requête
this.password = password; *
} * @return true si le nom d'utilisateur et le mot de passe sont valides, false sinon
*/
public boolean validate() { public boolean validate() {
Game_JPA_DAO_Factory factory = new Game_JPA_DAO_Factory(); Game_JPA_DAO_Factory factory = new Game_JPA_DAO_Factory();
@@ -49,20 +54,38 @@ public class LoginBean implements Serializable {
return false; return false;
} }
/**
*
* @param username le nom d'utilisateur supposé de l'utilisateur qui souhaite se connecter
* @return l'entité
*/
public LoginBean setUsername(String username) { public LoginBean setUsername(String username) {
this.username = username; this.username = username;
return this; return this;
} }
/**
*
* @param password le mot de passe supposé de l'utilisateur qui souhaite se connecter
* @return l'entité
*/
public LoginBean setPassword(String password) { public LoginBean setPassword(String password) {
this.password = password; this.password = password;
return this; return this;
} }
/**
*
* @return l'utilisateur connecté
*/
public User getUser() { public User getUser() {
return user; return user;
} }
/**
*
* @return l'erreur
*/
public HttpResponse getError() { public HttpResponse getError() {
return error; return error;
} }
@@ -1,6 +1,12 @@
/*
* NewGameBean.java, 20/03/2024
* UPPA M1 TI 2023-2024
* Pas de copyright, aucun droits
*/
package uppa.project.bean; package uppa.project.bean;
import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManager;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import uppa.project.database.dao.DAO; import uppa.project.database.dao.DAO;
import uppa.project.database.dao.DAOException; import uppa.project.database.dao.DAOException;
@@ -12,6 +18,7 @@ import uppa.project.json.HttpResponseCode;
public class NewGameBean implements Serializable { public class NewGameBean implements Serializable {
@Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private String difficulty; private String difficulty;
@@ -27,6 +34,11 @@ public class NewGameBean implements Serializable {
public NewGameBean() { public NewGameBean() {
} }
/**
* Validation des paramètres de la requête
*
* @return true si les paramètres sont valides, false sinon
*/
public boolean validate() { public boolean validate() {
EntityManager entityManager = EntityManagerProvider.getInstance(); EntityManager entityManager = EntityManagerProvider.getInstance();
@@ -55,35 +67,68 @@ public class NewGameBean implements Serializable {
return false; return false;
} }
/**
*
* @param difficulty la difficulté de la partie
* @return l'entité
*/
public NewGameBean setDifficulty(String difficulty) { public NewGameBean setDifficulty(String difficulty) {
this.difficulty = difficulty; this.difficulty = difficulty;
return this; return this;
} }
/**
*
* @param nbRounds le nombre de tours de la partie
* @return l'entité
*/
public NewGameBean setNbRounds(String nbRounds) { public NewGameBean setNbRounds(String nbRounds) {
this.nbRounds = nbRounds; this.nbRounds = nbRounds;
return this; return this;
} }
/**
*
* @param timer le temps de jeu de la partie
* @return l'entité
*/
public NewGameBean setTimer(String timer) { public NewGameBean setTimer(String timer) {
this.timer = timer; this.timer = timer;
return this; return this;
} }
/**
*
* @param nbValues le nombre de valeurs de la partie
* @return l'entité
*/
public NewGameBean setNbValues(String nbValues) { public NewGameBean setNbValues(String nbValues) {
this.nbValues = nbValues; this.nbValues = nbValues;
return this; return this;
} }
/**
*
* @param nbColors le nombre de couleurs de la partie
* @return l'entité
*/
public NewGameBean setNbColors(String nbColors) { public NewGameBean setNbColors(String nbColors) {
this.nbColors = nbColors; this.nbColors = nbColors;
return this; return this;
} }
/**
*
* @return la partie créée
*/
public Game getGame() { public Game getGame() {
return game; return game;
} }
/**
*
* @return l'erreur
*/
public HttpResponse getError() { public HttpResponse getError() {
return error; return error;
} }
@@ -1,3 +1,8 @@
/*
* PlayerBean.java, 1/05/2024
* UPPA M1 TI 2023-2024
* Pas de copyright, aucun droits
*/
package uppa.project.bean; package uppa.project.bean;
import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManager;
@@ -14,6 +19,11 @@ public class PlayerBean {
this.player = player; this.player = player;
} }
/**
* Gestion des joueurs de la parties
*
* @return true si tous les joueurs sont gérés, false sinon
*/
public boolean validate(){ public boolean validate(){
EntityManager em = EntityManagerProvider.getInstance(); EntityManager em = EntityManagerProvider.getInstance();
em.getTransaction().begin(); em.getTransaction().begin();
@@ -1,3 +1,8 @@
/*
* ProfileBean.java, 01/05/2024
* UPPA M1 TI 2023-2024
* Pas de copyright, aucun droits
*/
package uppa.project.bean; package uppa.project.bean;
import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManager;
@@ -21,15 +26,11 @@ public class ProfileBean {
public ProfileBean() {} public ProfileBean() {}
public ProfileBean(String username,String oldEmail, String email, String oldPassword, String password, String gender) { /**
this.id = username; * Validation des paramètres de la requête & mise à jour des informations de l'utilisateur
this.oldEmail = oldEmail; *
this.email = email; * @return true si les paramètres sont valides, false sinon
this.oldPassword = oldPassword; */
this.password = password;
this.gender = gender;
}
public boolean validate() { public boolean validate() {
EntityManager entityManager = EntityManagerProvider.getInstance(); EntityManager entityManager = EntityManagerProvider.getInstance();
entityManager.getTransaction().begin(); entityManager.getTransaction().begin();
@@ -78,39 +79,78 @@ public class ProfileBean {
} }
} }
/**
*
* @param id l'identifiant de l'utilisateur
* @return l'entité
*/
public ProfileBean setId(String id) { public ProfileBean setId(String id) {
this.id = id; this.id = id;
return this; return this;
} }
/**
*
* @param email l'adresse e-mail actuelle de l'utilisateur
* @return l'entité
*/
public ProfileBean setOldEmail(String email) { public ProfileBean setOldEmail(String email) {
this.oldEmail = email; this.oldEmail = email;
return this; return this;
} }
/**
*
* @param email la nouvelle adresse e-mail de l'utilisateur
* @return l'entité
*/
public ProfileBean setEmail(String email) { public ProfileBean setEmail(String email) {
this.email = email; this.email = email;
return this; return this;
} }
/**
*
* @param oldPassword l'ancien mot de passe de l'utilisateur
* @return l'entité
*/
public ProfileBean setOldPassword(String oldPassword) { public ProfileBean setOldPassword(String oldPassword) {
this.oldPassword = oldPassword; this.oldPassword = oldPassword;
return this; return this;
} }
/**
*
* @param password le nouveau mot de passe de l'utilisateur
* @return l'entité
*/
public ProfileBean setPassword(String password) { public ProfileBean setPassword(String password) {
this.password = password; this.password = password;
return this; return this;
} }
/**
*
* @param gender le genre de l'utilisateur
* @return l'entité
*/
public ProfileBean setGender(String gender) { public ProfileBean setGender(String gender) {
this.gender = gender; this.gender = gender;
return this; return this;
} }
/**
*
* @return l'erreur
*/
public HttpResponse getError() { public HttpResponse getError() {
return error; return error;
} }
/**
*
* @return l'utilisateur
*/
public User getUser() { public User getUser() {
return user; return user;
} }
@@ -1,6 +1,7 @@
package uppa.project.bean; package uppa.project.bean;
import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManager;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.ZoneId; import java.time.ZoneId;
@@ -15,6 +16,7 @@ import uppa.project.json.HttpResponseCode;
public class RegisterBean implements Serializable { public class RegisterBean implements Serializable {
@Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private String username; private String username;
@@ -28,14 +30,11 @@ public class RegisterBean implements Serializable {
public RegisterBean() { public RegisterBean() {
} }
public RegisterBean(String username, String email, String password, String birth, String gender) { /**
this.username = username; * Validation des paramètres de la requête & création d'un nouvel utilisateur
this.email = email; *
this.password = password; * @return true si les paramètres sont valides, false sinon
this.birth = birth; */
this.gender = gender;
}
public boolean validate() { public boolean validate() {
Game_JPA_DAO_Factory jpaDaoFactory = new Game_JPA_DAO_Factory(); Game_JPA_DAO_Factory jpaDaoFactory = new Game_JPA_DAO_Factory();
DAO<User> userDAO; DAO<User> userDAO;
@@ -100,31 +99,60 @@ public class RegisterBean implements Serializable {
return false; return false;
} }
/**
*
* @param username le nom d'utilisateur
* @return l'entité
*/
public RegisterBean setUsername(String username) { public RegisterBean setUsername(String username) {
this.username = username; this.username = username;
return this; return this;
} }
/**
*
* @param password le mot de passe
* @return l'entité
*/
public RegisterBean setPassword(String password) { public RegisterBean setPassword(String password) {
this.password = password; this.password = password;
return this; return this;
} }
/**
*
* @param email l'adresse e-mail
* @return l'entité
*/
public RegisterBean setEmail(String email) { public RegisterBean setEmail(String email) {
this.email = email; this.email = email;
return this; return this;
} }
/**
*
* @param birth la date de naissance
* @return l'entité
*/
public RegisterBean setBirth(String birth) { public RegisterBean setBirth(String birth) {
this.birth = birth; this.birth = birth;
return this; return this;
} }
/**
*
* @param gender le genre de l'utilisateur
* @return l'entité
*/
public RegisterBean setGender(String gender) { public RegisterBean setGender(String gender) {
this.gender = gender; this.gender = gender;
return this; return this;
} }
/**
*
* @return l'erreur
*/
public HttpResponse getError() { public HttpResponse getError() {
return error; return error;
} }
@@ -1,10 +1,8 @@
package uppa.project.bean; package uppa.project.bean;
import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManager;
import java.io.Serial;
import java.io.Serializable; 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.DAO;
import uppa.project.database.dao.DAOException; import uppa.project.database.dao.DAOException;
import uppa.project.database.dao.EntityManagerProvider; import uppa.project.database.dao.EntityManagerProvider;
@@ -14,6 +12,7 @@ import uppa.project.database.pojo.User;
public class ResetPasswordBean implements Serializable { public class ResetPasswordBean implements Serializable {
@Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private String token; private String token;
@@ -23,11 +22,11 @@ public class ResetPasswordBean implements Serializable {
public ResetPasswordBean() { public ResetPasswordBean() {
} }
public ResetPasswordBean(String token, String password) { /**
this.token = token; * Validation des paramètres de la requête & gestion de la réinitialisation du mot de passe
this.password = password; *
} * @return true si le token est valide, false sinon
*/
public boolean validate() { public boolean validate() {
Game_JPA_DAO_Factory jpaDaoFactory = new Game_JPA_DAO_Factory(); Game_JPA_DAO_Factory jpaDaoFactory = new Game_JPA_DAO_Factory();
DAO<User> userDAO; DAO<User> userDAO;
@@ -66,16 +65,30 @@ public class ResetPasswordBean implements Serializable {
return true; return true;
} }
/**
*
* @param token le token de réinitialisation de mot de passe
* @return this
*/
public ResetPasswordBean setToken(String token) { public ResetPasswordBean setToken(String token) {
this.token = token; this.token = token;
return this; return this;
} }
/**
*
* @param password le nouveau mot de passe
* @return this
*/
public ResetPasswordBean setPassword(String password) { public ResetPasswordBean setPassword(String password) {
this.password = password; this.password = password;
return this; return this;
} }
/**
*
* @return le message d'erreur
*/
public String getErrorMessage() { public String getErrorMessage() {
return errorMessage; return errorMessage;
} }
@@ -1,27 +0,0 @@
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){}
}
@@ -32,6 +32,14 @@ public class ForgottenPasswordServlet extends HttpServlet {
public void init() { public void init() {
} }
/**
* Affichage de la page de réinitialisation de mot de passe
*
* @param request la requête
* @param response la réponse
* @throws IOException si une erreur d'entrée/sortie survient
* @throws ServletException si une erreur de servlet survient
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
request.setAttribute("current", "forgotten-password"); request.setAttribute("current", "forgotten-password");
request.getRequestDispatcher("/WEB-INF/pages/forgotten-password.jsp").forward(request, response); request.getRequestDispatcher("/WEB-INF/pages/forgotten-password.jsp").forward(request, response);
@@ -40,9 +48,9 @@ public class ForgottenPasswordServlet extends HttpServlet {
/** /**
* Gestion de la réinitialisation de mot de passe * Gestion de la réinitialisation de mot de passe
* *
* @param request * @param request la requête
* @param response * @param response la réponse
* @throws IOException * @throws IOException si une erreur d'entrée/sortie survient
*/ */
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("application/json"); response.setContentType("application/json");
@@ -67,18 +75,11 @@ public class ForgottenPasswordServlet extends HttpServlet {
out.flush(); out.flush();
} }
public static User getUserByEmail(String email){ /**
try { * Création d'un token de réinitialisation de mot de passe
DAO_JPA_User daoJpaUser = new DAO_JPA_User(); *
User[] users = daoJpaUser.findByField("email", email); * @param token le token
if (users.length == 0) { */
return null;
}
return users[0];
} catch (DAOException e) {
throw new RuntimeException(e);
}
}
public static void CreateToken(RecoveryPasswordToken token){ public static void CreateToken(RecoveryPasswordToken token){
Game_JPA_DAO_Factory jpaDaoFactory = new Game_JPA_DAO_Factory(); Game_JPA_DAO_Factory jpaDaoFactory = new Game_JPA_DAO_Factory();
em.getTransaction().begin(); em.getTransaction().begin();
@@ -14,7 +14,6 @@ import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import uppa.project.database.dao.DAO; import uppa.project.database.dao.DAO;
import uppa.project.database.dao.DAOException; import uppa.project.database.dao.DAOException;
import uppa.project.database.dao.jpa.DAO_JPA_Game;
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory; import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
import uppa.project.database.pojo.Game; import uppa.project.database.pojo.Game;
@@ -24,6 +23,14 @@ public class GameServlet extends HttpServlet {
public void init() { public void init() {
} }
/**
* Affichage de la page de jeu
*
* @param request la requête
* @param response la réponse
* @throws IOException si une erreur d'entrée/sortie survient
* @throws ServletException si une erreur de servlet survient
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
try { try {
DAO<Game> gameDAO = new Game_JPA_DAO_Factory().getDAOGame(); DAO<Game> gameDAO = new Game_JPA_DAO_Factory().getDAOGame();
@@ -18,13 +18,21 @@ public class GameStatisticsServlet extends HttpServlet {
public void init() { public void init() {
} }
/**
* Affichage de la page de statistiques de jeu
*
* @param request la requête
* @param response la réponse
* @throws IOException si une erreur d'entrée/sortie survient
* @throws ServletException si une erreur de servlet survient
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
Game game; Game game;
try { try {
DAO<Game> gameDAO = new Game_JPA_DAO_Factory().getDAOGame(); DAO<Game> gameDAO = new Game_JPA_DAO_Factory().getDAOGame();
game = gameDAO.findById(Integer.parseInt(request.getParameter("id"))); game = gameDAO.findById(Integer.parseInt(request.getParameter("id")));
ArrayList<Player> players = new ArrayList<>(); ArrayList<Player> players = new ArrayList<>();
for (Player player : game.getPlayers()) players.add(player); players.addAll(game.getPlayers());
request.setAttribute("players", players); request.setAttribute("players", players);
request.setAttribute("game", game); request.setAttribute("game", game);
request.getRequestDispatcher("/WEB-INF/pages/game-statistics.jsp").forward(request, response); request.getRequestDispatcher("/WEB-INF/pages/game-statistics.jsp").forward(request, response);
@@ -19,6 +19,14 @@ public class IndexServlet extends HttpServlet {
public void init() { public void init() {
} }
/**
* Affichage de la page d'accueil
*
* @param request la requête
* @param response la réponse
* @throws IOException si une erreur d'entrée/sortie survient
* @throws ServletException si une erreur de servlet survient
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
request.setAttribute("current", "index"); request.setAttribute("current", "index");
request.getRequestDispatcher("/WEB-INF/pages/index.jsp").forward(request, response); request.getRequestDispatcher("/WEB-INF/pages/index.jsp").forward(request, response);
@@ -26,6 +26,14 @@ public class LobbyServlet extends HttpServlet {
public void init() { public void init() {
} }
/**
* Affichage de la page de lobby
*
* @param request la requête
* @param response la réponse
* @throws IOException si une erreur d'entrée/sortie survient
* @throws ServletException si une erreur de servlet survient
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
request.getRequestDispatcher("/WEB-INF/pages/lobby.jsp").forward(request, response); request.getRequestDispatcher("/WEB-INF/pages/lobby.jsp").forward(request, response);
} }
@@ -24,11 +24,26 @@ public class LoginServlet extends HttpServlet {
public void init() { public void init() {
} }
/**
* Affichage de la page de connexion
*
* @param request la requête
* @param response la réponse
* @throws IOException si une erreur d'entrée/sortie survient
* @throws ServletException si une erreur de servlet survient
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
request.setAttribute("current", "login"); request.setAttribute("current", "login");
request.getRequestDispatcher("/WEB-INF/pages/login.jsp").forward(request, response); request.getRequestDispatcher("/WEB-INF/pages/login.jsp").forward(request, response);
} }
/**
* Gestion de la connexion
*
* @param request la requête
* @param response la réponse
* @throws IOException si une erreur d'entrée/sortie survient
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("application/json"); response.setContentType("application/json");
response.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8");
@@ -6,24 +6,26 @@
package uppa.project.web.servlet; package uppa.project.web.servlet;
import com.google.gson.Gson;
import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import uppa.project.listener.SessionServletContextListener;
@WebServlet(name = "logoutServlet", value = "/logout") @WebServlet(name = "logoutServlet", value = "/logout")
public class LogoutServlet extends HttpServlet { public class LogoutServlet extends HttpServlet {
private final Gson gson = new Gson();
public void init() { public void init() {
} }
/**
* Déconnexion de l'utilisateur
*
* @param request la requête
* @param response la réponse
* @throws IOException si une erreur d'entrée/sortie survient
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
SessionServletContextListener.removeSession(request.getSession());
request.getSession().removeAttribute("user"); request.getSession().removeAttribute("user");
response.sendRedirect(request.getContextPath() + "/login"); response.sendRedirect(request.getContextPath() + "/login");
} }
@@ -25,10 +25,25 @@ public class NewGameServlet extends HttpServlet {
public void init() { public void init() {
} }
/**
* Affichage de la page de création de partie
*
* @param request la requête
* @param response la réponse
* @throws IOException si une erreur d'entrée/sortie survient
* @throws ServletException si une erreur de servlet survient
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
request.getRequestDispatcher("/WEB-INF/pages/new-game.jsp").forward(request, response); request.getRequestDispatcher("/WEB-INF/pages/new-game.jsp").forward(request, response);
} }
/**
* Création d'une nouvelle partie
*
* @param request la requête
* @param response la réponse
* @throws IOException si une erreur d'entrée/sortie survient
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
Gson gson = new Gson(); Gson gson = new Gson();
@@ -29,9 +29,17 @@ public class ProfileServlet extends HttpServlet {
public void init() { public void init() {
} }
/**
* Affichage de la page de profil
*
* @param request la requête
* @param response la réponse
* @throws IOException si une erreur d'entrée/sortie survient
* @throws ServletException si une erreur de servlet survient
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
User usersession = (User) request.getSession().getAttribute("user"); User usersession = (User) request.getSession().getAttribute("user");
DAO<User> userDAO = null; DAO<User> userDAO;
try { try {
userDAO = new Game_JPA_DAO_Factory().getDAOUser(); userDAO = new Game_JPA_DAO_Factory().getDAOUser();
User user = userDAO.findById(usersession.getId().intValue()); User user = userDAO.findById(usersession.getId().intValue());
@@ -39,15 +47,21 @@ public class ProfileServlet extends HttpServlet {
System.out.println("Partie jouée le " + p.getGame().getCreatedAt().toLocaleString()); System.out.println("Partie jouée le " + p.getGame().getCreatedAt().toLocaleString());
} }
request.getSession().setAttribute("user", user); request.getSession().setAttribute("user", user);
// request.setAttribute("current", "profile");
request.getRequestDispatcher("/WEB-INF/pages/profile.jsp").forward(request, response); request.getRequestDispatcher("/WEB-INF/pages/profile.jsp").forward(request, response);
} catch (DAOException e) { } catch (DAOException e) {
System.out.println(e); System.out.println(e.getMessage());
response.sendRedirect(request.getContextPath() + "/lobby"); response.sendRedirect(request.getContextPath() + "/lobby");
} }
} }
/**
* Gestion de la modification de profil
*
* @param request la requête
* @param response la réponse
* @throws IOException si une erreur d'entrée/sortie survient
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("application/json"); response.setContentType("application/json");
response.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8");
@@ -14,7 +14,6 @@ import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import uppa.project.bean.LoginBean;
import uppa.project.bean.RegisterBean; import uppa.project.bean.RegisterBean;
import uppa.project.json.HttpResponse; import uppa.project.json.HttpResponse;
import uppa.project.json.HttpResponseCode; import uppa.project.json.HttpResponseCode;
@@ -25,11 +24,26 @@ public class RegisterServlet extends HttpServlet {
public void init() { public void init() {
} }
/**
* Affichage de la page d'inscription
*
* @param request la requête
* @param response la réponse
* @throws IOException si une erreur d'entrée/sortie survient
* @throws ServletException si une erreur de servlet survient
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
request.setAttribute("current", "register"); request.setAttribute("current", "register");
request.getRequestDispatcher("/WEB-INF/pages/register.jsp").forward(request, response); request.getRequestDispatcher("/WEB-INF/pages/register.jsp").forward(request, response);
} }
/**
* Gestion de l'inscription
*
* @param request la requête
* @param response la réponse
* @throws IOException si une erreur d'entrée/sortie survient
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("application/json"); response.setContentType("application/json");
response.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8");
@@ -8,13 +8,10 @@ import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import uppa.project.bean.RegisterBean;
import uppa.project.bean.ResetPasswordBean; import uppa.project.bean.ResetPasswordBean;
import uppa.project.database.dao.DAOException; import uppa.project.database.dao.DAOException;
import uppa.project.database.dao.jpa.DAO_JPA_RecoveryPasswordToken; 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.RecoveryPasswordToken;
import uppa.project.database.pojo.User;
import uppa.project.json.HttpResponse; import uppa.project.json.HttpResponse;
import uppa.project.json.HttpResponseCode; import uppa.project.json.HttpResponseCode;
@@ -23,6 +20,14 @@ public class ResetPasswordServlet extends HttpServlet {
public void init() { public void init() {
} }
/**
* Affichage de la page de réinitialisation de mot de passe
*
* @param request la requête
* @param response la réponse
* @throws IOException si une erreur d'entrée/sortie survient
* @throws ServletException si une erreur de servlet survient
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
RecoveryPasswordToken token = findRecoveryToken(request.getParameter("token")); RecoveryPasswordToken token = findRecoveryToken(request.getParameter("token"));
if (token == null) { if (token == null) {
@@ -40,9 +45,9 @@ public class ResetPasswordServlet extends HttpServlet {
/** /**
* Gestion de la réinitialisation de mot de passe * Gestion de la réinitialisation de mot de passe
* *
* @param request * @param request la requête
* @param response * @param response la réponse
* @throws IOException * @throws IOException si une erreur d'entrée/sortie survient
*/ */
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("application/json"); response.setContentType("application/json");
@@ -69,6 +74,12 @@ public class ResetPasswordServlet extends HttpServlet {
out.flush(); out.flush();
} }
/**
* Recherche d'un token de réinitialisation de mot de passe
*
* @param token le token
* @return le token de réinitialisation de mot de passe
*/
public static RecoveryPasswordToken findRecoveryToken(String token) { public static RecoveryPasswordToken findRecoveryToken(String token) {
try { try {
DAO_JPA_RecoveryPasswordToken daoJpaRecoveryPasswordToken = new DAO_JPA_RecoveryPasswordToken(); DAO_JPA_RecoveryPasswordToken daoJpaRecoveryPasswordToken = new DAO_JPA_RecoveryPasswordToken();
@@ -12,7 +12,17 @@ public class RulesServlet extends HttpServlet {
public void init() { public void init() {
} }
/**
* Affichage de la page des règles
*
* @param request la requête
* @param response la réponse
* @throws IOException si une erreur d'entrée/sortie survient
* @throws ServletException si une erreur de servlet survient
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
request.getRequestDispatcher("/WEB-INF/pages/rules.jsp").forward(request, response); request.getRequestDispatcher("/WEB-INF/pages/rules.jsp").forward(request, response);
} }
public void destroy() {
}
} }
@@ -3,12 +3,6 @@
xmlns="https://jakarta.ee/xml/ns/jakartaee" 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" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0"> version="5.0">
<listener>
<listener-class>
uppa.project.listener.SessionServletContextListener
</listener-class>
</listener>
<filter> <filter>
<filter-name>AuthenticationFilter</filter-name> <filter-name>AuthenticationFilter</filter-name>
<filter-class>uppa.project.web.filter.AuthenticationFilter</filter-class> <filter-class>uppa.project.web.filter.AuthenticationFilter</filter-class>