Skip to content
Snippets Groups Projects
Commit 2147a68f authored by Paul Cancel's avatar Paul Cancel
Browse files

Ajout du readme.md

parent ec107704
No related branches found
No related tags found
No related merge requests found
# # MeetingPlannr
\ No newline at end of file ![Logo](./src/main/resources/static/uploads/logo.jpg)
<br>
*Logo de l'application*
#### Par Théo Vienne et Paul Cancel - Groupe N
## Description :
MeetingPlannr est une applciation de gestion de rendez-vous faites avec Spring-Boot
<br>
## Fonctionnalités :
Elle comprend :
- Un calendrier pour pouvoir mettre en place des rendez vous.
- L'inscription et la connexion de comptes utilisateurs et administrateurs.
- La possibilité de modifier son profil (Nom, prénom et photo de profil).
- La possibilité de visualiser ses propres rendez vous et de les regarder en détail.
- Une gestion des différents conflits entre rendez-vous dans le calendrier.
- Un indicateur dans le calendrier sur les jours les plus occupés.
- La possibilité de configurer l'application avant son lancement.
- Un système de validation par un administrateur pour les rendez-vous.
- Des notifications par email pour: les bannissements, la validation des rendez vous
- La possibilité de changer de mots de passes avec une vérification par email.
- Un dashboard complet de fonctionnalités administrateurs pour gérer l'application
## Prérequis :
Les prérequis pour le fonctionnement correct sont :
- Une version de Java à 17 ou au-dessus.
- Maven 3.8 ou supérieur.
- Une base de données PostgreSQL.
- Un serveur SMTP configuré pour l'envoi des e-mails (avec univ-lille.fr)
- Un environnement permettant de compiler et d'exécuter une application Spring -Boot (Visual Studio Code ici).
- Une connexion Internet pour télécharger les dépendances Maven.
## Technologies :
### Backend
- Java : Pour le code de toute l'application
- Spring Boot : Framework pour le développement rapide d'applications Java.
- Spring Data JPA : Pour l'accès et la gestion des données avec Hibernate.
- Spring Boot DevTools : Pour le rechargement automatique des modifications en développement.
- Spring Security : Pour l'authentification.
- Spring Validation : Pour valider les entrées utilisateur.
- Spring Boot Starter Mail : Pour l'envoi d'e-mails via un serveur SMTP.
### Base de données
- PostgreSQL : Système de gestion de base de données relationnelle.
- Hibernate : ORM pour gérer les interactions avec la base de données.
### Frontend
- JSP : Pour le rendu des vues côté serveur.
- CSS : Pour le style des pages
- Dépendances et outils auxiliaires
- Lombok : Pour les getters et les setters.
- Jackson : Bibliothèque pour manipuler les données JSON .
### Serveur Web intégré
- Tomcat Embed Jasper : Pour interpréter les fichiers JSP dans l'application - Spring Boot.
### Outils de build
- Maven : Pour la gestion des dépendances et la construction du projet.
## Lancement :
### Commande de lancement :
On commence par configurer le password pour le mail smtp :
#### Pour bash
```bash
EXPORT MAIL_PASSWORD="XXXXXXX"
```
#### Pour powershell
```powershell
$env:MAIL_PASSWORD="XXXXXXX"
```
Puis on peut lancer l'application avec maven :
```bash
mvn spring-boot:run
```
### [***Puis cliquer sur le lien vers l'application ici.***](http://localhost:8080/meetingplannr)
## Endpoints :
### Public
#### Méthode HTTP : `GET`
1. `/public/login`
*Affiche le formulaire de connexion.*
- Redirige vers `/user/listeAction` si l'utilisateur est déjà authentifié.
2. `/public/register`
*Affiche le formulaire d'inscription.*
- Redirige vers `/user/listeAction` si l'utilisateur est déjà authentifié.
3. `/public/password_change`
*Affiche le formulaire de changement de mot de passe.*
4. `/public/verify_password_change`
*Vérifie le changement de mot de passe à l'aide d'un token.*
- **Paramètres requis :**
- `token` : Token de vérification.
- `password` : Nouveau mot de passe.
---
#### Méthode HTTP : `POST`
1. `/public/register`
*Soumet les informations pour enregistrer un nouvel utilisateur.*
- Vérifie la validité des données et si l'email est déjà utilisé.
- Crée un utilisateur et l'authentifie automatiquement.
2. `/public/perform_password_change`
*Déclenche le processus de changement de mot de passe.*
- **Paramètres requis :**
- `email` : Adresse email de l'utilisateur.
- `newPassword` : Nouveau mot de passe.
- Envoie un email de vérification si l'email appartient à l'université de Lille.
---
### Notes importantes
- **Authentification :**
Si l'utilisateur est déjà authentifié, certaines routes redirigent automatiquement vers `/user/listeAction`.
- **Changement de mot de passe :**
Le mot de passe est modifié uniquement après vérification par un token envoyé par email.
Les tokens expirés ou invalides sont gérés avec un message d'erreur.
---
### User
#### Méthode HTTP : `GET`
1. `/user/listeAction`
*Affiche la liste des actions disponibles pour l'utilisateur.*
- Redirige vers `/public/login` si l'utilisateur n'est pas authentifié.
2. `/user/profile`
*Affiche le profil de l'utilisateur.*
- Redirige vers `/public/login` si l'utilisateur n'est pas authentifié.
3. `/user/editProfile`
*Affiche le formulaire d'édition du profil de l'utilisateur.*
- Redirige vers `/public/login` si l'utilisateur n'est pas authentifié.
4. `/user/meetings`
*Affiche la liste des réunions de l'utilisateur.*
- Redirige vers `/public/login` si l'utilisateur n'est pas authentifié.
5. `/user/meetings/detail/{mno}`
*Affiche les détails d'une réunion spécifique.*
- Redirige vers `/user/meetings` si la réunion n'existe pas.
- Indique si l'utilisateur est le propriétaire de la réunion.
6. `/user/meetings/edit/{mno}`
*Affiche le formulaire pour éditer une réunion spécifique.*
- Redirige vers `/user/meetings` si la réunion n'existe pas ou si l'utilisateur n'en est pas le propriétaire.
7. `/user/meetings/delete/{mno}`
*Supprime une réunion spécifique si l'utilisateur en est le propriétaire.*
- Redirige vers `/user/meetings` si la réunion n'existe pas.
8. `/user/calendar`
*Affiche un calendrier avec les réunions prévues.*
- Redirige vers `/public/login` si l'utilisateur n'est pas authentifié.
- Permet de naviguer entre les mois.
9. `/user/meetings/new`
*Affiche le formulaire de création d'une nouvelle réunion.*
- Redirige vers `/public/login` si l'utilisateur n'est pas authentifié.
- Charge les horaires déjà réservés pour la date sélectionnée.
---
#### Méthode HTTP : `POST`
1. `/user/updateProfile`
*Met à jour les informations du profil de l'utilisateur.*
- Gère les erreurs de validation.
- Permet l'ajout ou la mise à jour de la photo de profil.
- Redirige vers `/public/login` si l'utilisateur n'est pas authentifié.
2. `/user/meetings/update/{mno}`
*Met à jour les informations d'une réunion spécifique.*
- Gère les erreurs de validation.
- Redirige vers `/user/meetings/detail/{mno}` après la mise à jour réussie.
- Redirige vers `/user/meetings` si la réunion n'existe pas ou si l'utilisateur n'en est pas le propriétaire.
3. `/user/meetings/create`
*Crée une nouvelle demande de réunion.*
- Gère les erreurs de validation.
- Redirige vers `/user/listeAction` après la création réussie.
- Renvoie un message d'erreur en cas d'échec.
---
### Admin
#### Méthode HTTP : `GET`
2. `/admin/dashboard`
*Accès au tableau de bord de l'administrateur.*
3. `/admin/users`
*Affiche la liste des utilisateurs avec pagination et recherche.*
- **Paramètres facultatifs :**
- `page` : Numéro de page (par défaut : `1`).
- `search` : Terme de recherche.
4. `/admin/requests`
*Affiche la liste des demandes avec pagination, recherche et filtrage.*
- **Paramètres facultatifs :**
- `page` : Numéro de page (par défaut : `1`).
- `search` : Terme de recherche.
- `filter` : Filtre les demandes sans réunion associée (`true`/`false`).
5. `/admin/meetings`
*Affiche la liste des réunions avec pagination et recherche.*
- **Paramètres facultatifs :**
- `page` : Numéro de page (par défaut : `1`).
- `search` : Terme de recherche.
6. `/admin/meetings/edit/{mno}`
*Affiche le formulaire pour éditer une réunion.*
---
#### Méthode HTTP : `POST`
1. `/admin/users/ban/{uno}`
*Bannit un utilisateur en fonction de son `uno`.*
2. `/admin/requests/validate/{rno}`
*Valide une demande et génère une réunion associée en fonction du `rno`.*
3. `/admin/meetings/delete/{mno}`
*Supprime une réunion spécifiée par le `mno`.*
4. `/admin/meetings/update/{mno}`
*Met à jour les informations d'une réunion spécifiée par le `mno`.*
---
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment