Skip to content
Snippets Groups Projects
Commit 521f88eb authored by Giorgio Utzeri's avatar Giorgio Utzeri
Browse files

md v2 + refacto

parent c6a56b7e
No related branches found
No related tags found
No related merge requests found
......@@ -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.
![Maquette](images/MaquetteV6.png)
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
......@@ -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);
......
......@@ -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();
......
......@@ -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>
......
......@@ -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>
......
images/MaquetteV6.png

49.1 KiB

......@@ -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>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment