From 9d0b1e09b9cf0b80fa12abee8b7aca246619608c Mon Sep 17 00:00:00 2001 From: Adrien Fryson <adrien.fryson@outlook.com> Date: Sun, 16 Mar 2025 16:56:54 +0100 Subject: [PATCH] fixes --- sae/WEB-INF/src/controleur/DeleteMessage.java | 2 +- sae/WEB-INF/src/controleur/GetFils.java | 3 +- sae/WEB-INF/src/controleur/Parametre.java | 3 -- sae/WEB-INF/src/modele/AbonnementDao.java | 1 - .../src/modele/FilDeDiscussionDAO.java | 1 - sae/WEB-INF/src/modele/MessageDao.java | 5 ++- sae/WEB-INF/src/modele/UtilisateurDao.java | 2 +- sae/WEB-INF/vue/accueil.jsp | 5 ++- sae/WEB-INF/vue/creerFil.jsp | 4 +-- sae/WEB-INF/vue/fil.jsp | 4 +-- sae/WEB-INF/vue/listerFil.jsp | 4 +-- sae/WEB-INF/vue/login.jsp | 8 ++--- sae/WEB-INF/vue/parametre.jsp | 4 +-- sae/WEB-INF/vue/register.jsp | 8 ++--- script.sql | 32 +++++++------------ 15 files changed, 35 insertions(+), 51 deletions(-) diff --git a/sae/WEB-INF/src/controleur/DeleteMessage.java b/sae/WEB-INF/src/controleur/DeleteMessage.java index efd56d4..74aa1e0 100644 --- a/sae/WEB-INF/src/controleur/DeleteMessage.java +++ b/sae/WEB-INF/src/controleur/DeleteMessage.java @@ -33,4 +33,4 @@ public class DeleteMessage extends HttpServlet { } res.sendRedirect(req.getHeader("Referer")); } -} +} \ No newline at end of file diff --git a/sae/WEB-INF/src/controleur/GetFils.java b/sae/WEB-INF/src/controleur/GetFils.java index f9fe82c..8ca4d28 100644 --- a/sae/WEB-INF/src/controleur/GetFils.java +++ b/sae/WEB-INF/src/controleur/GetFils.java @@ -22,7 +22,8 @@ import modele.FilDeDiscussionDAO; import modele.Message; import modele.MessageDao; -//http GET http://localhost:8080/sae/getFils Cookie:"JSESSIONID=ton_session_id" --> F12>Storage>JSESSIONID +// http GET http://localhost:8080/CampusTalk/getFils Cookie:"JSESSIONID=?" --> F12>Storage>JSESSIONID +// curl -X GET http://localhost:8080/CampusTalk/getFils --cookie "JSESSIONID=?" @WebServlet("/getFils") public class GetFils extends HttpServlet { diff --git a/sae/WEB-INF/src/controleur/Parametre.java b/sae/WEB-INF/src/controleur/Parametre.java index 8da9bb5..90d984b 100644 --- a/sae/WEB-INF/src/controleur/Parametre.java +++ b/sae/WEB-INF/src/controleur/Parametre.java @@ -6,9 +6,6 @@ import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import modele.AbonnementDao; -import modele.FilDeDiscussionDAO; -import modele.MessageDao; import modele.Utilisateur; import modele.UtilisateurDao; import org.apache.commons.text.StringEscapeUtils; diff --git a/sae/WEB-INF/src/modele/AbonnementDao.java b/sae/WEB-INF/src/modele/AbonnementDao.java index 51021fb..151db56 100644 --- a/sae/WEB-INF/src/modele/AbonnementDao.java +++ b/sae/WEB-INF/src/modele/AbonnementDao.java @@ -3,7 +3,6 @@ package modele; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; -import java.sql.SQLException; import java.util.List; import java.util.ArrayList; diff --git a/sae/WEB-INF/src/modele/FilDeDiscussionDAO.java b/sae/WEB-INF/src/modele/FilDeDiscussionDAO.java index 4553a75..8abb930 100644 --- a/sae/WEB-INF/src/modele/FilDeDiscussionDAO.java +++ b/sae/WEB-INF/src/modele/FilDeDiscussionDAO.java @@ -3,7 +3,6 @@ package modele; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; -import java.sql.SQLException; import java.util.ArrayList; import java.util.List; diff --git a/sae/WEB-INF/src/modele/MessageDao.java b/sae/WEB-INF/src/modele/MessageDao.java index b95fbb2..9396802 100644 --- a/sae/WEB-INF/src/modele/MessageDao.java +++ b/sae/WEB-INF/src/modele/MessageDao.java @@ -3,7 +3,6 @@ package modele; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; -import java.sql.SQLException; import java.util.List; import java.util.ArrayList; @@ -35,7 +34,7 @@ public class MessageDao { public List<Message> findAll() { List<Message> messages = new ArrayList<>(); try(Connection con = DS.instance.getConnection()) { - PreparedStatement ps = con.prepareStatement("SELECT * FROM message"); + PreparedStatement ps = con.prepareStatement("SELECT * FROM message ORDER BY datePublication, id"); ResultSet rs = ps.executeQuery(); while (rs.next()) { Message message = new Message(); @@ -57,7 +56,7 @@ public class MessageDao { public List<Message> findByFil(int idFil) { List<Message> messages = new ArrayList<>(); try(Connection con = DS.instance.getConnection()) { - PreparedStatement ps = con.prepareStatement("SELECT * FROM message WHERE filId = ?"); + PreparedStatement ps = con.prepareStatement("SELECT * FROM message WHERE filId = ? ORDER BY datePublication, id"); ps.setInt(1, idFil); ResultSet rs = ps.executeQuery(); while (rs.next()) { diff --git a/sae/WEB-INF/src/modele/UtilisateurDao.java b/sae/WEB-INF/src/modele/UtilisateurDao.java index a138867..bd5592f 100644 --- a/sae/WEB-INF/src/modele/UtilisateurDao.java +++ b/sae/WEB-INF/src/modele/UtilisateurDao.java @@ -50,7 +50,7 @@ public class UtilisateurDao { public void update(Utilisateur utilisateur, String oldEmail) { try(Connection con = DS.instance.getConnection()) { - PreparedStatement ps = con.prepareStatement("UPDATE Utilisateur SET nom = ?, email = ?, motdepasse = ? WHERE email = ?"); + PreparedStatement ps = con.prepareStatement("UPDATE Utilisateur SET nom = ?, email = ?, motdepasse = MD5(?) WHERE email = ?"); ps.setString(1, utilisateur.getNom()); ps.setString(2, utilisateur.getEmail()); ps.setString(3, utilisateur.getMotDePasse()); diff --git a/sae/WEB-INF/vue/accueil.jsp b/sae/WEB-INF/vue/accueil.jsp index d4a5831..a8abe5a 100644 --- a/sae/WEB-INF/vue/accueil.jsp +++ b/sae/WEB-INF/vue/accueil.jsp @@ -8,7 +8,6 @@ <%@ page import="java.util.Set" %> <%@ page import="java.util.HashSet" %> - <!DOCTYPE html> <html lang="fr"> <head> @@ -18,8 +17,8 @@ <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> <link rel="shortcut icon" href="<%= request.getContextPath() %>/images/logo.png"> </head> -<body class="bg-gray-900 text-white flex"> - <aside class="w-64 bg-gray-800 text-white h-screen"> +<body class="bg-gray-900 text-white flex flex-col md:flex-row"> + <aside class="w-full md:w-64 bg-gray-800 text-white h-auto md:h-screen"> <div class="p-4 text-center"> <img src="<%= request.getContextPath() %>/images/logo.png" alt="CampusTalk Logo" class="w-16 h-16 mx-auto"> <h1 class="text-2xl font-bold mt-4">CampusTalk</h1> diff --git a/sae/WEB-INF/vue/creerFil.jsp b/sae/WEB-INF/vue/creerFil.jsp index a74d25b..7a2709e 100644 --- a/sae/WEB-INF/vue/creerFil.jsp +++ b/sae/WEB-INF/vue/creerFil.jsp @@ -9,8 +9,8 @@ <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> <link rel="shortcut icon" href="<%= request.getContextPath() %>/images/logo.png"> </head> -<body class="bg-gray-900 text-white flex"> - <aside class="w-64 bg-gray-800 text-white h-screen"> +<body class="bg-gray-900 text-white flex flex-col md:flex-row"> + <aside class="w-full md:w-64 bg-gray-800 text-white h-auto md:h-screen"> <div class="p-4 text-center"> <img src="<%= request.getContextPath() %>/images/logo.png" alt="CampusTalk Logo" class="w-16 h-16 mx-auto"> <h1 class="text-2xl font-bold mt-4">CampusTalk</h1> diff --git a/sae/WEB-INF/vue/fil.jsp b/sae/WEB-INF/vue/fil.jsp index ce25440..9c21c56 100644 --- a/sae/WEB-INF/vue/fil.jsp +++ b/sae/WEB-INF/vue/fil.jsp @@ -30,8 +30,8 @@ } </style> </head> -<body class="bg-gray-900 text-white flex h-screen"> - <aside class="w-64 bg-gray-800 text-white h-full"> +<body class="bg-gray-900 text-white flex flex-col md:flex-row h-screen"> + <aside class="w-full md:w-64 bg-gray-800 text-white h-auto md:h-full"> <div class="p-4 text-center"> <img src="<%= request.getContextPath() %>/images/logo.png" alt="CampusTalk Logo" class="w-16 h-16 mx-auto"> <h1 class="text-2xl font-bold mt-4">CampusTalk</h1> diff --git a/sae/WEB-INF/vue/listerFil.jsp b/sae/WEB-INF/vue/listerFil.jsp index 51f0e06..cb5bb28 100644 --- a/sae/WEB-INF/vue/listerFil.jsp +++ b/sae/WEB-INF/vue/listerFil.jsp @@ -16,8 +16,8 @@ <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> <link rel="shortcut icon" href="<%= request.getContextPath() %>/images/logo.png"> </head> -<body class="bg-gray-900 text-white flex"> - <aside class="w-64 bg-gray-800 text-white h-screen"> +<body class="bg-gray-900 text-white flex flex-col md:flex-row"> + <aside class="w-full md:w-64 bg-gray-800 text-white h-auto md:h-screen"> <div class="p-4 text-center"> <img src="<%= request.getContextPath() %>/images/logo.png" alt="CampusTalk Logo" class="w-16 h-16 mx-auto"> <h1 class="text-2xl font-bold mt-4">CampusTalk</h1> diff --git a/sae/WEB-INF/vue/login.jsp b/sae/WEB-INF/vue/login.jsp index 160e7b1..02fc0e2 100644 --- a/sae/WEB-INF/vue/login.jsp +++ b/sae/WEB-INF/vue/login.jsp @@ -9,19 +9,19 @@ <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> <link rel="shortcut icon" href="<%= request.getContextPath() %>/images/logo.png"> </head> -<body class="bg-gray-900 text-white flex"> - <aside class="w-64 bg-gray-800 text-white h-screen"> +<body class="bg-gray-900 text-white flex flex-col md:flex-row"> + <aside class="w-full md:w-64 bg-gray-800 text-white h-auto md:h-screen"> <div class="p-4 text-center"> <img src="<%= request.getContextPath() %>/images/logo.png" alt="CampusTalk Logo" class="w-16 h-16 mx-auto"> <h1 class="text-2xl font-bold mt-4">CampusTalk</h1> </div> - <nav class="mt-4"> + <!-- <nav class="mt-4"> <a href="<%= request.getContextPath() %>/accueil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Accueil</a> <a href="<%= request.getContextPath() %>/listerFil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Autres Fils de Discussion</a> <a href="<%= request.getContextPath() %>/creerFil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Créer un Fil</a> <a href="<%= request.getContextPath() %>/parametre" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Paramètres</a> <a href="<%= request.getContextPath() %>/logout" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-red-700">Se déconnecter</a> - </nav> + </nav> --> </aside> <div class="flex-1 p-6"> <div class="max-w-md mx-auto mt-12 p-6 bg-gray-800 rounded-lg shadow-md"> diff --git a/sae/WEB-INF/vue/parametre.jsp b/sae/WEB-INF/vue/parametre.jsp index e434325..e1ee07c 100644 --- a/sae/WEB-INF/vue/parametre.jsp +++ b/sae/WEB-INF/vue/parametre.jsp @@ -17,8 +17,8 @@ <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> <link rel="shortcut icon" href="<%= request.getContextPath() %>/images/logo.png"> </head> -<body class="bg-gray-900 text-white flex"> - <aside class="w-64 bg-gray-800 text-white h-screen"> +<body class="bg-gray-900 text-white flex flex-col md:flex-row"> + <aside class="w-full md:w-64 bg-gray-800 text-white h-auto md:h-screen"> <div class="p-4 text-center"> <img src="<%= request.getContextPath() %>/images/logo.png" alt="CampusTalk Logo" class="w-16 h-16 mx-auto"> <h1 class="text-2xl font-bold mt-4">CampusTalk</h1> diff --git a/sae/WEB-INF/vue/register.jsp b/sae/WEB-INF/vue/register.jsp index 5bbda6d..cb966f5 100644 --- a/sae/WEB-INF/vue/register.jsp +++ b/sae/WEB-INF/vue/register.jsp @@ -9,19 +9,19 @@ <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> <link rel="shortcut icon" href="<%= request.getContextPath() %>/images/logo.png"> </head> -<body class="bg-gray-900 text-white flex"> - <aside class="w-64 bg-gray-800 text-white h-screen"> +<body class="bg-gray-900 text-white flex flex-col md:flex-row"> + <aside class="w-full md:w-64 bg-gray-800 text-white h-auto md:h-screen"> <div class="p-4 text-center"> <img src="<%= request.getContextPath() %>/images/logo.png" alt="CampusTalk Logo" class="w-16 h-16 mx-auto"> <h1 class="text-2xl font-bold mt-4">CampusTalk</h1> </div> - <nav class="mt-4"> + <!-- <nav class="mt-4"> <a href="<%= request.getContextPath() %>/accueil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Accueil</a> <a href="<%= request.getContextPath() %>/listerFil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Autres Fils de Discussion</a> <a href="<%= request.getContextPath() %>/creerFil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Créer un Fil</a> <a href="<%= request.getContextPath() %>/parametre" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Paramètres</a> <a href="<%= request.getContextPath() %>/logout" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-red-700">Se déconnecter</a> - </nav> + </nav> --> </aside> <div class="flex-1 p-6"> <div class="max-w-md mx-auto mt-12 p-6 bg-gray-800 rounded-lg shadow-md"> diff --git a/script.sql b/script.sql index 84686da..f8cfeb3 100644 --- a/script.sql +++ b/script.sql @@ -82,54 +82,46 @@ VALUES ('utilisateur3@exemple.com', 2), ('utilisateur3@exemple.com', 3); --- Lister tous les utilisateurs : - +-- -- Lister tous les utilisateurs : -- SELECT * FROM Utilisateur; --- Lister tous les fils de discussion avec le nom du créateur : - +-- -- Lister tous les fils de discussion avec le nom du créateur : -- SELECT f.id, f.nom, u.nom AS nomCreateur -- FROM FilDeDiscussion f -- JOIN Utilisateur u ON f.createurEmail = u.email; --- Lister tous les messages d'un fil de discussion spécifique avec le nom de l'auteur : - +-- -- Lister tous les messages d'un fil de discussion spécifique avec le nom de l'auteur : -- SELECT m.contenu, u.nom AS nomAuteur, m.datePublication -- FROM Message m -- JOIN Utilisateur u ON m.auteurEmail = u.email -- WHERE m.filId = 1 -- ORDER BY m.datePublication; --- Lister tous les abonnements d'un utilisateur spécifique : - +-- -- Lister tous les abonnements d'un utilisateur spécifique : -- SELECT f.nom AS nomFil, a.dateAbonnement -- FROM Abonnement a -- JOIN FilDeDiscussion f ON a.filId = f.id -- WHERE a.utilisateurEmail = 'utilisateur1@exemple.com'; --- Lister les fils de discussion auxquels un utilisateur n'est pas abonné : - +-- -- Lister les fils de discussion auxquels un utilisateur n'est pas abonné : -- SELECT f.id, f.nom -- FROM FilDeDiscussion f -- LEFT JOIN Abonnement a ON f.id = a.filId AND a.utilisateurEmail = 'utilisateur1@exemple.com' -- WHERE a.utilisateurEmail IS NULL; --- Compter le nombre de messages par fil de discussion : - +-- -- Compter le nombre de messages par fil de discussion : -- SELECT f.nom AS nomFil, COUNT(m.id) AS nombreMessages -- FROM FilDeDiscussion f -- LEFT JOIN Message m ON f.id = m.filId -- GROUP BY f.nom; --- Trouver les utilisateurs qui ont publié des messages dans un fil spécifique : - +-- -- Trouver les utilisateurs qui ont publié des messages dans un fil spécifique : -- SELECT DISTINCT u.nom, u.email -- FROM Utilisateur u -- JOIN Message m ON u.email = m.auteurEmail -- WHERE m.filId = 1; --- Lister les 5 derniers messages publiés dans un fil de discussion : - +-- -- Lister les 5 derniers messages publiés dans un fil de discussion : -- SELECT m.contenu, u.nom AS nomAuteur, m.datePublication -- FROM Message m -- JOIN Utilisateur u ON m.auteurEmail = u.email @@ -137,16 +129,14 @@ VALUES -- ORDER BY m.datePublication DESC -- LIMIT 5; --- Compter le nombre d'abonnés par fil de discussion : - +-- -- Compter le nombre d'abonnés par fil de discussion : -- SELECT f.nom AS nomFil, COUNT(a.utilisateurEmail) AS nombreAbonnes -- FROM FilDeDiscussion f -- LEFT JOIN Abonnement a ON f.id = a.filId -- GROUP BY f.nom; --- Lister les utilisateurs qui ne sont abonnés à aucun fil de discussion : - +-- -- Lister les utilisateurs qui ne sont abonnés à aucun fil de discussion : -- SELECT u.email, u.nom -- FROM Utilisateur u -- LEFT JOIN Abonnement a ON u.email = a.utilisateurEmail --- WHERE a.utilisateurEmail IS NULL; \ No newline at end of file +-- WHERE a.utilisateurEmail IS NULL; -- GitLab