From 7c71555add9981ffbc42abe99e02e9b973250f53 Mon Sep 17 00:00:00 2001 From: trochas Date: Thu, 23 Oct 2025 22:21:36 +0200 Subject: [PATCH] readem + correction --- README.md | 79 +++++++++++-------- .../java/sample/data/jpa/metier/Quizz.java | 2 +- .../java/sample/data/jpa/metier/Reponse.java | 10 +++ .../sample/data/jpa/metier/Utilisateur.java | 2 +- .../sample/data/jpa/web/QuizzController.java | 8 +- .../data/jpa/web/SessionController.java | 4 +- .../data/jpa/web/UtilisateurController.java | 9 ++- 7 files changed, 72 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index a46156d..909d6bf 100644 --- a/README.md +++ b/README.md @@ -6,46 +6,63 @@ ### Compte rendu #### Utilisateur Resource -| Methode | URL | Description | -|---------|---------------------------------------------------|-------------------------------------------------------| -| GET | `/utilisateur` | Retourne toute la liste de l'utilisateur | -| POST | `/utilisateur/register` | S'incrire nouveaux utilisateur | -| GET | `/utilisateur/login` | Se connecter | -| GET | `/utilisateur/{id}` | Retourne l'utilisateur par id | -| GET | `/utilisateur/{user_id}/session` | Retoune la liste de session que l'utilisateur attends | -| PUT | `/utilisateur/{user_id}/add_session/{session_id}` | Ajoute un nouveau session à la liste de l'utilisateur | -| DELETE | `/utilisteur/{user_id}/delete` | Supprime l'utilisateur | +| Methode | URL | Description | +|---------|----------------------------------------------------|----------------------------------------------------------------------------------------------| +| POST | `/utilisateur/create` | Créer un utilisateur (avec aussi l'id keyloak) ("name","email et "password" dans body json) | +| GET | `/utilisateur/getAll` | retourn tout les utilisateurs (id, name, email) | +| GET | `/utilisateur/getSessions/{session_id}` | Retourne les sessions de l'utilisateur | +| PUT | `/utilisateur/addSession/{user_id}/{session_id}` | rejoint une session à la liste de l'utilisateur | +| PUT | `/utilisateur/removeSession/{user_id}/{session_id}`| quite une session à la liste de l'utilisateur | +| PUT | `/utilisateur/update/{user_id}` | met à jour les info de l'utilisateur ("name","email et "password" dans body json) | +| DELETE | `/utilisteur/delete/{user_id}/delete` | Supprime l'utilisateur | #### Session Resource -| Methode | URL | Description | -|---------|--------------------------------------|------------------------------------| -| GET | `/session` | Retourne toute la liste du session | -| GET | `/session/{id}` | Retourne la session par id | -| GET | `/session/{session_id}/quizzs` | Retourne la liste de quizzs | -| GET | `/session/{session_id}/utilisateurs` | Retourne la liste de l'utilisateur | -| DELETE | `/session/{session_id}/delete` | Supprime la session | +| Methode | URL | Description | +|---------|-------------------------------------------------|---------------------------------------------------------------| +| POST | `/session/create` | créer une nouvelle session ("theme":String dans body json) | +| GET | `/session/getAll` | Retourne la liste des sessions | +| PUT | `/session/addQuizz/{session_id}/{quizz_id}` | ajoute un quizz à la session | +| PUT | `/session/removeQuizz/{session_id}/{quizz_id}` | retire un quizz à la session | +| PUT | `/session/update/{session_id}` | change le thème ("theme":String dans body json) | +| PUT | `/session/join/{session_id}` | l'utilisateur courant (keyloak) rejout la session | +| PUT | `/session/leave/{session_id}` | l'utilisateur courant (keyloak) quitte la session | +| DELETE | `/session/delete/{session_id}` | Supprime la session | + +#### ReponseController +| Methode | URL | Description | +|---------|-------------------------------------------------|---------------------------------------------------------------------------| +| POST | `/reponse/create/choix` | créer un objet réponse de type choix multiple | +| POST | `/reponse/create/courte` | créer un objet réponse de type réponse courte | +| GET | `/reponse/getAll` | affiche l'id et les réponse correct de chaque réponse | +| GET | `/reponse/get/{id_reponse}` | affiche toutes les info d'un réponse | +| DELETE | `/reponse/delete/{id_reponse}` | supprime un objet réponse | +| PUT | `/reponse/removeReponse/{id_reponse} ` | retire une réponse correcte ("reponse" dans body json) | +| PUT | `/reponse/addReponse/{id_reponse} ` | ajoute une réponse correcte ("reponse" dans body json) | +| PUT | `/reponse/addChoix/{id_reponse} ` | ajoute un choix (réponse choix uniquement) ("choix":String dans body json)| +| PUT | `/reponse/removeChoix/{id_reponse}` | retire un choix (réponse choix uniquement) ("choix":String dans body json)| #### Quizz Resource -| Methode | URL | Description | -|---------|------------------------------------------------|----------------------------------------| -| GET | `/quizz` | Retourne toute la liste du quizz | -| GET | `/quizz/{quizz_id}/add_question/{question_id}` | Ajoute une nouvuelle question au quizz | -| DELETE | `/quizz/{quizz_id}/delete` | Suprrime le quizz | -| PUT | `/quizz/{quizz_id}/deleteQ` | Supprime toute les questions de quizz | +| Methode | URL | Description | +|---------|-------------------------------------------------|----------------------------------------------------| +| POST | `/quizz/create/{utilisateur_id}` | céer un nouveau quizz par associé à un utilisateur | +| GET | `/quizz/getQuestions/{quizz_id}` | Retourne la list des questions d'un quizz | +| GET | `/quizz/getAll` | Retourne toute la liste du quizz | +| PUT | `/quizz/add_question/{quizz_id}/{question_id}` | Ajoute une nouvelle question au quizz | +| PUT | `/quizz/removeQuestion/{quizz_id}/{question_id}`| Ajoute une nouvelle question au quizz | +| DELETE | `/quizz/delete/{quizz_id}` | Suprrime le quizz | #### Question Resource | Methode | URL | Description | |----------|----------------------------------------------------|-----------------------------------------------------------------------| | GET | `/question` | Retourne toute la liste du question | -| POST | `/question/addQuestion` | Créer une question | -| PUT | `/question/{question_id}/changeQuestion` | Change l'énoncé de la question | -| GET | `/question/{question_id}/getReponse` | retourne l'objet Reponse | -| PUT | `/question/{question_id}/addReponse` | Ajoute une réponse à Reponse | -| DELETE | `/question/{question_id}/deletReponses` | supprime toute les réponse correct | -| PUT | `/question/{question_id}/addReponse` | Ajoute une réponse à Reponse | -| PUT | `/question/{question_id}/setReponse/choix` | créer un nouvel objet Reponse de type Choix pour la question | -| PUT | `/question/{question_id}/setReponse/reponseCourte` | créer un nouvel objet Reponse de type reponse courte pour la question | -| PUT | `/question/{question_id}/addChoix` | rajoute un choix si Reponse est de type Choix | +| POST | `/question/create` | Créer une question ( "enonce":String dans body Json) | +| PUT | `/question/update/{question_id}` | Change l'énoncé de la question ("enonce":String dans body JSON) | +| GET | `/question/get/{question_id}` | donne toutes les infos de la question sous forme de String | +| GET | `/question/getAll` | donne l'id et l'énoncé de toutes les questions sous forme de String | +| GET | `/question/getReponse/{question_id}` | donne toutes les réponse correct sous forme de String | +| PUT | `/question/setReponse/{question_id}/{reponse_id}` | met à null l'objet réponse à la question | +| PUT | `/question/setReponse/{question_id}/{reponse_id}` | Associe un objet réponse à la question | +| PUT | `/question/delet/{question_id}` | supprime la question | ## Auteurs diff --git a/src/main/java/sample/data/jpa/metier/Quizz.java b/src/main/java/sample/data/jpa/metier/Quizz.java index 0b23d0e..801eb43 100644 --- a/src/main/java/sample/data/jpa/metier/Quizz.java +++ b/src/main/java/sample/data/jpa/metier/Quizz.java @@ -23,7 +23,7 @@ public class Quizz implements Serializable { @ManyToOne @JoinColumn(name="id_utilisateur") - private Utilisateur utilisateur; + private Utilisateur createur; @OneToMany(mappedBy = "quizz") private List questions=new ArrayList(); diff --git a/src/main/java/sample/data/jpa/metier/Reponse.java b/src/main/java/sample/data/jpa/metier/Reponse.java index 701d8f1..bf0e1b5 100644 --- a/src/main/java/sample/data/jpa/metier/Reponse.java +++ b/src/main/java/sample/data/jpa/metier/Reponse.java @@ -32,4 +32,14 @@ public abstract class Reponse implements Serializable { public String prettyPrinter(int tab){ return ""; } + + public String toString(){ + String res = "["; + for (int i = 0; i sessions= new ArrayList<>(); - @OneToMany(mappedBy = "utilisateur") + @OneToMany(mappedBy = "createur") private List quizzs = new ArrayList<>(); } \ No newline at end of file diff --git a/src/main/java/sample/data/jpa/web/QuizzController.java b/src/main/java/sample/data/jpa/web/QuizzController.java index cc5a0c4..b9ac686 100644 --- a/src/main/java/sample/data/jpa/web/QuizzController.java +++ b/src/main/java/sample/data/jpa/web/QuizzController.java @@ -50,7 +50,7 @@ public class QuizzController { Quizz q = new Quizz(); Utilisateur u = uDao.findById(id).get(); emailU = u.getEmail(); - q.setUtilisateur(u); + q.setCreateur(u); qDao.save(q); qId = String.valueOf(q.getId()); } catch (Exception ex) { @@ -113,9 +113,9 @@ public class QuizzController { try { Quizz q = qDao.findById(id).get(); res += "id : " + id + "\n"; - if(q.getUtilisateur()!=null){ - res += "create by : " + q.getUtilisateur().getId() + - " (" + q.getUtilisateur().getEmail() + ")\n"; + if(q.getCreateur()!=null){ + res += "create by : " + q.getCreateur().getId() + + " (" + q.getCreateur().getEmail() + ")\n"; } List sessions = q.getSessions(); List questions = q.getQuestions(); diff --git a/src/main/java/sample/data/jpa/web/SessionController.java b/src/main/java/sample/data/jpa/web/SessionController.java index 09a3ecc..be6a663 100644 --- a/src/main/java/sample/data/jpa/web/SessionController.java +++ b/src/main/java/sample/data/jpa/web/SessionController.java @@ -38,10 +38,10 @@ public class SessionController { Delete /session/delete/{id} Get /session/getAll Put /session/addQuizz/{id}/{idQ} - Put /session/removeQuizz/{id} + Put /session/removeQuizz/{id}/{idQ} Put /session/update/{id} param : body Jsp, "theme" Put /session/join/{sessionId} - Put /session//leave/{sessionId} + Put /session/leave/{sessionId} */ @PostMapping("/create") @ResponseBody diff --git a/src/main/java/sample/data/jpa/web/UtilisateurController.java b/src/main/java/sample/data/jpa/web/UtilisateurController.java index c11538b..b36e127 100644 --- a/src/main/java/sample/data/jpa/web/UtilisateurController.java +++ b/src/main/java/sample/data/jpa/web/UtilisateurController.java @@ -5,6 +5,7 @@ import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -37,19 +38,21 @@ public class UtilisateurController { Get /utilisateur/getSessions Put /utilisateur/addSession/{idUtilisateur}/{idSession} Put /utilisateur/removeSession/{idUtilisateur}/{idSession} - Put /utilisateur/update/{id} param : body Jsp, "name", "email", "oldpassword, "password" + Put /utilisateur/update/{id} param : body Jsp, "name", "email", "password" */ @PostMapping("/create") @ResponseBody - @PreAuthorize("hasRole('ADMIN')") - public String create(@RequestBody Map body) { + @PreAuthorize("hasAnyRole('ADMIN','USER')") + public String create(@RequestBody Map body, JwtAuthenticationToken auth) { try { if(body.containsKey("name") && body.containsKey("email") && body.containsKey("password")){ Utilisateur u = new Utilisateur(); + String keycloakUserId = auth.getToken().getClaim("sub"); u.setName(body.get("name")); u.setEmail(body.get("email")); u.setPassword(body.get("password")); + u.setKeycloakId(keycloakUserId); uDao.save(u); String uId = String.valueOf(u.getId()); return "Utilisateur \"" + u.getName() + "\" créé avec succès avec l'id = " + uId;