diff --git a/README.md b/README.md index 8b1dd354a11e51f019c64377a80ba7bef98e7d51..fc9fd952f9a62557ba6a2fd0312a9b2e64cc8589 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ 4. [📁 Arborescence du projet](#-arborescence-du-projet) 5. [🖥️ Liste des entrées des contrôleurs](#-liste-des-entrées-des-contrôleurs) 6. [🛠️ Points techniques et solutions](#️-points-techniques-et-solutions) -7. [➕ Fonctionnalités et améliorations](#-fonctionnalités-et-améliorations) +7. [➕ Fonctionnalitées et améliorations](#-fonctionnalitées-et-améliorations) --- @@ -154,20 +154,92 @@ données, et des DTO, qui assurent le transfert des données entre les couches. ## 🖥️ Liste des entrées des contrôleurs -| URL | Méthode | Fonctionnalité | -|----------------|---------|---------------| -| `/AddUser` | `GET` | Vérifie la connexion et affiche la liste des fils | -| `/AddUser` | `POST` | Supprime un utilisateur d'un fil | -| `/addUserFil` | `POST` | Ajoute un utilisateur à un fil | -| `/servlet-Authent` | `POST` | Authentifie un utilisateur et démarre une session | -| ... | ... | *(Ajouter d'autres endpoints si nécessaire)* | +| URL | Méthode | Fonctionnalité | +|-----------------|-----------|--------------------------------------------------------------------------------| +| `/Authent` | `service` | **Vérifie la connexion et redirige vers le menu** | +| `/Create` | `service` | **Authentifie un utilisateur et démarre une session** | +| `/filUser` | `GET` | **API REST pour récupérer toutes les infos depuis un token** | +| `/addUserFil` | `POST` | **Permet d'ajouter des utilisateurs à un fil existant** | +| `/CreateFil` | `POST` | **Crée un fil pour l'utilisateur** | +| `/LeaveFil` | `service` | **Permet à l'utilisateur de quitter un fil** | +| `/UserFil` | `GET` | **Permet d'afficher les utilisateurs du fil sur la page d'ajout d'utilisateur** | +| `/UserFil` | `POST` | **Permet de supprimer l'utilisateur sélectionné d'un fil** | +| `/ControleurLike`| `POST` | **Permet d'ajouter un like à un message** | +| `/Logout` | `service` | **Permet de vider la session** | +| `/Menu` | `service` | **Récupère toutes les informations de l'utilisateur et redirige vers le menu** | +| `/EnvoyerMessage`| `POST` | **Permet d'envoyer un message** | +| `/UserInfo` | `GET` | **Permet de récupérer les informations de l'utilisateur** | +| `/UserInfo` | `POST` | **Permet de modifier les informations de l'utilisateur** | + ## 🛠️ Points techniques et solutions -parler des difficultés etc +Intégration des images dans les messages : +Pour intégrer des images dans les messages, on a converti les images +en données binaires (bytes) avant de les stocker, puis on les reconvertit en images quand on les affiche. + +Problème avec Tomcat et le cache : +On a eu un problème avec Tomcat où les modifications n'étaient pas prises en +compte à cause du cache. On a résolu ça en vidant régulièrement le cache. + +Front-end du site pour une meilleure expérience utilisateur : +Pour rendre le site plus propre et agréable, on a utilisé Bootstrap et créé une maquette dès le début du projet. + + + +Gestion des likes sur les messages dans la base de données : +La gestion des likes était compliquée car on les stockait directement en nombre dans la base de données. +On a séparé ça et calculé les likes au lieu de les stocker en dur. + +## ➕ Fonctionnalitées et améliorations + +**Fonctionnalités demandées :** + +✅ **DAO de gestion de données** +Implémentation des DAO pour gérer les données nécessaires à l'application. + +✅ **Gestion des fils** +Création, gestion des abonnés et des messages dans les fils. + +✅ **Système d'authentification** +Mise en place d'un système d'authentification des utilisateurs. + +✅ **Style avec une feuille de styles reconnue** +Utilisation de Bootstrap pour le design de l'application, assurant une interface propre et responsive. + +✅ **Gestion des likes/unlikes** +Mise en place d'un système permettant de liker et de disliker les messages. + +✅ **Permettre de poster des images** +Intégration d'une fonctionnalité permettant d'ajouter des images dans les messages. + +✅ **Durée de vie des messages** +Les messages ont une durée de vie définie, après laquelle ils sont automatiquement supprimés. +(elle se gère pour tous les utilisateurs dans le fichier config.prop avec la valeur nbday en jour) + +✅ **Service Web pour récupération des fils et messages** +Création d'un service Web permettant de récupérer, en GET, les fils et les messages au format JSON. + +✅ **Autres améliorations** +Ajout de fonctionnalités supplémentaires telles que la gestion des erreurs et la résistance aux injections SQL et XSS. + +**Autres fonctionnalités supplémentaires :** + +✅ **Quitter un fil** +Possibilité pour un utilisateur de quitter un fil de discussion. + +✅ **Modification des informations utilisateur** +L'utilisateur peut modifier ses informations personnelles en cliquant sur son nom/prénom. + +✅ **Gestion des membres dans un fil** +Possibilité d'ajouter ou de supprimer des membres dans un fil de discussion. + +✅ **Sécurisation contre les injections SQL et XSS** +L'application est protégée contre les injections SQL et les attaques XSS. + +✅ **Gestion des valeurs nulles** +L'application résiste à toutes les erreurs liées aux valeurs nulles. -## ➕ Fonctionnalités et améliorations +✅ **Responsive Design** +L'application est entièrement responsive, s'adaptant à différentes tailles d'écran et appareils. -✅ 1 -✅ 2 -✅ 3 diff --git a/WEB-INF/src/controleurs/FilCreate.java b/WEB-INF/src/controleurs/FilCreate.java index 3eadc30312421e64a6555c20b34cb2ac4239e900..4e4f1b2e45d42a646235961174022b711632af0c 100644 --- a/WEB-INF/src/controleurs/FilCreate.java +++ b/WEB-INF/src/controleurs/FilCreate.java @@ -13,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 IOException { + protected void doPost(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/FilUser.java b/WEB-INF/src/controleurs/FilUser.java index f67fa131578d732cc6cdec2e5d710adfc7b959f3..33b5707d27d0ce05b5374aaf05bfb84dcd1687a5 100644 --- a/WEB-INF/src/controleurs/FilUser.java +++ b/WEB-INF/src/controleurs/FilUser.java @@ -11,7 +11,7 @@ import jakarta.servlet.http.*; import jakarta.servlet.annotation.WebServlet; import org.apache.tomcat.jakartaee.commons.lang3.StringEscapeUtils; -@WebServlet("/AddUser") +@WebServlet("/UserFil") public class FilUser extends HttpServlet { private ParticipantFilDAO participantFilDAO = new ParticipantFilDAO(); private FilDAO filDAO = new FilDAO(); diff --git a/addUser.jsp b/addUser.jsp index 166d41d511d428c43acb28c11934db06a51d3d7c..726ca07d560cc7147e10d60e34500dbc69d8dbaa 100644 --- a/addUser.jsp +++ b/addUser.jsp @@ -39,7 +39,7 @@ %> <li class="list-group-item d-flex justify-content-between align-items-center"> <%= user.getPrenom() %> <%= user.getNom() %> - <%= user.getEmail() %> - <form action="AddUser" method="post" style="display:inline;"> + <form action="UserFil" method="post" style="display:inline;"> <input type="hidden" name="userId" value="<%= user.getId() %>"> <input type="hidden" name="filId" value="<%= request.getParameter("filId") %>"> <button type="submit" class="btn btn-danger btn-sm">Supprimer</button> diff --git a/creerFil.html b/creerFil.html index 648dd00344ad7dd915dca7213467d3588f03df71..6b5347b86813ec15aaee40a152666be600fc3e78 100644 --- a/creerFil.html +++ b/creerFil.html @@ -12,7 +12,7 @@ <body> <div class="container"> - <form action=CreateFil method=get> + <form action=CreateFil method=POST> <h2>Créer un Fil</h2> <div class="mb-3"> <label for="titre" class="form-label">Titre</label> diff --git a/images/MaquetteV6.png b/images/MaquetteV6.png new file mode 100644 index 0000000000000000000000000000000000000000..eb7c6a791cfbbebf621cb32cb1c1b7b4255ec22a Binary files /dev/null and b/images/MaquetteV6.png differ diff --git a/menu.jsp b/menu.jsp index c36c094c8d948fb2519fa0eede69891236713bbe..c9dd9738e682868eed686d7d315381bf9855fc57 100644 --- a/menu.jsp +++ b/menu.jsp @@ -139,7 +139,7 @@ <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"> + <a href="UserFil?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>