diff --git a/WEB-INF/src/controleurs/APIRest.java b/WEB-INF/src/controleurs/APIRest.java index 5010a479bc09220d4c4a5d023331d5122b302d8e..a035c89cb7fc0805d3933eb329cb2cf561cafac9 100644 --- a/WEB-INF/src/controleurs/APIRest.java +++ b/WEB-INF/src/controleurs/APIRest.java @@ -5,16 +5,12 @@ import dao.FilDAO; import dao.MessageDAO; import dao.UtilisateurDAO; import io.jsonwebtoken.Claims; -import jakarta.servlet.ServletException; import jakarta.servlet.http.*; import jakarta.servlet.annotation.WebServlet; - import java.io.IOException; import java.io.PrintWriter; import java.nio.charset.StandardCharsets; import java.util.*; -import java.util.Base64; - import dto.Fil; import dto.Message; import dto.Utilisateur; @@ -44,7 +40,7 @@ public class APIRest extends HttpServlet { } public void doGet(HttpServletRequest req, HttpServletResponse res) - throws ServletException, IOException { + throws IOException { res.setContentType("application/json;charset=UTF-8"); PrintWriter out = res.getWriter(); if (!verifToken(req)) { @@ -58,7 +54,6 @@ public class APIRest extends HttpServlet { res.setContentType("application/json;charset=UTF-8"); ObjectMapper objectMapper = new ObjectMapper(); - String info = req.getPathInfo(); String login = (String) req.getAttribute("login"); int userId = utilisateurDAO.getUserIdByEmail(login); @@ -67,7 +62,6 @@ public class APIRest extends HttpServlet { for (Fil fil : fils) { List<Message> messages = messageDAO.getLastMessages(fil.getFid()); - // Construction du JSON Map<String, Object> filData = new HashMap<>(); filData.put("id", fil.getFid()); filData.put("titre", fil.getTitre()); @@ -79,14 +73,10 @@ public class APIRest extends HttpServlet { msgData.put("auteurId", msg.getUid()); if (msg.isImage()) { - // Encodage en Base64 pour les images - // msgData.put("message", - // Base64.getEncoder().encodeToString(msg.getMessageData())); Utilisateur user = utilisateurDAO.getUserById(msg.getUid()); msgData.put("message", "Ceci est une image envoyé par " + user.getPrenom() + " " + user.getNom()); } else { - // Texte classique (UTF-8) msgData.put("message", new String(msg.getMessageData(), StandardCharsets.UTF_8)); } @@ -98,14 +88,9 @@ public class APIRest extends HttpServlet { filData.put("messages", messagesList); filsList.add(filData); } - - String jsonstring = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(filsList); // Convertit - // la liste - // des fils - // en JSON - out.println(jsonstring); // Envoie la réponse en JSON au client + String jsonstring = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(filsList); + out.println(jsonstring); return; - } out.close(); } diff --git a/WEB-INF/src/controleurs/AccountAuthent.java b/WEB-INF/src/controleurs/AccountAuthent.java index 716f5f6f4f73c3bbb3ee886f7941bce9323e18fa..7d0522747cc5f898fd5f08e813ea1ed77f1e1dd8 100644 --- a/WEB-INF/src/controleurs/AccountAuthent.java +++ b/WEB-INF/src/controleurs/AccountAuthent.java @@ -2,7 +2,6 @@ package controleurs; import java.io.IOException; -import jakarta.servlet.*; import jakarta.servlet.http.*; import jakarta.servlet.annotation.WebServlet; import dao.UtilisateurDAO; @@ -15,7 +14,7 @@ public class AccountAuthent extends HttpServlet { UtilisateurDAO utilisateurDAO = new UtilisateurDAO(); protected void service(HttpServletRequest req, HttpServletResponse res) - throws ServletException, IOException { + throws IOException { HttpSession session = req.getSession(true); String login = StringEscapeUtils.escapeHtml4(req.getParameter("login")); diff --git a/WEB-INF/src/controleurs/AccountCreate.java b/WEB-INF/src/controleurs/AccountCreate.java index b185df2adbb4dabcbabcbbf14b4f2c09653adabe..740558ccc54b2fac2f6bb70a54863602250c0471 100644 --- a/WEB-INF/src/controleurs/AccountCreate.java +++ b/WEB-INF/src/controleurs/AccountCreate.java @@ -2,7 +2,6 @@ package controleurs; import java.io.IOException; -import jakarta.servlet.*; import jakarta.servlet.http.*; import jakarta.servlet.annotation.WebServlet; import dao.UtilisateurDAO; @@ -14,7 +13,7 @@ public class AccountCreate extends HttpServlet { UtilisateurDAO utilisateurDAO = new UtilisateurDAO(); protected void service(HttpServletRequest req, HttpServletResponse res) - throws ServletException, IOException { + throws IOException { res.setContentType("text/html;charset=UTF-8"); HttpSession session = req.getSession(true); diff --git a/WEB-INF/src/controleurs/FilAddUser.java b/WEB-INF/src/controleurs/FilAddUser.java index 02a2c93927992729d8356965f4f314cd7a2c1637..fa37b7dbb65fcda205e22608b82434c1d287c49e 100644 --- a/WEB-INF/src/controleurs/FilAddUser.java +++ b/WEB-INF/src/controleurs/FilAddUser.java @@ -3,21 +3,19 @@ package controleurs; import dao.ParticipantFilDAO; import dao.UtilisateurDAO; import dto.Utilisateur; -import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; import org.apache.tomcat.jakartaee.commons.lang3.StringEscapeUtils; - import java.io.IOException; import java.util.Arrays; import java.util.List; @WebServlet("/addUserFil") public class FilAddUser extends HttpServlet { - protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + protected void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException { res.setContentType("text/html;charset=UTF-8"); HttpSession session = req.getSession(true); ParticipantFilDAO participantFilDAO = new ParticipantFilDAO(); diff --git a/WEB-INF/src/controleurs/FilCreate.java b/WEB-INF/src/controleurs/FilCreate.java index 9a78689ce30b320da17f39ddce0a84e5a8a1933f..dc8abe1f253c2c7586a369c6bfac9ec3ca8e9cad 100644 --- a/WEB-INF/src/controleurs/FilCreate.java +++ b/WEB-INF/src/controleurs/FilCreate.java @@ -4,10 +4,8 @@ import java.io.IOException; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; - import dao.FilDAO; import dto.Utilisateur; -import jakarta.servlet.*; import jakarta.servlet.http.*; import jakarta.servlet.annotation.WebServlet; import org.apache.tomcat.jakartaee.commons.lang3.StringEscapeUtils; @@ -15,7 +13,7 @@ import org.apache.tomcat.jakartaee.commons.lang3.StringEscapeUtils; @WebServlet("/CreateFil") public class FilCreate extends HttpServlet { - protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException { res.setContentType("text/html;charset=UTF-8"); HttpSession session = req.getSession(true); diff --git a/WEB-INF/src/controleurs/FilLeave.java b/WEB-INF/src/controleurs/FilLeave.java index e940e0757eb646eb38e3dddbaaa9aa7985ef0a83..3dacc7a961e106e8db877c8b6303b2fc9aef9f97 100644 --- a/WEB-INF/src/controleurs/FilLeave.java +++ b/WEB-INF/src/controleurs/FilLeave.java @@ -1,7 +1,6 @@ package controleurs; import java.io.IOException; - import dao.ParticipantFilDAO; import jakarta.servlet.*; import jakarta.servlet.http.*; diff --git a/WEB-INF/src/controleurs/FilUser.java b/WEB-INF/src/controleurs/FilUser.java index 46bae1f87e4094c5ce953f48ad5ed1e5890a874d..f48c60a5a671b311180277fe877e4a0932e519e6 100644 --- a/WEB-INF/src/controleurs/FilUser.java +++ b/WEB-INF/src/controleurs/FilUser.java @@ -2,7 +2,6 @@ package controleurs; import java.io.IOException; import java.util.List; - import dao.FilDAO; import dao.ParticipantFilDAO; import dto.Fil; @@ -42,7 +41,7 @@ public class FilUser extends HttpServlet { } } - protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + protected void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException { String userIdString = req.getParameter("userId"); String filIdString = req.getParameter("filId"); diff --git a/WEB-INF/src/controleurs/JwtManager.java b/WEB-INF/src/controleurs/JwtManager.java index 3b5c0d62aac88839037592af19ad0ed5764c61f8..3ba53839f53345d95634d188d03903ae1babca87 100644 --- a/WEB-INF/src/controleurs/JwtManager.java +++ b/WEB-INF/src/controleurs/JwtManager.java @@ -10,13 +10,11 @@ import java.nio.charset.StandardCharsets; import java.time.Instant; import java.util.Date; import java.util.UUID; - import javax.crypto.SecretKey; import io.jsonwebtoken.*; import io.jsonwebtoken.security.Keys; public class JwtManager { - // pour SHA256 : 256 bits mini private static final String SECRET_KEY = "bachibouzoukbachibouzoukbachibouzoukbachibouzouk"; public static String createJWT(String login) { @@ -28,7 +26,6 @@ public class JwtManager { Instant expiration = now.plusSeconds(1200); // 20 mn Date expDate = Date.from(expiration); - // Let's set the JWT Claims String token = Jwts.builder() .id(UUID.randomUUID().toString().replace("-", "")) .issuedAt(Date.from(now)) @@ -42,8 +39,6 @@ public class JwtManager { } public static Claims decodeJWT(String jwt) throws Exception { - // This line will throw an exception if it is not a signed JWS (as expected) - byte[] keyBytes = SECRET_KEY.getBytes(StandardCharsets.UTF_8); SecretKey signingKey = Keys.hmacShaKeyFor(keyBytes); @@ -55,17 +50,9 @@ public class JwtManager { return claims; } - // Exemple de fonctionnement public static void main(String args[]) { System.out.println(JwtManager.SECRET_KEY); String token = JwtManager.createJWT("Toto"); - /* - * try { - * Thread.sleep(10000); - * } catch (InterruptedException e) { - * e.printStackTrace(); - * } - */ System.out.println(token); Claims claims = null; diff --git a/WEB-INF/src/controleurs/LikeControler.java b/WEB-INF/src/controleurs/LikeControler.java index 9e898b0978799429b461408fa4b09a4603fd8afe..58ddaf52a86ef3270a3562f6b8f37f1edb0bd357 100644 --- a/WEB-INF/src/controleurs/LikeControler.java +++ b/WEB-INF/src/controleurs/LikeControler.java @@ -1,7 +1,6 @@ package controleurs; import dao.LikeDAO; -import dao.MessageDAO; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; @@ -17,17 +16,15 @@ import java.io.IOException; public class LikeControler extends HttpServlet { private static final long serialVersionUID = 1L; private LikeDAO likeDAO; - private MessageDAO messageDAO; @Override public void init() throws ServletException { super.init(); likeDAO = new LikeDAO(); - messageDAO = new MessageDAO(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { + throws IOException { response.setContentType("text/html;charset=UTF-8"); HttpSession session = request.getSession(true); diff --git a/WEB-INF/src/controleurs/LogoutControler.java b/WEB-INF/src/controleurs/LogoutControler.java index d5e5137301223259c9d5ab4feca1fe26d5904017..9cbea7ed0ae5a61c3853adf807f31392b72b9d3a 100644 --- a/WEB-INF/src/controleurs/LogoutControler.java +++ b/WEB-INF/src/controleurs/LogoutControler.java @@ -1,8 +1,6 @@ package controleurs; import java.io.IOException; - -import jakarta.servlet.*; import jakarta.servlet.http.*; import jakarta.servlet.annotation.WebServlet; @@ -10,7 +8,7 @@ import jakarta.servlet.annotation.WebServlet; public class LogoutControler extends HttpServlet { protected void service(HttpServletRequest req, HttpServletResponse res) - throws ServletException, IOException { + throws IOException { HttpSession session = req.getSession(false); if (session != null) { session.invalidate(); diff --git a/WEB-INF/src/controleurs/Menu.java b/WEB-INF/src/controleurs/Menu.java index bf800195be11c1113612a7d0037587e8672246cc..118d59e8cff41f9a97ac8bde1568f0a60984ef9e 100644 --- a/WEB-INF/src/controleurs/Menu.java +++ b/WEB-INF/src/controleurs/Menu.java @@ -4,7 +4,6 @@ import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; - import dao.FilDAO; import dao.MessageDAO; import dao.ParticipantFilDAO; @@ -16,8 +15,6 @@ import jakarta.servlet.http.*; import jakarta.servlet.annotation.WebServlet; import org.apache.tomcat.jakartaee.commons.lang3.StringEscapeUtils; -//Servlet qui permet de rediriger l'utilisateur vers le login.html si il n'est pas connecté, et si il l'est, -// on récupère sa liste de fils et on redirige vers la JSP menu @WebServlet("/Menu") public class Menu extends HttpServlet { @@ -51,10 +48,8 @@ public class Menu extends HttpServlet { } } - // Vérifier si l'utilisateur est admin du fil boolean isAdmin = participantFilDAO.isAdmin(utilisateur, Integer.parseInt(rese)); - // Envoyer les données à la JSP req.setAttribute("isAdmin", isAdmin); req.setAttribute("userNames", userNames); diff --git a/WEB-INF/src/controleurs/MessageSend.java b/WEB-INF/src/controleurs/MessageSend.java index a7f4c354cbfa0ee96db43631c5a693b94999a06b..7d746c663023944cd0c2633c205adc5df9c29bea 100644 --- a/WEB-INF/src/controleurs/MessageSend.java +++ b/WEB-INF/src/controleurs/MessageSend.java @@ -2,7 +2,6 @@ package controleurs; import java.io.IOException; import java.nio.charset.StandardCharsets; - import dao.MessageDAO; import dto.Utilisateur; import jakarta.servlet.*; diff --git a/WEB-INF/src/controleurs/UserInfo.java b/WEB-INF/src/controleurs/UserInfo.java index fc7b9c45c9515ec42369a4f9b8046287f2e8d17c..160f78075b73043b39dc923a042e914770958b86 100644 --- a/WEB-INF/src/controleurs/UserInfo.java +++ b/WEB-INF/src/controleurs/UserInfo.java @@ -1,7 +1,6 @@ package controleurs; import java.io.*; - import dao.UtilisateurDAO; import jakarta.servlet.*; import jakarta.servlet.http.*; diff --git a/WEB-INF/src/dao/DS.java b/WEB-INF/src/dao/DS.java index a1cd0761cb8678b15ae5f7b47509e4fc4e88d9ed..89001c178fcb67058af8f0f170eb2760ad188968 100644 --- a/WEB-INF/src/dao/DS.java +++ b/WEB-INF/src/dao/DS.java @@ -2,7 +2,6 @@ package dao; import java.sql.Connection; import java.sql.DriverManager; -import java.util.Properties; public class DS { private String driver; @@ -11,7 +10,6 @@ public class DS { private String password; public DS() { - Properties p = new Properties(); try { this.driver = ConfigLoader.getProperty("driver"); Class.forName(driver); diff --git a/WEB-INF/src/dao/FilDAO.java b/WEB-INF/src/dao/FilDAO.java index 34e1466df4a50195a21a736fa5dee51ff562556e..de94b0f384becebcbec21c9ab617d3395ad05fd3 100644 --- a/WEB-INF/src/dao/FilDAO.java +++ b/WEB-INF/src/dao/FilDAO.java @@ -1,7 +1,6 @@ package dao; import dto.Fil; - import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -15,9 +14,6 @@ public class FilDAO { public FilDAO() { this.ds = new DS(); } - - // Méthode qui rerourne une Liste des fils de l'utilisateur, dont l'identifiant - // à été passé en paramètre public List<Fil> getFilsByUser(int id) { List<Fil> fils = new ArrayList<>(); String query = "SELECT F.F_ID, F.TITRE FROM FIL AS F JOIN PARTICIPANT_FIL AS P ON F.F_ID = P.FP_ID WHERE P.UP_ID = ?"; diff --git a/WEB-INF/src/dao/MessageDAO.java b/WEB-INF/src/dao/MessageDAO.java index 516711eff639b47928c8bbbf3f802c68e02b02a9..05bddd5f2f6253de9d373b9512297585ab0f47c3 100644 --- a/WEB-INF/src/dao/MessageDAO.java +++ b/WEB-INF/src/dao/MessageDAO.java @@ -6,9 +6,7 @@ import java.time.ZoneId; import java.util.ArrayList; import java.util.List; import java.sql.Timestamp; - import dto.Message; - import java.time.LocalDate; public class MessageDAO { @@ -32,8 +30,8 @@ public class MessageDAO { rs.getInt("m_id"), rs.getInt("f_id"), rs.getInt("u_id"), - rs.getBytes("message_data"), // Récupère les données sous forme de bytes - rs.getBoolean("is_image"), // Vérifie si c'est une image + rs.getBytes("message_data"), + rs.getBoolean("is_image"), rs.getInt("d_vie"), rs.getTimestamp("DateMessage")); messages.add(mess); @@ -52,7 +50,7 @@ public class MessageDAO { PreparedStatement ps = con.prepareStatement(query)) { ps.setInt(1, fid); ps.setInt(2, uid); - ps.setBytes(3, data); // Stocke l'image ou le texte + ps.setBytes(3, data); ps.setBoolean(4, isImage); ps.setInt(5, Integer.parseInt(ConfigLoader.getProperty("nbday"))); ps.setTimestamp(6, Timestamp.valueOf(LocalDateTime.now())); diff --git a/WEB-INF/src/dao/ParticipantFilDAO.java b/WEB-INF/src/dao/ParticipantFilDAO.java index b2f04d35191d5d18260beb78cec283cef7533b3c..035a70de0a8bd29795552c8e616c3f3f91e90e5c 100644 --- a/WEB-INF/src/dao/ParticipantFilDAO.java +++ b/WEB-INF/src/dao/ParticipantFilDAO.java @@ -1,7 +1,6 @@ package dao; import dto.Utilisateur; - import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; diff --git a/WEB-INF/src/dao/UtilisateurDAO.java b/WEB-INF/src/dao/UtilisateurDAO.java index 042f6822ec9542cac30160cf85b42340a38a8a29..9e3ec6600ae0111cd8c6e62222d2fe04b45f454a 100644 --- a/WEB-INF/src/dao/UtilisateurDAO.java +++ b/WEB-INF/src/dao/UtilisateurDAO.java @@ -1,7 +1,6 @@ package dao; import dto.Utilisateur; - import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; diff --git a/creerFil.html b/creerFil.html index 187245c166dd01ff556e90d48e9e488d9375114a..648dd00344ad7dd915dca7213467d3588f03df71 100644 --- a/creerFil.html +++ b/creerFil.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <html lang="en"> + <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> @@ -8,27 +9,31 @@ <link href="css/style.css" rel="stylesheet"> <link rel="icon" href="images/LilleConnect.png" type="image/png"> </head> + <body> -<div class="container"> - <form action=CreateFil method=get> - <h2>Créer un Fil</h2> - <div class="mb-3"> - <label for="titre" class="form-label">Titre</label> - <input type="text" class="form-control" id="titre" name="titre" aria-describedby="emailHelp"> + <div class="container"> + <form action=CreateFil method=get> + <h2>Créer un Fil</h2> + <div class="mb-3"> + <label for="titre" class="form-label">Titre</label> + <input type="text" class="form-control" id="titre" name="titre" aria-describedby="emailHelp"> + </div> + <div class="mb-3"> + <label for="utilisateurs" class="form-label">Utilisateur(s)</label> + <input type="text" class="form-control" id="utilisateurs" name="utilisateurs"> + <p>Séparez les mails utilisateurs par des "/"</p> + <label for="admin" class="form-label">Admin ? (true / false)</label> + <input type="text" class="form-control" id="admin" name="admin"> + </div> + <button type="submit" class="btn btn-primary">Créer</button> + </form> + <div class="mt-3"> + <a href="Menu" class="btn btn-secondary">Retour au menu</a> </div> - <div class="mb-3"> - <label for="utilisateurs" class="form-label">Utilisateur(s)</label> - <input type="text" class="form-control" id="utilisateurs" name="utilisateurs"> - <p>Séparez les mails utilisateurs par des "/"</p> - <label for="admin" class="form-label">Admin ? (true / false)</label> - <input type="text" class="form-control" id="admin" name="admin"> - </div> - <button type="submit" class="btn btn-primary">Créer</button> - </form> - <div class="mt-3"> - <a href="Menu" class="btn btn-secondary">Retour au menu</a> </div> -</div> -<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> + <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" + integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" + crossorigin="anonymous"></script> </body> + </html> \ No newline at end of file diff --git a/login.html b/login.html index 93834ad1a8145addbfbc0ec8d8e7a33a0af4e61a..52b67495236d7f75209cec177df2d1552a85acda 100644 --- a/login.html +++ b/login.html @@ -1,30 +1,35 @@ <!DOCTYPE html> <html lang="en"> + <head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Connection LilleConnect</title> - <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> - <link href="css/style.css" rel="stylesheet"> - <link rel="icon" href="images/LilleConnect.png" type="image/png"> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Connection LilleConnect</title> + <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> + <link href="css/style.css" rel="stylesheet"> + <link rel="icon" href="images/LilleConnect.png" type="image/png"> </head> -<body> - <div class="container"> + +<body> + <div class="container"> <form action=Authent method=get> - <h2>Se connecter</h2> - <div class="mb-3"> - <label for="login" class="form-label">Adresse Mail</label> - <input type="text" class="form-control" id="login" name="login" aria-describedby="emailHelp"> - </div> - <div class="mb-3"> - <label for="mdp" class="form-label">Mot de Passe</label> - <input type="password" class="form-control" id="mdp" name="mdp"> - <a href="new.html">Vous n'avez pas de compte ?</a> + <h2>Se connecter</h2> + <div class="mb-3"> + <label for="login" class="form-label">Adresse Mail</label> + <input type="text" class="form-control" id="login" name="login" aria-describedby="emailHelp"> + </div> + <div class="mb-3"> + <label for="mdp" class="form-label">Mot de Passe</label> + <input type="password" class="form-control" id="mdp" name="mdp"> + <a href="new.html">Vous n'avez pas de compte ?</a> - </div> - <button type="submit" class="btn btn-primary">Connexion</button> - </form> -</div> - <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> + </div> + <button type="submit" class="btn btn-primary">Connexion</button> + </form> + </div> + <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" + integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" + crossorigin="anonymous"></script> </body> + </html> \ No newline at end of file diff --git a/menu.jsp b/menu.jsp index c1fa6e5c97b34df019664cac124abd60eb045327..87d0ce9353d4098d827b6aa2ad9a497a994de3bf 100644 --- a/menu.jsp +++ b/menu.jsp @@ -7,6 +7,7 @@ <!DOCTYPE html> <html lang="fr"> + <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> @@ -17,162 +18,169 @@ <meta http-equiv="refresh" content="10"> <link rel="icon" href="images/LilleConnect.png" type="image/png"> </head> + <body> -<div class="container"> - <% - List<Fil> fils = (List<Fil>) request.getAttribute("fils"); - Utilisateur utilisateur = (Utilisateur) session.getAttribute("utilisateur"); - boolean isUserInFil = fils != null && !fils.isEmpty(); - %> - - <button class="navbar-toggler d-lg-none text-white" style="background-color: #00072D;" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-controls="sidebar" aria-expanded="false" aria-label="Toggle navigation"> - <span class="navbar-toggler-icon"></span> - </button> - - <div class="sidebar collapse d-lg-block col-12 col-md-3" id="sidebar"> - <div class="d-flex align-items-center justify-content-between w-100"> - <a href="UserInfo" class="d-flex align-items-center gap-3 fs-4 text-decoration-none text-light"> - <i class="bi bi-person"></i> - <span><%= utilisateur.getPrenom() + " " + utilisateur.getNom() %></span> - </a> - - <a href="Logout" class="text-danger fs-3"> - <i class="bi bi-box-arrow-right"></i> - </a> - </div> + <div class="container"> + <% + List<Fil> fils = (List<Fil>) request.getAttribute("fils"); + Utilisateur utilisateur = (Utilisateur) session.getAttribute("utilisateur"); + boolean isUserInFil = fils != null && !fils.isEmpty(); + %> - <div class="separator"></div> - <h3>Vos fils de discussion</h3> - <div class="separator"></div> + <button class="navbar-toggler d-lg-none text-white" style="background-color: #00072D;" type="button" + data-bs-toggle="collapse" data-bs-target="#sidebar" aria-controls="sidebar" aria-expanded="false" + aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> - <% if (isUserInFil) { %> - <ul class="list-group"> - <% for (Fil fil : fils) { %> - <li class="list-group-item d-flex justify-content-center align-items-center text-white border-0" style="background-color: #00072D;"> - <a href="Menu?filId=<%= fil.getFid() %>" class="gap-2 px-5 py-2"> - <%= fil.getTitre() %> + <div class="sidebar collapse d-lg-block col-12 col-md-3" id="sidebar"> + <div class="d-flex align-items-center justify-content-between w-100"> + <a href="UserInfo" class="d-flex align-items-center gap-3 fs-4 text-decoration-none text-light"> + <i class="bi bi-person"></i> + <span><%= utilisateur.getPrenom() + " " + utilisateur.getNom() %></span> </a> - <a href="LeaveFil?filId=<%= fil.getFid() %>" class="text-danger fs-3"> + + <a href="Logout" class="text-danger fs-3"> <i class="bi bi-box-arrow-right"></i> </a> - </li> - <% } %> - </ul> - <% } else { %> + </div> + + <div class="separator"></div> + <h3>Vos fils de discussion</h3> + <div class="separator"></div> + + <% if (isUserInFil) { %> + <ul class="list-group"> + <% for (Fil fil : fils) { %> + <li class="list-group-item d-flex justify-content-center align-items-center text-white border-0" + style="background-color: #00072D;"> + <a href="Menu?filId=<%= fil.getFid() %>" class="gap-2 px-5 py-2"> + <%= fil.getTitre() %> + </a> + <a href="LeaveFil?filId=<%= fil.getFid() %>" class="text-danger fs-3"> + <i class="bi bi-box-arrow-right"></i> + </a> + </li> + <% } %> + </ul> + <% } else { %> <ul class="list-group"> - <li class="list-group-item d-flex justify-content-center align-items-center text-white border-0" style="background-color: #00072D;"> + <li class="list-group-item d-flex justify-content-center align-items-center text-white border-0" + style="background-color: #00072D;"> <p>Aucun fil de discussion trouvé.</p> </li> </ul> - <% } %> + <% } %> - <div class="separator"></div> + <div class="separator"></div> - <div class="mt-3 text-center"> - <a href="creerFil.html" class="btn btn-primary d-flex align-items-center gap-2 px-4 py-2"> - <span class="d-inline-flex justify-content-center align-items-center border border-light rounded" style="width: 24px; height: 24px;"> - <i class="bi bi-plus-lg"></i> - </span> - Ajouter un fil - </a> + <div class="mt-3 text-center"> + <a href="creerFil.html" class="btn btn-primary d-flex align-items-center gap-2 px-4 py-2"> + <span class="d-inline-flex justify-content-center align-items-center border border-light rounded" + style="width: 24px; height: 24px;"> + <i class="bi bi-plus-lg"></i> + </span> + Ajouter un fil + </a> + </div> </div> - </div> - <div class="main-content d-flex flex-column bg-image" - style="min-height: 100vh; background-image: url('images/login-bg.png'); background-size: cover; background-position: center;"> - <% - List<Message> messages = (List<Message>) request.getAttribute("message"); - if (messages != null && isUserInFil) { - %> - <div class="message-container w-100"> - <% for (Message mess : messages) { - boolean utilisateurConnecte = mess.getUid() == utilisateur.getId(); + <div class="main-content d-flex flex-column bg-image" + style="min-height: 100vh; background-image: url('images/login-bg.png'); background-size: cover; background-position: center;"> + <% + List<Message> messages = (List<Message>) request.getAttribute("message"); + if (messages != null && isUserInFil) { + %> + <div class="message-container w-100"> + <% for (Message mess : messages) { + boolean utilisateurConnecte = mess.getUid() == utilisateur.getId(); + %> + <div> + <div class="message <% if(utilisateurConnecte) { %> blue ms-auto <% } %> w-75 mb-2 p-3 rounded shadow-sm"> + <p class="username"> + <i class="bi-person pe-2"></i> + <%= ((Map<Integer, String>) request.getAttribute("userNames")).get(mess.getUid()) %> + </p> + + <% + byte[] messageData = mess.getMessageData(); + String encodedImage = null; + boolean isImage = mess.isImage(); + + if (isImage) { + encodedImage = java.util.Base64.getEncoder().encodeToString(messageData); + } + %> + <% if (isImage) { %> + <img src="data:image/jpeg;base64,<%= encodedImage %>" alt="Message Image" + class="contenu-img img-fluid" /> + <% } else { %> + <p class="contenu"><%= new String(messageData, "UTF-8") %></p> + <% } %> + <div class="d-flex align-items-center justify-content-end"> + <form action="ControleurLike" method="POST"> + <input type="hidden" name="messId" value="<%= mess.getMid() %>"> + <input type="hidden" name="fid" value="<%= request.getAttribute("filId") %>"> + <button type="submit" class="btn text-dark d-flex align-items-center gap-1"> + <i class="bi bi-hand-thumbs-up"></i><%= new dao.LikeDAO().getNbLike(mess.getMid()) %> + </button> + </form> + </div> + </div> + </div> + <% } %> + </div> + <% + Boolean isAdmin = (Boolean) request.getAttribute("isAdmin"); %> - <div> - <div class="message <% if(utilisateurConnecte) { %> blue ms-auto <% } %> w-75 mb-2 p-3 rounded shadow-sm"> - <p class="username"> - <i class="bi-person pe-2"></i> - <%= ((Map<Integer, String>) request.getAttribute("userNames")).get(mess.getUid()) %> - </p> - - <% - byte[] messageData = mess.getMessageData(); - String encodedImage = null; - boolean isImage = mess.isImage(); - - if (isImage) { - encodedImage = java.util.Base64.getEncoder().encodeToString(messageData); - } - %> - <% if (isImage) { %> - <img src="data:image/jpeg;base64,<%= encodedImage %>" alt="Message Image" class="contenu-img img-fluid" /> - <% } else { %> - <p class="contenu"><%= new String(messageData, "UTF-8") %></p> + <form action="EnvoyerMessage" method="POST" class="w-100 mt-auto d-flex flex-column" enctype="multipart/form-data"> + <input type="hidden" name="fid" value="<%= request.getAttribute("filId") %>"> + <input type="hidden" name="uid" value="<%= utilisateur.getId() %>"> + <div class="input-group p-1 rounded border d-flex align-items-center bg-white"> + <% if(isAdmin){ %> + <a href="AddUser?filId=<%=request.getAttribute("filId")%>" class="btn btn-light text-dark fs3"> + <i class="bi bi-person-plus fs-4"></i> + </a> + <span class="px-2 text-muted bg-white">|</span> <% } %> - <div class="d-flex align-items-center justify-content-end"> - <form action="ControleurLike" method="POST"> - <input type="hidden" name="messId" value="<%= mess.getMid() %>"> - <input type="hidden" name="fid" value="<%= request.getAttribute("filId") %>"> - <button type="submit" class="btn text-dark d-flex align-items-center gap-1"> - <i class="bi bi-hand-thumbs-up"></i><%= new dao.LikeDAO().getNbLike(mess.getMid()) %> - </button> - </form> - </div> + <label class="btn btn-light text-dark" for="image-upload"> + <i class="bi bi-image fs-4"></i> + </label> + <input type="file" id="image-upload" name="image" class="d-none" accept="image/*"> + + <span class="px-2 text-muted bg-white">|</span> + <input type="text" class="form-control border-0" name="message" placeholder="Tapez votre message ici ..." + aria-label="Message"> + <span class="px-2 text-muted bg-white">|</span> + <button class="btn btn-light text-dark" type="submit"> + <i class="bi bi-send fs-4"></i> + </button> + </div> + </form> + <% } else { %> + <div class="container d-flex justify-content-center"> + <div class="text-center mx-auto align-self-start p-5 rounded-3 shadow-lg text-white" + style="background-color: #291968; width: fit-content;"> + <h1 class="display-4 mb-4">Bienvenue sur LilleConnect</h1> + <p class="lead">Veuillez sélectionner un fil de discussion.</p> </div> </div> - <% } %> + <% } %> </div> -<% -Boolean isAdmin = (Boolean) request.getAttribute("isAdmin"); -%> - <form action="EnvoyerMessage" method="POST" class="w-100 mt-auto d-flex flex-column" enctype="multipart/form-data"> - <input type="hidden" name="fid" value="<%= request.getAttribute("filId") %>"> - <input type="hidden" name="uid" value="<%= utilisateur.getId() %>"> - <div class="input-group p-1 rounded border d-flex align-items-center bg-white"> -<% -if(isAdmin){ -%> - <a href="AddUser?filId=<%=request.getAttribute("filId")%>" class="btn btn-light text-dark fs3"> - <i class="bi bi-person-plus fs-4"></i> - </a> - <span class="px-2 text-muted bg-white">|</span> -<% } %> - <label class="btn btn-light text-dark" for="image-upload"> - <i class="bi bi-image fs-4"></i> - </label> - <input type="file" id="image-upload" name="image" class="d-none" accept="image/*"> - - <span class="px-2 text-muted bg-white">|</span> - <input type="text" class="form-control border-0" name="message" placeholder="Tapez votre message ici ..." aria-label="Message"> - <span class="px-2 text-muted bg-white">|</span> - <button class="btn btn-light text-dark" type="submit"> - <i class="bi bi-send fs-4"></i> - </button> - </div> - </form> - <% } else { %> -<div class="container d-flex justify-content-center"> - <div class="text-center mx-auto align-self-start p-5 rounded-3 shadow-lg text-white" - style="background-color: #291968; width: fit-content;"> - <h1 class="display-4 mb-4">Bienvenue sur LilleConnect</h1> - <p class="lead">Veuillez sélectionner un fil de discussion.</p> - </div> -</div> - <% } %> </div> -</div> -<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" + <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> -<script> - window.onload = () => { - const container = document.querySelector('.message-container'); - if (container) { - container.scrollTop = container.scrollHeight; - } - }; -</script> + <script> + window.onload = () => { + const container = document.querySelector('.message-container'); + if (container) { + container.scrollTop = container.scrollHeight; + } + }; + </script> </body> + </html> diff --git a/new.html b/new.html index 427e4119b62b49a95f651c9b69477d93caf5351b..b63f11556053b78298c27e2195dfbd785160c8ec 100644 --- a/new.html +++ b/new.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <html lang="fr"> + <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> @@ -8,30 +9,34 @@ <link href="css/style.css" rel="stylesheet"> <link rel="icon" href="images/LilleConnect.png" type="image/png"> </head> + <body> -<div class="container"> - <form action="Create" method="get"> - <h2>Créer un compte</h2> - <div class="mb-3"> - <label for="prenom" class="form-label">Prénom</label> - <input type="text" class="form-control" id="prenom" name="prenom"> - </div> - <div class="mb-3"> - <label for="nom" class="form-label">Nom</label> - <input type="text" class="form-control" id="nom" name="nom"> - </div> - <div class="mb-3"> - <label for="mail" class="form-label">Mail</label> - <input type="email" class="form-control" id="mail" name="mail"> - </div> - <div class="mb-3"> - <label for="mdp" class="form-label">Mot de passe</label> - <input type="password" class="form-control" id="mdp" name="mdp"> - <a href="login.html">Vous avez déjà un compte ?</a> - </div> - <button type="submit" class="btn btn-primary">Créer un compte</button> - </form> -</div> -<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> + <div class="container"> + <form action="Create" method="get"> + <h2>Créer un compte</h2> + <div class="mb-3"> + <label for="prenom" class="form-label">Prénom</label> + <input type="text" class="form-control" id="prenom" name="prenom"> + </div> + <div class="mb-3"> + <label for="nom" class="form-label">Nom</label> + <input type="text" class="form-control" id="nom" name="nom"> + </div> + <div class="mb-3"> + <label for="mail" class="form-label">Mail</label> + <input type="email" class="form-control" id="mail" name="mail"> + </div> + <div class="mb-3"> + <label for="mdp" class="form-label">Mot de passe</label> + <input type="password" class="form-control" id="mdp" name="mdp"> + <a href="login.html">Vous avez déjà un compte ?</a> + </div> + <button type="submit" class="btn btn-primary">Créer un compte</button> + </form> + </div> + <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" + integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" + crossorigin="anonymous"></script> </body> -</html> + +</html> \ No newline at end of file