From d983f8ce97bff9f2d89d2be735ce5fa0283e7a26 Mon Sep 17 00:00:00 2001 From: kmitresse Date: Tue, 26 Mar 2024 13:57:16 +0100 Subject: [PATCH] feat: dev-web - servlet part --- .../src/main/java/uppa/project/Global.java | 2 +- .../src/main/java/uppa/project/Main.java | 27 +++--- .../src/main/java/uppa/project/pojo/Deck.java | 28 +++--- .../src/main/java/uppa/project/pojo/Game.java | 12 +-- .../main/java/uppa/project/pojo/Player.java | 4 +- .../src/main/java/uppa/project/pojo/User.java | 28 ++++-- .../provider/EntityManagerProvider.java | 5 +- .../uppa/project/servlet/MainMenuServlet.java | 39 +++++++- .../uppa/project/servlet/NewGameServlet.java | 10 -- .../webapp/WEB-INF/components/new-game.jsp | 51 ++++++++++ .../webapp/WEB-INF/components/statistics.jsp | 95 +++++++++++++++++++ .../WEB-INF/static/js/forgotten-password.js | 25 +++-- .../main/webapp/WEB-INF/static/js/login.js | 17 ++-- .../main/webapp/WEB-INF/static/js/new-game.js | 34 ++++--- .../main/webapp/WEB-INF/static/js/register.js | 30 ++++++ .../WEB-INF/static/js/reset-password.js | 11 +-- .../WEB-INF/views/forgotten-password.jsp | 2 +- .../src/main/webapp/WEB-INF/views/login.jsp | 3 +- .../main/webapp/WEB-INF/views/main-menu.jsp | 7 +- .../main/webapp/WEB-INF/views/new-game.jsp | 57 ----------- .../main/webapp/WEB-INF/views/register.jsp | 1 + .../test/java/uppa/project/pojo/DeckTest.java | 3 + 22 files changed, 326 insertions(+), 165 deletions(-) create mode 100644 S2/DevWeb/Projet/src/main/webapp/WEB-INF/components/new-game.jsp create mode 100644 S2/DevWeb/Projet/src/main/webapp/WEB-INF/components/statistics.jsp create mode 100644 S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/register.js delete mode 100644 S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/new-game.jsp diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/Global.java b/S2/DevWeb/Projet/src/main/java/uppa/project/Global.java index e4e8178..2ab5167 100644 --- a/S2/DevWeb/Projet/src/main/java/uppa/project/Global.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/Global.java @@ -1,6 +1,6 @@ package uppa.project; -public class Global { +public final class Global { public static final String PERSISTENCE_UNIT_NAME = "prod"; public static final String PERSISTENCE_UNIT_NAME_TEST = "test"; diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/Main.java b/S2/DevWeb/Projet/src/main/java/uppa/project/Main.java index 2160692..d454d8a 100644 --- a/S2/DevWeb/Projet/src/main/java/uppa/project/Main.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/Main.java @@ -1,5 +1,6 @@ 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; @@ -7,8 +8,8 @@ import uppa.project.pojo.User; public class Main { - public static void main(String[] args) { - try { + public static void main(String[] args) throws DAOException { + try { Game_JPA_DAO_Factory jpaDaoFactory = new Game_JPA_DAO_Factory(); DAO daoJpaUser = jpaDaoFactory.getDAOUser(); // DAO daoJpaGame = jpaDaoFactory.getDAOGame(); @@ -21,17 +22,17 @@ public class Main { } System.out.println(); -// // Ajout d'User : -// Calendar cal1 = Calendar.getInstance(); -// cal1.set(1996, Calendar.FEBRUARY, 20); -// User user1 = new User("Kevin", "Mitresse", cal1.getTime(), User.Gender.MALE); -// -// Calendar cal2 = Calendar.getInstance(); -// cal2.set(2002, Calendar.JUNE, 28); -// User user2 = new User("Lucàs", "Vabre", cal2.getTime(), User.Gender.MALE); -// -// daoJpaUser.create(user1); -// daoJpaUser.create(user2); + // Ajout d'User : + Calendar cal1 = Calendar.getInstance(); + cal1.set(1996, Calendar.FEBRUARY, 20); + User user1 = new User("Kevin","kmitresse@gmail.com", "Mitresse", cal1.getTime(), User.Gender.MALE); + + Calendar cal2 = Calendar.getInstance(); + cal2.set(2002, Calendar.JUNE, 28); + User user2 = new User("Lucàs", "lucas@gmail.com" ,"Vabre", cal2.getTime(), User.Gender.MALE); + + daoJpaUser.create(user1); + daoJpaUser.create(user2); // System.out.println("test récupération user"); // User[] users2 = daoJpaUser.findByField("username", "Kevin"); diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Deck.java b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Deck.java index d2e881a..95b0d1e 100644 --- a/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Deck.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Deck.java @@ -8,9 +8,6 @@ package uppa.project.pojo; import java.util.ArrayList; import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; /** * Représentation d'un paquet de cartes @@ -24,7 +21,7 @@ public class Deck { * Ensemble de cartes du paquet * @see Card */ - private Set cards; + private ArrayList cards; /** * Constructeur par défaut @@ -38,9 +35,13 @@ public class Deck { cards = initializeDeck(nbColors, nbValues); } - public Set getCards() { + /** + * @return l'ensemble de cartes du paquet + */ + public ArrayList getCards() { return cards; } + /** * Créé un paquet de cartes mélangé avec un nombre de couleurs et de valeurs donné * @@ -48,9 +49,10 @@ public class Deck { * @param nbValues nombre de valeurs (doit être compris entre 1 et le nombre de valeurs de {@link Card.Value}) * @return un ensemble de cartes mélangées */ - private static Set initializeDeck(int nbColors, int nbValues) { - Set cards = createSetOfCard(nbColors, nbValues); - return shuffleSetOfCard(cards); + private static ArrayList initializeDeck(int nbColors, int nbValues) { + ArrayList cards = createSetOfCard(nbColors, nbValues); + shuffleSetOfCard(cards); + return cards; } /** @@ -63,8 +65,8 @@ public class Deck { * @throws IllegalArgumentException si le nombre de couleurs ou de valeurs est incorrect * @return un ensemble de cartes */ - private static Set createSetOfCard(int nbColors, int nbValues) throws IllegalArgumentException { - Set cards = new HashSet<>(); + private static ArrayList createSetOfCard(int nbColors, int nbValues) throws IllegalArgumentException { + ArrayList cards = new ArrayList<>(nbColors*nbValues); if (nbColors < 1 || nbColors > Card.Color.values().length) { throw new IllegalArgumentException("Le nombre de couleurs doit être compris entre 1 et " + Card.Color.values().length); @@ -87,10 +89,8 @@ public class Deck { * @param cards ensemble de cartes à mélanger * @return un ensemble de cartes mélangées */ - private static HashSet shuffleSetOfCard(Set cards) { - List cardList = new ArrayList<>(cards); - Collections.shuffle(cardList); - return new HashSet<>(cardList); + private static void shuffleSetOfCard(ArrayList cards) { + Collections.shuffle(cards); } } diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Game.java b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Game.java index 4f14afb..dba353b 100644 --- a/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Game.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Game.java @@ -22,9 +22,9 @@ import jakarta.persistence.TemporalType; import jakarta.persistence.Transient; import java.io.Serializable; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; import java.util.Objects; -import java.util.Set; /** * Représentation d'une partie de jeu @@ -60,7 +60,7 @@ public class Game implements Serializable { private int nbValuesPerColor; @OneToMany(mappedBy = "game", cascade = CascadeType.ALL, fetch = FetchType.LAZY) - private Set players; + private ArrayList players; @Transient private Deck deck; @@ -98,7 +98,7 @@ public class Game implements Serializable { * @param nbValuesPerColor le nombre de valeurs par couleur * @param players les joueurs de la partie */ - public Game(BigDecimal id, Date createdAt, Difficulty difficulty, int nbRounds, int nbColors, int nbValuesPerColor, Set players) { + public Game(BigDecimal id, Date createdAt, Difficulty difficulty, int nbRounds, int nbColors, int nbValuesPerColor, ArrayList players) { this.id = id; this.createdAt = createdAt; this.difficulty = difficulty; @@ -187,7 +187,7 @@ public class Game implements Serializable { /** * @return les joueurs de la partie */ - public Set getPlayers() { + public ArrayList getPlayers() { return players; } @@ -196,7 +196,7 @@ public class Game implements Serializable { * * @param players les nouveaux joueurs */ - public void setPlayers(Set players) { + public void setPlayers(ArrayList players) { this.players = players; } @@ -216,7 +216,7 @@ public class Game implements Serializable { this.players.add(player); } - public Set getDeck() { + public ArrayList getDeck() { return deck.getCards(); } diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Player.java b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Player.java index 41c71ae..561b5ca 100644 --- a/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Player.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Player.java @@ -17,8 +17,8 @@ import jakarta.persistence.Table; import jakarta.persistence.Transient; import java.io.Serializable; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Objects; -import java.util.Set; /** * Représentation d'un joueur @@ -259,7 +259,7 @@ public class Player implements Serializable { return (double) rapidClickCount * 100 / clickCount; } - public Set getDeck() { + public ArrayList getDeck() { return deck.getCards(); } @Override diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/User.java b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/User.java index 9d8ba06..d80ade4 100644 --- a/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/User.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/User.java @@ -23,9 +23,9 @@ import java.io.Serializable; import java.math.BigDecimal; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; import java.util.Date; import java.util.Objects; -import java.util.Set; /** * Représentation d'un utilisateur @@ -60,10 +60,10 @@ public class User implements Serializable { private Gender gender; @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY) - private Set playedGame; + private ArrayList playedGames; @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY) - private Set recoveryPasswordTokens; + private ArrayList recoveryPasswordTokens; /** * Constructeur par défaut @@ -98,13 +98,14 @@ public class User implements Serializable { * @param birth la date de naissance * @param gender le genre */ - public User(BigDecimal id, String username, String email, String password, Date birth, Gender gender) { + public User(BigDecimal id, String username, String email, String password, Date birth, Gender gender, ArrayList playedGames) { this.id = id; this.username = username; this.email = email; this.password = password; this.birth = birth; this.gender = gender; + this.playedGames = playedGames; } /** @@ -245,13 +246,22 @@ public class User implements Serializable { return hashedPassword != null && hashedPassword.equals(this.password); } + /** + * Récupère la liste des parties jouées par l'utilisateur + * + * @return la liste des parties jouées + */ + public ArrayList getPlayedGames() { + return playedGames; + } + /** * Récupère le nombre de parties jouées * * @return le nombre de parties jouées */ public int getNbPlayedGame() { - return playedGame.size(); + return playedGames.size(); } /** @@ -261,7 +271,7 @@ public class User implements Serializable { */ public int getNbWin(){ int nbWin = 0; - for (Player p : playedGame) { + for (Player p : playedGames) { if (p.isWinner()) nbWin++; } return nbWin; @@ -283,7 +293,7 @@ public class User implements Serializable { */ public int getNbClicks(){ int nbClicks = 0; - for (Player p : playedGame) { + for (Player p : playedGames) { nbClicks += p.getClickCount(); } return nbClicks; @@ -296,7 +306,7 @@ public class User implements Serializable { */ public int getNbRightClicks(){ int nbRightClicks = 0; - for (Player p : playedGame) { + for (Player p : playedGames) { nbRightClicks += p.getRightClickCount(); } return nbRightClicks; @@ -318,7 +328,7 @@ public class User implements Serializable { */ public int getNbRapidClicks(){ int nbRapidClicks = 0; - for (Player p : playedGame) { + for (Player p : playedGames) { nbRapidClicks += p.getRapidClickCount(); } return nbRapidClicks; diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/provider/EntityManagerProvider.java b/S2/DevWeb/Projet/src/main/java/uppa/project/provider/EntityManagerProvider.java index 9d34035..c9e428a 100644 --- a/S2/DevWeb/Projet/src/main/java/uppa/project/provider/EntityManagerProvider.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/provider/EntityManagerProvider.java @@ -19,7 +19,7 @@ import uppa.project.Global; * @see jakarta.persistence.EntityManager */ public final class EntityManagerProvider { - private static final String PERSISTENCE_UNIT_NAME = Global.PERSISTENCE_UNIT_NAME; + private static String PERSISTENCE_UNIT_NAME = Global.PERSISTENCE_UNIT_NAME; private static EntityManager instance; private static EntityManagerFactory factory; @@ -35,6 +35,9 @@ public final class EntityManagerProvider { return instance; } + public static void setPersitenceUnitName(String name) { + PERSISTENCE_UNIT_NAME = name; + } public static void close() { if (instance.isOpen()) instance.close(); if (factory.isOpen()) factory.close(); 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 7ec9c5b..6909e40 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 @@ -12,6 +12,11 @@ import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import uppa.project.pojo.Game; +import uppa.project.pojo.Player; +import uppa.project.pojo.User; @WebServlet(name = "mainMenuServlet", value = "/main-menu") public class MainMenuServlet extends HttpServlet { @@ -20,15 +25,39 @@ public class MainMenuServlet extends HttpServlet { } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - - if (request.getSession().getAttribute("user") == null) { - request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response); + User user = (User) request.getSession().getAttribute("user"); + if (user == null) { + response.sendRedirect(request.getContextPath() + "/login"); return; } - + manageNewGame(request, response, user); + manageStatistiques(request, response, user); response.sendRedirect(request.getContextPath() + "/main-menu"); } public void destroy() { } -} \ No newline at end of file + + 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*/ + 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 { + List games = new ArrayList(); + for(Player player : sessionUser.getPlayedGames()) { + Game game = player.getGame(); + game.sortPlayersByScore(); + games.add(game); + } + request.setAttribute("games", games); + } +} 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 index ca1832f..3d0a9e7 100644 --- a/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/NewGameServlet.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/NewGameServlet.java @@ -26,16 +26,6 @@ public class NewGameServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - if (request.getSession().getAttribute("user") == null) { - response.sendRedirect(request.getContextPath() + "/login"); - return; - } - User[] users = new User[0]; - /*TODO: récuperer la liste des joueurs connectés - penser à retirer l'utilisateur principal de la liste*/ - - request.setAttribute("connectedUsers", users); - request.getRequestDispatcher("/WEB-INF/views/new-game.jsp").forward(request, response); } public void destroy() { diff --git a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/components/new-game.jsp b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/components/new-game.jsp new file mode 100644 index 0000000..0976cff --- /dev/null +++ b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/components/new-game.jsp @@ -0,0 +1,51 @@ +<%@ page import="uppa.project.pojo.User" %> +<%@ page import="java.util.List" %><%-- + Created by IntelliJ IDEA. + User: kmitr + Date: 19/03/2024 + Time: 15:47 + To change this template use File | Settings | File Templates. +--%> + +``` diff --git a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/components/statistics.jsp b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/components/statistics.jsp new file mode 100644 index 0000000..ae9fa4b --- /dev/null +++ b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/components/statistics.jsp @@ -0,0 +1,95 @@ +<%@ page import="uppa.project.pojo.User" %> +<%@ page import="uppa.project.pojo.Game" %> +<%@ page import="java.util.Set" %> +<%@ page import="java.util.ArrayList" %> +<%@ page import="uppa.project.pojo.Player" %><%-- + Created by IntelliJ IDEA. + User: kmitr + Date: 26/03/2024 + Time: 11:05 + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +//modale statistque +<% User user = (User) request.getAttribute("user"); %> +<% ArrayList games = (ArrayList) request.getAttribute("games"); %> + diff --git a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/forgotten-password.js b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/forgotten-password.js index 60732ac..4bb668c 100644 --- a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/forgotten-password.js +++ b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/forgotten-password.js @@ -1,14 +1,13 @@ -window.onload = function (){ - const urlParams = new URLSearchParams(window.location.search); - let error = null; - if (urlParams.has('error')) { - error = urlParams.get('error'); - } - console.log(error); - if (error != null && error === "expired-token") { - window.alert("Lien expiré, veuillez recommencer la procédure de récupération de mot de passe."); - } - if (error != null && error === "invalid-token") { - window.alert("Lien invalide, veuillez recommencer la procédure de récupération de mot de passe."); - } +const ERROR_MESSAGE = { + "expired-token": "Lien expiré, veuillez recommencer la procédure de récupération de mot de passe.", + "invalid-token": "Lien invalide, veuillez recommencer la procédure de récupération de mot de passe.", +}; + +const urlParams = new URLSearchParams(window.location.search); +const error = urlParams.get('error'); + +if (error) { + const errorMessage = ERROR_MESSAGE[error]; + console.error(errorMessage); + window.alert(errorMessage); } diff --git a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/login.js b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/login.js index 2d26a83..5a725d9 100644 --- a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/login.js +++ b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/login.js @@ -24,14 +24,13 @@ loginForm.addEventListener("submit", (event) => { ; }); -window.onload = function (){ - const urlParams = new URLSearchParams(window.location.search); - if (urlParams.has('success')) { - if (urlParams.get('success') === "account-created") { - window.alert("Compte créé avec succès."); - } - if (urlParams.get('success') === "password-reseted") { - window.alert("Mot de passe réinitialisé avec succès."); - } + +const urlParams = new URLSearchParams(window.location.search); +if (urlParams.has('success')) { + if (urlParams.get('success') === "account-created") { + window.alert("Compte créé avec succès."); + } + if (urlParams.get('success') === "password-reseted") { + window.alert("Mot de passe réinitialisé avec succès."); } } diff --git a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/new-game.js b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/new-game.js index d714410..25e1bbb 100644 --- a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/new-game.js +++ b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/new-game.js @@ -1,15 +1,19 @@ -// Mise à jour du nombre de rounds max en fonction du nombre de couleurs et de valeurs sélécetionnés -document.getElementById("nbColors").addEventListener("change", function () { - let nbColors = document.getElementById("nbColors").value; - let nbValues = document.getElementById("nbValues").value; - let nbRounds = document.getElementById("nbRounds"); - nbRounds.max = nbColors * nbValues; - nbRounds.value = nbRounds.value > nbRounds.max ? nbRounds.max : nbRounds.value; -}); -document.getElementById("nbValues").addEventListener("change", function () { - let nbColors = document.getElementById("nbColors").value; - let nbValues = document.getElementById("nbValues").value; - let nbRounds = document.getElementById("nbRounds"); - nbRounds.max = nbColors * nbValues; - nbRounds.value = nbRounds.value > nbRounds.max ? nbRounds.max : nbRounds.value; -}); +const nbColorsElement = document.getElementById("nbColors"); +const nbValuesElement = document.getElementById("nbValues"); +const nbRoundsElement = document.getElementById("nbRounds") + +/** + * Mise à jour du nombre de rounds max en fonction du nombre de couleurs et de valeurs séléctionnés + */ +function updateOnChange() { + nbRoundsElement.max = nbColorsElement.value * nbValuesElement.value; + + nbRoundsElement.value = + (nbRoundsElement.value > nbRoundsElement.max) + ? nbRoundsElement.max + : nbRoundsElement.value + ; +} + +nbColorsElement.addEventListener("change", updateOnChange); +nbValuesElement.addEventListener("change", updateOnChange); diff --git a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/register.js b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/register.js new file mode 100644 index 0000000..447b93a --- /dev/null +++ b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/register.js @@ -0,0 +1,30 @@ +const registerForm = document.getElementById("register-form"); +const confirmPassword = document.getElementById("confirmPassword"); + +registerForm.addEventListener("submit", function (event) { + event.preventDefault(); + const formData = new FormData(registerForm); + + const data = {}; + formData.forEach((value, key) => data[key] = value); + + const action = loginForm.getAttribute("action") + const method = loginForm.getAttribute("method") + + + fetch("/reset-password", { + method: "POST", + headers: { + "Content-Type": "application/json" + }, + body: JSON.stringify(data) + }).then(response => { + if (response.ok) { + window.location.href = "/login"; + } else { + response.json().then(data => { + alert(data.message); + }); + } + }).catch(error => console.error("Error:", error)); +}); diff --git a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/reset-password.js b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/reset-password.js index ef2e081..b3def46 100644 --- a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/reset-password.js +++ b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/static/js/reset-password.js @@ -1,15 +1,16 @@ -const ResetPasswordForm = document.getElementById("resetPasswordForm"); +const resetPasswordForm = document.getElementById("resetPasswordForm"); +const confirmPassword = document.getElementById("confirmPassword"); -ResetPasswordForm.addEventListener("submit", function (event) { +resetPasswordForm.addEventListener("submit", function (event) { event.preventDefault(); - const formData = new FormData(ResetPasswordForm); + const formData = new FormData(resetPasswordForm); + const data = {}; formData.forEach((value, key) => data[key] = value); const action = loginForm.getAttribute("action") const method = loginForm.getAttribute("method") - fetch("/reset-password", { method: "POST", headers: { @@ -28,5 +29,3 @@ ResetPasswordForm.addEventListener("submit", function (event) { console.error("Error:", error); }); }); - - diff --git a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/forgotten-password.jsp b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/forgotten-password.jsp index 514b7d1..0b02f93 100644 --- a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/forgotten-password.jsp +++ b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/forgotten-password.jsp @@ -26,5 +26,5 @@ <%}%> - + diff --git a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/login.jsp b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/login.jsp index a6a240b..0dcb102 100644 --- a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/login.jsp +++ b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/login.jsp @@ -4,6 +4,7 @@ Cards Rush - Connexion + @@ -35,7 +36,7 @@ - + diff --git a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/main-menu.jsp b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/main-menu.jsp index a808d38..d106f48 100644 --- a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/main-menu.jsp +++ b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/main-menu.jsp @@ -4,6 +4,7 @@ Cards Rush +
@@ -11,8 +12,10 @@

Titre du jeu

- - + //create a modal button for new game: + + <%@include file="../components/new-game.jsp"%> +
;
diff --git a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/new-game.jsp b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/new-game.jsp deleted file mode 100644 index f391aa2..0000000 --- a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/new-game.jsp +++ /dev/null @@ -1,57 +0,0 @@ -<%@ page import="uppa.project.pojo.User" %><%-- - Created by IntelliJ IDEA. - User: kmitr - Date: 19/03/2024 - Time: 15:47 - To change this template use File | Settings | File Templates. ---%> -<%@ page contentType="text/html;charset=UTF-8" language="java" %> - - - New game - - -
-
-

New Game

-
-
- - - - - - - - -
-
-
- - - - - - - - - - <% User[] connectedUsers = (User[]) request.getAttribute("connectedUsers"); %> - <% for (User user : connectedUsers) { %> - - - - - - - - - <% } %> -
Nom d'utilisateurNombre de partie jouées% Parties Gagnées% Clicks corrects% Clicks rapidesInvite
<%= user.getUsername() %><%= user.getNbPlayedGame() %><%= user.getWinRate() %><%= user.getRightClickPercentRate()%><%= user.getRapidClickPercentRate()%>
- -
-
-
- - - diff --git a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/register.jsp b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/register.jsp index aa36ada..50e542e 100644 --- a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/register.jsp +++ b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/views/register.jsp @@ -51,4 +51,5 @@
+ diff --git a/S2/DevWeb/Projet/src/test/java/uppa/project/pojo/DeckTest.java b/S2/DevWeb/Projet/src/test/java/uppa/project/pojo/DeckTest.java index 0a759bb..e4e4ac0 100644 --- a/S2/DevWeb/Projet/src/test/java/uppa/project/pojo/DeckTest.java +++ b/S2/DevWeb/Projet/src/test/java/uppa/project/pojo/DeckTest.java @@ -19,8 +19,11 @@ class DeckTest { @Test void throw_error_on_creation_of_invalid_deck() { + // Nombre de couleurs invalides assertThrows(IllegalArgumentException.class, () -> new Deck(0, 13)); assertThrows(IllegalArgumentException.class, () -> new Deck(5, 13)); + + // Nombre de valeurs invalides assertThrows(IllegalArgumentException.class, () -> new Deck(1, 0)); assertThrows(IllegalArgumentException.class, () -> new Deck(1, 15)); }