From 0d2ba962dbc0225de740afc8b0b634efc09a63f2 Mon Sep 17 00:00:00 2001 From: Adrien Fryson <adrien.fryson@outlook.com> Date: Fri, 7 Mar 2025 21:26:17 +0100 Subject: [PATCH] =?UTF-8?q?Envoie=20message=20avec=20Entr=C3=A9e=20+=20log?= =?UTF-8?q?o=20fil=20de=20discussion=20+=20dark=20mode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sae/WEB-INF/src/modele/DS.java | 6 ++-- sae/WEB-INF/vue/accueil.jsp | 56 +++++++++++++++++++++------------ sae/WEB-INF/vue/creerFil.jsp | 31 +++++++++++------- sae/WEB-INF/vue/fil.jsp | 53 +++++++++++++++++-------------- sae/WEB-INF/vue/listerFil.jsp | 18 ++++++----- sae/WEB-INF/vue/login.jsp | 24 ++++++-------- sae/WEB-INF/vue/register.jsp | 23 +++++++------- sae/images/default.png | Bin 0 -> 16783 bytes sae/images/logo.png | Bin 0 -> 7429 bytes script.sql | 2 +- 10 files changed, 120 insertions(+), 93 deletions(-) create mode 100644 sae/images/default.png create mode 100644 sae/images/logo.png diff --git a/sae/WEB-INF/src/modele/DS.java b/sae/WEB-INF/src/modele/DS.java index f34509c..a9b4271 100644 --- a/sae/WEB-INF/src/modele/DS.java +++ b/sae/WEB-INF/src/modele/DS.java @@ -15,9 +15,9 @@ public class DS { } public Connection getConnection() { - String url = "jdbc:postgresql://psqlserv/but2"; - String login = "othemanekhachnaneetu"; - String pwd = "moi"; + String url = "jdbc:postgresql://localhost:5432/postgres"; + String login = "postgres"; + String pwd = ""; Connection con = null; try { con = DriverManager.getConnection(url, login, pwd); diff --git a/sae/WEB-INF/vue/accueil.jsp b/sae/WEB-INF/vue/accueil.jsp index ffb7d3a..f2a7a09 100644 --- a/sae/WEB-INF/vue/accueil.jsp +++ b/sae/WEB-INF/vue/accueil.jsp @@ -5,6 +5,9 @@ <%@ page import="modele.FilDeDiscussionDAO" %> <%@ page import="modele.Abonnement" %> <%@ page import="java.util.List" %> +<%@ page import="java.util.Set" %> +<%@ page import="java.util.HashSet" %> + <!DOCTYPE html> <html lang="fr"> @@ -13,12 +16,13 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CampusTalk - Accueil</title> <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> - <link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png"> + <link rel="shortcut icon" href="<%= request.getContextPath() %>/images/logo.png"> </head> -<body class="bg-gray-100 flex"> +<body class="bg-gray-900 text-white flex"> <aside class="w-64 bg-gray-800 text-white h-screen"> - <div class="p-4"> - <h1 class="text-2xl font-bold">CampusTalk</h1> + <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"> <a href="<%= request.getContextPath() %>/accueil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Accueil</a> @@ -34,24 +38,36 @@ List<Abonnement> abonnements = adao.findAbonnements(email); FilDeDiscussionDAO fdao = new FilDeDiscussionDAO(); %> - <div class="max-w-2xl mx-auto mt-12 p-6 bg-white rounded-lg shadow-md"> - <h2 class="text-2xl font-bold mb-4">Bienvenue sur CampusTalk</h2> - <p class="mb-4">Bonjour, <%= username %> !</p> - <p class="mb-4">Vous êtes connecté en tant que <%= email %></p> - <a href="<%= request.getContextPath() %>/listerFil" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Voir les autres fils de discussion</a> - </div> - <div class="max-w-2xl mx-auto mt-8 p-6 bg-white rounded-lg shadow-md"> - <h3 class="text-xl font-bold mb-4">Vos abonnements</h3> - <ul class="list-disc pl-5"> - <% for (Abonnement abo : abonnements) { %> - <li class="mb-2"> - <a href="<%= request.getContextPath() %>/fil?id=<%= abo.getIdFil() %>" class="text-blue-500 hover:underline"> - <%= fdao.findById(abo.getIdFil()).getNom() %> - </a> - </li> + <div class="max-w-2xl mx-auto mt-12 p-6 bg-gray-800 rounded-lg shadow-md"> + <h2 class="text-2xl font-bold mb-4">Bienvenue sur CampusTalk</h2> + <p class="mb-4">Bonjour, <%= username %> !</p> + <p class="mb-4">Vous êtes connecté en tant que <%= email %></p> + </div> + <div class="max-w-2xl mx-auto mt-8 p-6 bg-gray-800 rounded-lg shadow-md"> + <h3 class="text-xl font-bold mb-4">Vos abonnements</h3> + <% + Set<Integer> abonnementsIds = new HashSet<>(); + for (Abonnement abonnement : abonnements) { + abonnementsIds.add(abonnement.getIdFil()); + } + + FilDeDiscussionDAO fddao = new FilDeDiscussionDAO(); + for (FilDeDiscussion f : fddao.findAll()) { + if (abonnementsIds.contains(f.getId())) { + %> + <div class="mb-4 p-4 bg-gray-700 rounded-lg shadow-md"> + <a href="<%= request.getContextPath() %>/fil?id=<%= f.getId() %>" class="block"> + <img src="<%= request.getContextPath() %>/images/<%= f.getLogo() %>" alt="Logo" class="w-16 h-16 mx-auto"> + <h4 class="font-bold text-lg"><%= f.getNom() %></h4> + <% if (f.getDescription() != null) { %> + <p class="text-gray-400"><%= f.getDescription() %></p> <% } %> - </ul> </div> + <% + } + } + %> + </div> </div> </body> </html> diff --git a/sae/WEB-INF/vue/creerFil.jsp b/sae/WEB-INF/vue/creerFil.jsp index 5ac6e50..9ebc55c 100644 --- a/sae/WEB-INF/vue/creerFil.jsp +++ b/sae/WEB-INF/vue/creerFil.jsp @@ -7,12 +7,13 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CampusTalk - Créer un Fil de Discussion</title> <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> - <link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png"> + <link rel="shortcut icon" href="<%= request.getContextPath() %>/images/logo.png"> </head> -<body class="bg-gray-100 flex"> +<body class="bg-gray-900 text-white flex"> <aside class="w-64 bg-gray-800 text-white h-screen"> - <div class="p-4"> - <h1 class="text-2xl font-bold">CampusTalk</h1> + <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"> <a href="<%= request.getContextPath() %>/accueil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Accueil</a> @@ -29,20 +30,26 @@ </div> <% } %> - <div class="max-w-2xl mx-auto mt-8 p-6 bg-white rounded-lg shadow-md"> + <div class="max-w-2xl mx-auto mt-8 p-6 bg-gray-800 rounded-lg shadow-md"> <h1 class="text-2xl font-bold mb-4 text-center">Créer un nouveau fil de discussion</h1> - <form action="creerFil" method="post" class="mt-4"> + <form action="<%= request.getContextPath() %>/creerFil" method="post" enctype="multipart/form-data" class="space-y-4"> <div class="mb-4"> - <label for="nom" class="block text-gray-700 font-semibold">Nom du fil:</label> - <input type="text" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" id="nom" name="nom" required> + <label for="nom" class="block text-gray-300 font-semibold">Nom du fil:</label> + <input type="text" class="w-full p-3 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400 bg-gray-700 text-white" id="nom" name="nom" required> </div> <div class="mb-4"> - <label for="createuremail" class="block text-gray-700 font-semibold">Email du créateur:</label> - <input type="email" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" id="createuremail" name="createuremail" required> + <label for="createuremail" class="block text-gray-300 font-semibold">Email du créateur:</label> + <input type="email" class="w-full p-3 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400 bg-gray-700 text-white" id="createuremail" name="createuremail" required> </div> <div class="mb-4"> - <label for="description" class="block text-gray-700 font-semibold">Description:</label> - <textarea class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" id="description" name="description" rows="3" required></textarea> + <label for="description" class="block text-gray-300 font-semibold">Description:</label> + <textarea class="w-full p-3 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400 bg-gray-700 text-white" id="description" name="description" rows="3" required></textarea> + </div> + <div class="mb-4"> + <label for="logo" class="block text-gray-300 font-semibold">Logo du fil:</label> + <div class="flex items-center"> + <input type="file" id="file" name="file" class="text-gray-300"> + </div> </div> <button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors w-full">Créer</button> </form> diff --git a/sae/WEB-INF/vue/fil.jsp b/sae/WEB-INF/vue/fil.jsp index 50e9fce..cb3fe84 100644 --- a/sae/WEB-INF/vue/fil.jsp +++ b/sae/WEB-INF/vue/fil.jsp @@ -14,13 +14,13 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CampusTalk - Fil de Discussion</title> <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> - <link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png"> + <link rel="shortcut icon" href="<%= request.getContextPath() %>/images/logo.png"> <style> .message-container { transition: background-color 0.3s ease; } .message-container:hover { - background-color: #f3f4f6; + background-color: #374151; } .message-image { max-width: 200px; @@ -30,10 +30,11 @@ } </style> </head> -<body class="bg-gray-100 flex"> - <aside class="w-64 bg-gray-800 text-white h-screen"> - <div class="p-4"> - <h1 class="text-2xl font-bold">CampusTalk</h1> +<body class="bg-gray-900 text-white flex h-screen"> + <aside class="w-64 bg-gray-800 text-white 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> </div> <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> @@ -42,7 +43,7 @@ <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> </aside> - <div class="flex-1 p-6"> + <div class="flex-1 p-6 flex flex-col"> <% int id = Integer.parseInt(request.getParameter("id")); @@ -55,7 +56,7 @@ %> <div class="container mx-auto px-4 mt-8"> - <div class="bg-white p-6 rounded-lg shadow-lg"> + <div class="bg-gray-800 p-6 rounded-lg shadow-lg"> <h2 class="text-2xl font-bold mb-4 text-center"><%= fil.getNom() %></h2> <div class="overflow-y-auto max-h-96" id="messages-box"> <% for (Message m : messages) { @@ -66,9 +67,9 @@ <div class="w-10 h-10 rounded-full overflow-hidden"> <img src="https://www.gravatar.com/avatar/<%= m.getAuteurEmail().hashCode() %>?d=identicon&s=40" alt="Avatar"> </div> - <div class="ml-4 bg-gray-200 p-4 rounded-lg"> + <div class="ml-4 bg-gray-700 p-4 rounded-lg"> <h4 class="font-bold"><%= mdao.findUserName(m.getAuteurEmail()) %></h4> - <p class="text-sm text-gray-600"><%= formattedDate %></p> + <p class="text-sm text-gray-400"><%= formattedDate %></p> <p class="mt-2"><%= m.getContenu() %></p> <% if (m.getFileName() != null) { %> <img src="<%= request.getContextPath() %>/uploads/<%= m.getFileName() %>" alt="Image" class="mt-2 message-image"> @@ -78,9 +79,9 @@ <input type="hidden" name="messageId" value="<%= m.getId() %>"> <button type="submit" class="text-blue-500 hover:text-blue-700"> <% if (m.getLikeCount()) { %> - ❤️ Enlever le like + ❤️ <% } else { %> - 🤍 Like + 🤍 <% } %> </button> </form> @@ -96,22 +97,15 @@ <% } %> </div> - <div class="mt-6 bg-white p-6 rounded-lg shadow-lg"> - <form action="envoyerMessage" method="post" enctype="multipart/form-data"> + <div class="mt-6 bg-gray-800 p-6 rounded-lg shadow-lg"> + <form id="messageForm" action="envoyerMessage" method="post" enctype="multipart/form-data"> <div class="mb-4"> - <label for="contenu" class="block text-gray-700 font-semibold">Votre message :</label> - <textarea class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" id="contenu" name="contenu" rows="3" required></textarea> + <label for="contenu" class="block text-gray-300 font-semibold">Votre message :</label> + <textarea class="w-full p-3 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400 bg-gray-700 text-white" id="contenu" name="contenu" rows="3" required></textarea> </div> <div class="mb-4"> - <label for="file" class="block text-gray-700 font-semibold">Ajouter une image :</label> <div class="flex items-center"> - <input type="file" class="hidden" id="file" name="file"> - <label for="file" class="cursor-pointer bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors flex items-center"> - <svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> - <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4"></path> - </svg> - Télécharger - </label> + <input type="file" id="file" name="file" class="text-gray-300"> </div> </div> <input type="hidden" name="filId" value="<%= id %>"> @@ -127,6 +121,17 @@ let messagesBox = document.getElementById('messages-box'); messagesBox.scrollTop = messagesBox.scrollHeight; }; + + // setInterval(function() { + // location.reload(); + // }, 5000); + + document.getElementById('contenu').addEventListener('keypress', function (e) { + if (e.key === 'Enter' && !e.shiftKey) { + e.preventDefault(); + document.getElementById('messageForm').submit(); + } + }); </script> </div> </body> diff --git a/sae/WEB-INF/vue/listerFil.jsp b/sae/WEB-INF/vue/listerFil.jsp index 0b53034..379797b 100644 --- a/sae/WEB-INF/vue/listerFil.jsp +++ b/sae/WEB-INF/vue/listerFil.jsp @@ -14,12 +14,13 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CampusTalk - Fils de Discussion</title> <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> - <link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png"> + <link rel="shortcut icon" href="<%= request.getContextPath() %>/images/logo.png"> </head> -<body class="bg-gray-100 flex"> +<body class="bg-gray-900 text-white flex"> <aside class="w-64 bg-gray-800 text-white h-screen"> - <div class="p-4"> - <h1 class="text-2xl font-bold">CampusTalk</h1> + <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"> <a href="<%= request.getContextPath() %>/accueil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Accueil</a> @@ -30,9 +31,9 @@ </aside> <div class="flex-1 p-6"> - <div class="max-w-2xl mx-auto mt-8 p-6 bg-white rounded-lg shadow-md"> + <div class="max-w-2xl mx-auto mt-8 p-6 bg-gray-800 rounded-lg shadow-md"> <h2 class="text-2xl font-bold mb-4 text-center">Fils de Discussion</h2> - <p class="text-gray-700 mb-4 text-center">(auxquels vous n'êtes pas abonné)</p> + <p class="text-gray-400 mb-4 text-center">(auxquels vous n'êtes pas abonné)</p> <% String email = (String) session.getAttribute("email"); AbonnementDao adao = new AbonnementDao(); @@ -46,10 +47,11 @@ for (FilDeDiscussion f : fddao.findAll()) { if (!abonnementsIds.contains(f.getId())) { %> - <div class="mb-4 p-4 bg-gray-100 rounded-lg shadow-md"> + <div class="mb-4 p-4 bg-gray-700 rounded-lg shadow-md"> + <img src="<%= request.getContextPath() %>/images/<%= f.getLogo() %>" alt="Logo" class="w-16 h-16 mx-auto"> <h4 class="font-bold text-lg"><%= f.getNom() %></h4> <% if (f.getDescription() != null) { %> - <p class="text-gray-700"><%= f.getDescription() %></p> + <p class="text-gray-400"><%= f.getDescription() %></p> <% } %> <a href="<%= request.getContextPath() %>/suivreFil?id=<%= f.getId() %>" class="bg-blue-500 text-white px-4 py-2 rounded mt-2 inline-block">Suivre</a> </div> diff --git a/sae/WEB-INF/vue/login.jsp b/sae/WEB-INF/vue/login.jsp index f9c1f98..a81985e 100644 --- a/sae/WEB-INF/vue/login.jsp +++ b/sae/WEB-INF/vue/login.jsp @@ -7,17 +7,13 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CampusTalk - Connexion</title> <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> - <link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png"> - <style> - body { - background-color: #f8f9fa; - } - </style> + <link rel="shortcut icon" href="<%= request.getContextPath() %>/images/logo.png"> </head> -<body class="bg-gray-100 flex"> +<body class="bg-gray-900 text-white flex"> <aside class="w-64 bg-gray-800 text-white h-screen"> - <div class="p-4"> - <h1 class="text-2xl font-bold">CampusTalk</h1> + <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"> <a href="<%= request.getContextPath() %>/accueil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Accueil</a> @@ -27,7 +23,7 @@ </nav> </aside> <div class="flex-1 p-6"> - <div class="max-w-md mx-auto mt-12 p-6 bg-white rounded-lg shadow-md"> + <div class="max-w-md mx-auto mt-12 p-6 bg-gray-800 rounded-lg shadow-md"> <h2 class="text-2xl font-bold mb-4 text-center">Bienvenue sur CampusTalk</h2> <form action="login" method="post"> <% @@ -39,12 +35,12 @@ </div> <% request.removeAttribute("error"); } %> <div class="mb-4"> - <label for="email" class="block text-gray-700 font-semibold">Adresse e-mail</label> - <input type="email" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="email" id="email" placeholder="Entrez votre e-mail" required> + <label for="email" class="block text-gray-300 font-semibold">Adresse e-mail</label> + <input type="email" class="w-full p-3 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400 bg-gray-700 text-white" name="email" id="email" placeholder="Entrez votre e-mail" required> </div> <div class="mb-4"> - <label for="motdepasse" class="block text-gray-700 font-semibold">Mot de passe</label> - <input type="password" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="motdepasse" id="motdepasse" placeholder="Entrez votre mot de passe" required> + <label for="motdepasse" class="block text-gray-300 font-semibold">Mot de passe</label> + <input type="password" class="w-full p-3 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400 bg-gray-700 text-white" name="motdepasse" id="motdepasse" placeholder="Entrez votre mot de passe" required> </div> <button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors w-full">Se connecter</button> </form> diff --git a/sae/WEB-INF/vue/register.jsp b/sae/WEB-INF/vue/register.jsp index fb8ae2b..97b79ba 100644 --- a/sae/WEB-INF/vue/register.jsp +++ b/sae/WEB-INF/vue/register.jsp @@ -7,12 +7,13 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CampusTalk - Inscription</title> <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> - <link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png"> + <link rel="shortcut icon" href="<%= request.getContextPath() %>/images/logo.png"> </head> -<body class="bg-gray-100 flex"> +<body class="bg-gray-900 text-white flex"> <aside class="w-64 bg-gray-800 text-white h-screen"> - <div class="p-4"> - <h1 class="text-2xl font-bold">CampusTalk</h1> + <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"> <a href="<%= request.getContextPath() %>/accueil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Accueil</a> @@ -22,7 +23,7 @@ </nav> </aside> <div class="flex-1 p-6"> - <div class="max-w-md mx-auto mt-12 p-6 bg-white rounded-lg shadow-md"> + <div class="max-w-md mx-auto mt-12 p-6 bg-gray-800 rounded-lg shadow-md"> <h2 class="text-2xl font-bold mb-4 text-center">Inscription</h2> <% if (request.getAttribute("error") != null) { %> <div class="bg-red-100 text-red-700 p-4 rounded-lg mb-4"> @@ -31,16 +32,16 @@ <% request.removeAttribute("error"); } %> <form action="register" method="post"> <div class="mb-4"> - <label for="nom" class="block text-gray-700 font-semibold">Nom</label> - <input type="text" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="nom" id="nom" placeholder="Entrez votre nom" required> + <label for="nom" class="block text-gray-300 font-semibold">Nom</label> + <input type="text" class="w-full p-3 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400 bg-gray-700 text-white" name="nom" id="nom" placeholder="Entrez votre nom" required> </div> <div class="mb-4"> - <label for="email" class="block text-gray-700 font-semibold">Adresse e-mail</label> - <input type="email" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="email" id="email" placeholder="Entrez votre e-mail" required> + <label for="email" class="block text-gray-300 font-semibold">Adresse e-mail</label> + <input type="email" class="w-full p-3 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400 bg-gray-700 text-white" name="email" id="email" placeholder="Entrez votre e-mail" required> </div> <div class="mb-4"> - <label for="motdepasse" class="block text-gray-700 font-semibold">Mot de passe</label> - <input type="password" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="motdepasse" id="motdepasse" placeholder="Choisissez un mot de passe" required> + <label for="motdepasse" class="block text-gray-300 font-semibold">Mot de passe</label> + <input type="password" class="w-full p-3 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400 bg-gray-700 text-white" name="motdepasse" id="motdepasse" placeholder="Choisissez un mot de passe" required> </div> <button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors w-full">S'inscrire</button> </form> diff --git a/sae/images/default.png b/sae/images/default.png new file mode 100644 index 0000000000000000000000000000000000000000..2c4a4aa777aa9377b7280a391189c13510ddc32d GIT binary patch literal 16783 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%0A-!g^ES;}`x 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⪙ZE|>3;H%Z@pzkvc<<h z&o~8Rj)n#y7KM9p;mtoZ*3MiyHF#6O@~-D^u3fqV8faq-<#5<zyM}Z6mP?`!*X6I8 z{98Qtvq21KVBo_<h9kFyZ`?MDiriEf-eUcfHT~nHy^Wv|gH#TOJ+bS!#7!@mKJ@#m z`tXhLbmvw}0ft5fPKQ0QP5!rDgk?upJ(*SDo$NGY^Al@60fxp80u2?@<EH0jFJ67< z?u9uO^U{Lzv}}DM7#IZtIvI}aZn*^-luYJS`;}fAx?^eK!6akDb-V4;YS<b7aysmp zdqq(^)3;>O_5!)<t)Q{es7dd6Tf2{l3NSFnaysmJdu`5*3D;b9|77!fzpLQ%BbNTZ z{y)tMF7DuBQdpqexTYfi?v`lx?|;8Urfj+J)oAByF=IAi)86$Lj%&u<Y>yRSXiVTN zXf{q<R2#NJ%p!fgPUb4>{TIFlovXg|Xc}MXRLSX=qsukVDe7}HH0)wgxW#<Uw><sK zj-&%3sxe=Dc1&MC*Y|&)khk{--bhgE+rgV@&d0VbY*ml<rN^p9majaWB3~;v>u+B< zXpDrzvhmulXS)*Pj=hNNwtj8$_vy^(e|sQO)}TS?&tluxsAQF%_Oui}6qne+&*Gr) zh$UkauW#=B7pAP|qwg3sNF;|}*qm-t_idM1qCAU(f&o*|<D{mu9}Y9dw^W1X$ggav zKi1z6zy@l$vN$?q&ADP_f9jj-j#Py$vFE3XM9h|VT*w1*&4<YiSIkxx)=hmm8#D?V zyUbw!>+l2(c2Lv*kCMVx->f<DPcO=I)%Uxcy%fGuJ7d%SrHf3!I=dL+qwm{1w^_gD z`R3Qr-PX}RCiI<pd8PCIOsG#UOl`Pgv@)~q_xs%i_y1n=xq069{(FZ&Igq0&91`l> zF54Ky-dOTJRy8s_BWHWfuPU!^)}U!p2M1%O_ZN9i1~-4W`CY8s%%gd#|KjrzEn3_x z?-dxBtOQ@AJw3V7(Nbncfqve;I_un^pL-WDx$gwE^B>G$$PE9xy13lxTzt~81G~I7 z)df#KY4s~+Hq=!CGa1%y-rINWrk%NmJacwodb8gB%XN%@zaBU;M@L{!GXsZ)w?kIw z&3E6{v%XDuaOm%WWwWh)(oV4+&rIRv1Nl5)TEm1WRa5N@erEAJPKCXtw()`{JX65! z`&P~mqM2*8<{VnD-T1xmJKvOFyX}|0Pp+PSI329D;Xs(wuks$Ix+O6Ii;m816?|>> z<k=w!r5UVEpd=v5QIfvJlQllbPDAxhcijBHod+wM4Ez4&rRE7*Ffj$H9caCxveH*8 zFksbc74EiOK5|RXUr*cr7~BtLQu?6%O6g~rL#nt=nCHW3_a;@;d*si{XAGIZqX+8s z%{|~I^j0{eWkE=|XTF28)v9yL_G?MpzbnmU*UZ52!^t75|B6C9S8+hcrbD{nca$oE zHPtRV#+(3m?)*4s1XVXhd_BMF@F}kCJPC!xvBtJb|LnV(Fo6%0TD(*hOx?5mSC;KL z<6j?f#a?J@@A(URPUWw7uW7@=C~#rU0k2or_xXI4*dma}X&86;2czZcC(TS(wI%;G zGH{5fJLtaUm!9?7PiLOd4-v2Osb7vM`xHv)rf*vP-LeKeR$0!`5u4dtczo9Nuq}e` zuJE0Dy6leO^99!f5<qz%h=tGSl9+vYrvB7*W`}f{eRX5>40QKh@p7*dU}%(My4z!- zdcs$*%4Xw7N9~8x3a^4DS`(g`UXgeG|BwMxvZb>uY4gyXIP1|Fr-GeH2SwlRc`_|m z+uTR0I#S(s&6M9^kHE^*S^oJu7uT$u+~fHCVp@o&T|noor7W>$&Xw~%2X)I97%=Wz zv#;{poI}^I?pw6Az<bM<Whd9ae4Dk^@UXQ217j=4pSELJ@rx(eZ;QPcw<Gn)j0MTN z?@eT6S>)NUIsNtQSNm30e^@Ax7s+|$Q(fb|eR}qfLH0J<u>6}Gbu0Muoa^sGGFqZ1 zseg=f&)<6MDw7Nwqrit*4#J(^EaSu<P5&FfxxK~h(O<E>bKi+OOkrkHSYXq*-E+(N zfP3E3d~JR^Qr~pWV!PGSm@LdDZO$~Q$-#n?;}(yi+%D6;EwdYvpFZ;n7pXt)6}5zs zQGi36@t>cBYxK1+jn-&3w`3Fl=W|Zl<;y5AFbOIv)c+1*J|tC^(Hb3gW74u+#V>P9 zBeeMo8yPsBsBW<OeEWR0A&<JV?ww6dFBTqgZR%7%6c7pO0VX6cecG;9|CxFDrT<wk zTBE}R*SZ&ohQ4tA6)vvCz$l>M;_&a-)BL>`z8cKEUNlitUDSa)*f!Mm+ogwdB#U&? zHQX;-JZ!R2SYXfSxB5@#Z;vg{U&?oH<xo<-BgEeMz4&Uf{%!A7y8ks<KW;1QR}ke` z;d5Zg)5v_~i~lB`^4s+`TIFc>HM5;F!amo{N|?5rSLB-m151ta1=q9dPiMTH_`F6t zaAK2^=AB8kf9Cw^ykipe;&FiME2g{#295~z3tBvzcO}LqE&i(W&{Hz<;k3|-!&9C* zYg?Ty&-8s?_;6*A3lmeK`ho2wVG_&jcBF-6-%!>SiC@xc&7GQ;`#AeciLwdzg_OsK ztT|eG8|Fj^e>1!l_DV<SFk^S)i8~zpmp^+|ooi%fad5C@T6zE3VS%?LXBQm3`<k!! zy53w*=I&{iS8j@1{!x&{K_P<aZqw&TUf<#{me*}oOPzQ8zUm4ZKRf)ux1=g%zxNL= zCWQy~jdz!6W=Tgsn*CQl>aNhm&`ay{p70titGqq&O75m@_f>0H83jH}Wr)|V?-qC) z^CF}0xzS5Y<L%2n9>4PPZ>?3MeSvMr2Syef^@K?Ve@i@z@BaU`N5z-Bp+J1)jtbwu zCbQJ`Pnr}e>e+Q#fq`kMaEADqJzEx9eyn-9>`*r2q1=Uemmlw)oUM_WasB(&21ZYZ z1KCXZ<zYvbxm4C{3q2r^w|a?2?4q=n{280h*<U#BvG!vUv*4tr24N=8s%2l4Z~b^M ze@;qYk{rkOvr*@Lrq<8g)Vpn_=t)NgmLkqK3s$~<?q2$;N{=r)UE$6(i>FH#UHh(l z<<~#6ScbzgRu+s*uACQ&>;GwN-LzhNmJnwVheJuxga~`ZaLFY<WBM=4THL78Tf)+q zA*^sQQ+Q6S=+V%>cUDz$ly|CR9`dt%UZc8pp}}0A#`I2`iMCf*Sk`iGnf0$+v-j*f zuF@rP?Cc8*ISn{}gv=`ZX)#m!;Uv!)jEx3@H=K<X)+-&XQ}l6U73FTZo%*SB*0J^z zPkgEpFZG?yN%Zq(QmfqCWcFciocDXtQmI349gm)|E`ND4?b4E1%O4i}XAY}yWH>qG zJY1CXYtq-vb{CE$=H6*3sE!Ejyw%3)Q(&1Z9=)XUgygcR$_~+8o$}YskBVzNkMxjf zDyWW`SUzWC(uaSizNxRAk@<xwzrXTu%>tH;2GQy|5BIA*pj8)QE7TSBWt<)bv)+%m zT%qO5U)|L;`$6zT4K|iPDjO`1-4N}b^*Te_K_*VPp`hA#$Nbu=3Qu9aBS~2`{IAP7 z;~gEGnUdu1p8ovep|Y>X;fLak9NXiU{GKYjJ~QHk<o=0%i~sMIm#(?m<S;!UDbTsN zW}n!-wlkg_<qe`*zxPLL-}>LH_CCff@4|kQ!iI)VER#$+pMjSZI@*^Nl(IhL>#OxY zdEYks;fGaS2m1|zV-8sy|M6bV=*I#cMn#{r520`8=3ck`bL`LFQ$Iul-4*U|h5lJ{ z^0eEu^4a^9ra$2j;n?9+Dx4Vpgk{$A-LM6bhh(O3$sSr8Qo3ZW=bY_NG_HyMHm%*= z5GPQ;`dWiY&+}ki=T!CeE9*<&o#QyNI<!L|uXS~H+*#*jme(~N26c)%BbRMhU7%~j zvddDq{=u3@zmA^0p3m<e@vw{K&|1gZd!YHqyN6f5Te{RBebVms%m+p>SNabyMlGsv zy?O6jwET^d;`X|C?x&MEwx@laJL8JMd^w@JCt0k$jITdj*9BT|%766zs(AVM6^p7r zXxcM!l-KE<nm;#u^P5R3#_tz%&G9(5NN(zS!=*Ay1Z#7WdnC8(<jvdbrFs5Ak1ErT zgVBeU<SjbWeCGFy_6o^RwX#Qn+gCAt?|C=TY?u4IW$b<1A2cRExEeT#S>WBI4=bly z+O7N--6PGtBFJCuyn&SK+E<*Xq$jgfGYda!YWv!Gys3!k=`L@ELvQu`RoC2w&OM($ zF?03H(j7v62RZk1);O~MTeexL?00i^+SXsO7N<T>V`#Y@y{|Fa-zUlpv`+Zs#Lq86 zMRzzC9Pnm(oAM`Atw;Xa`uTg0oo-67j$jgam+<p<)UP|Y+9bcoeD<p{Disrrd71rC z<BT?w?3Qb1rMEnK66-zdk$+Vv$D38I42RZ+)&6+q3tFIXYwq*+FWBRqTlqe%O%Qp) z*4X@oeaFnQnLn@pTDEIyo<s}pUJi#HUsvh-@0nYD?ow7_*ZYYdSAMZ-irb-YqxklQ zhHZSx{L8Od^FGu^Zp!oPPWC<_!Nv5Wv2BsmU2Z448#?cO?m1<*#(S>)IQfK8)Z=## zw<ddTTXlcA>H7IER(0HMXYVPy&}y&SV*RHyCa9%YUDrPF!@KAcC*p&zpQ^~}UYx&2 zWf7|p_cg~@dHKs%?Ju2s@jWs93)7qeD_4d?z0wE8K+D!S4V%?p+<#Z^tNZEk%210b zJP+(PxlR<*NoZ<&@zIy%UB74W74vOJ%x@bvUI|odkdK*?eZTdF=ZVv&c^-RB?v&iZ zd1U66cSkKI6<Rh6e-E3b|Fvv`SyX%)x9}t1=8x*TeLr&wz0wo^aM;C#^TBb^i(TK1 z-hfwDetYrKsl(gCc%RqW(~no!{Jaocwz=i&yvh6mPghla5tvx7GUKQExu2^HeL*Yk zcWyJ~6Da6)h^Tj2$JnG;&Ur#m=gOx)vjq0cGW^UkYo`6ImRgIcPLrE0)>`^?U)QR< zuxPnY$>eO4ldbPn@0U+_FJGh=^&(zMKWRz(q^V+2%SHZ9Y?)@xr0w+J*sNp0zIk(! zxIViyZ~mzADLGTQGjK}puS=Gt2WPZT+!h|Rd#+2|yYrearbbOyE!IE1{okYcLU(gc zZc6phP4Lsd<sP^puS&y1H}x??ZT{lywOb}0&=Y#RcFT$5$1!&=e2AaOt?#}5df`LR O<{(d3KbLh*2~7a^$64wC literal 0 HcmV?d00001 diff --git a/sae/images/logo.png b/sae/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0566e1982c1da1799554be7c8ca0c9cd99e3ea82 GIT binary patch literal 7429 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 literal 0 HcmV?d00001 diff --git a/script.sql b/script.sql index ba4d366..5d0f9ac 100644 --- a/script.sql +++ b/script.sql @@ -17,7 +17,7 @@ CREATE TABLE FilDeDiscussion ( dateCreation TIMESTAMP DEFAULT CURRENT_TIMESTAMP, createurEmail VARCHAR(100), description TEXT, - logo VARCHAR(255), + logo VARCHAR(255) DEFAULT 'default.png', CONSTRAINT pk_fil PRIMARY KEY (id), CONSTRAINT fk_createur FOREIGN KEY (createurEmail) REFERENCES Utilisateur(email) ON DELETE SET NULL -- GitLab