Ce projet consiste en une application web de réseau social, conçue pour permettre aux utilisateurs de créer des conversations et d’envoyer et recevoir des messages. L'application est construite en Java avec une architecture MVC.
### Fonctionnalités principales :
-**Gestion des utilisateurs** : Création de compte, authentification et gestion des informations personnelles.
-**Création et gestion des conversations** : L'utilisateur peut créer de nouvelles conversations, en rejoindre (à condition d'avoir le mot de passe) et poster des messages.
-**Interaction entre utilisateurs** : Les utilisateurs peuvent lire les messages des autres abonnés dans la même conversation, envoyer des messages, et voir la date et l'heure des messages.
-**Sécurité** : Protection contre les injections SQL et mot de passe chiffrés.
## 2. MCD et MDL
### MCD :
<imgsrc="MCD.png">
### MLD :
<imgsrc="MLD.png">
## 3. Requêtes pertinentes
**Récupérer le pseudo d'un utilisateur à partir de son email :**
```sql
SELECTpseudo
FROMUtilisateur
WHEREemail='alexandre.dehaine.etu@univ-lille.fr';
```
**Récupérer toute une conversation avec les noms des utilisateurs et leurs messages dans l'ordre de lecture classique :**
**Récupérer tous les utilisateurs d'une conversation spécifique :**
```sql
SELECTDISTINCTutilisateur
FROMMessages
WHEREidConv=1;
```
## 4. Arborescence
```
.
├── accueil.jsp
├── login.html
├── MCD.drawio
├── MCD.png
├── META-INF
│ └── context.xml
├── MLD.drawio
├── MLD.png
├── package.json
├── package-lock.json
├── README.md
├── rejoindre.jsp
├── ScriptSQL.sql
├── Supprimer.jsp
├── tree.txt
├── util.txt
└── WEB-INF
├── classes
│ └── dao
│ ├── Authent.class
│ ├── Conversation.class
│ ├── ConversationDao.class
│ ├── ConversationJdbcDao.class
│ ├── Message.class
│ ├── MessageDao.class
│ ├── MessageJdbcDao.class
│ ├── Utilisateur.class
│ ├── UtilisateurDao.class
│ └── UtilisateurJdbcDao.class
├── lib
│ ├── chesslib-1.1.8.jar
│ └── postgresql-42.7.4.jar
└── src
└── dao
├── Authent.java
├── ConversationDao.java
├── Conversation.java
├── ConversationJdbcDao.java
├── MessageDao.java
├── Message.java
├── MessageJdbcDao.java
├── UtilisateurDao.java
├── Utilisateur.java
└── UtilisateurJdbcDao.java
```
8 directories, 37 files
## 5. Liste des entrées des contrôleurs avec leur fonctionnalité
-**Créer un compte :** Un utilisateur non connecté peut créer un compte.
-**Se connecter :** Un utilisateur non connecté peut se connecter avec son compte.
-**Se déconnecter :** Un utilisateur connecté peut se déconnecter.
-**Créer une conversation :** Un utilisateur connecté peut créer une conversation, lui attribuant un nom, un mot de passe (non obligatoire, il permet d’empêcher les utilisateurs non invités de rejoindre la conversation) ainsi qu’un message de bienvenue (le premier message de la conversation).
-**Rejoindre une conversation :** Un utilisateur connecté peut rejoindre une conversation. Il lui faut l'ID de la conversation, le mot de passe si la conversation en possède un, ainsi qu'un premier message.
-**Supprimer une conversation :** Un utilisateur connecté peut supprimer une conversation qu'il a créée. Il lui faut le mot de passe (si la conversation en possède un) pour confirmer la suppression. Supprimer une conversation entraîne la suppression de tous les messages associés.
-**Sélectionner une conversation :** Un utilisateur connecté peut sélectionner une conversation parmi celles qu’il a rejointes.
-**Lire les messages :** Un utilisateur connecté qui a rejoint et sélectionné une conversation peut lire les messages des autres utilisateurs.
-**Poster un message :** Un utilisateur connecté qui a rejoint et sélectionné une conversation peut y poster un message.
## 6. Liste des points techniques difficiles
-**Tables :** La première difficulté a été de déterminer comment organiser le projet, savoir quelles tables créer et quelles informations y inclure, et comment les faire interagir ensemble. Il fallait aussi gérer les règles de relations entre ces tables.
-**JSP :** Ensuite, il a fallu utiliser les JSP, en se rappelant leur fonctionnement pour les exploiter au mieux, et choisir l’ordre et l’importance des différentes fonctionnalités.
-**Messages :** La fonctionnalité des messages a été la plus longue à implémenter. Il fallait réussir à afficher les bons messages lorsque la bonne conversation était sélectionnée.
-**Sessions et authentification :** La deuxième fonctionnalité la plus longue à implémenter a été la gestion des sessions et de l’authentification, notamment en ce qui concerne les permissions. Il était essentiel de faire en sorte que l’utilisateur ne puisse voir une conversation que s’il en avait la permission, et que seules les personnes autorisées puissent envoyer des messages ou supprimer des conversations.
@@ -64,5 +64,5 @@ INSERT INTO Messages(message, utilisateur, idConv)
SELECTpseudoFROMUtilisateurWHEREemail='alexandre.dehaine.etu@univ-lille.fr';-- récupère le nom d'utilisateur depuis l'email
SELECTu.pseudo,m.messageFROMMessagesASmJOINUtilisateurASuONm.utilisateur=u.emailwhereidConv=(SELECTidConvFROMConversationswherenomConv='Conversation 1')ORDERBYm.jour,m.heure;-- récupère toute une conversation avec le nom des utilisateur ainsi que les messages qu'ils ont envoyé dans l'ordre de lecture classique
SELECTu.pseudo,m.messageFROMMessagesASmJOINUtilisateurASuONm.utilisateur=u.emailwhereidConv=(SELECTidConvFROMConversationswherenomConv='Conversation 1')ANDLOWER(m.message)LIKE'%ca va%'ORDERBYm.jour,m.heure;-- récupère tous les messages d'une conversation avec le nom des utilisateur ainsi que les messages qu'ils ont envoyé contenant les mot "ca va" dans l'ordre de lecture classique