96 lines
10 KiB
Markdown
96 lines
10 KiB
Markdown
# TP TAA
|
||
|
||
|
||
## TP3 - TP4
|
||
|
||
### Nous avons maintenant deux rôles :
|
||
|
||
- ADMIN : correspond à l’enseignant
|
||
|
||
- USER : correspond à l’étudiant
|
||
|
||
Pour Keycloak, il faudrait normalement créer les utilisateurs via OAuth2. Cependant, pour ce TP, nous avons utilisé directement la base de données (BDD) pour créer les utilisateurs.
|
||
|
||
### Remarques sur les entités
|
||
|
||
Pour les classes Quizz, Question et Utilisateur, nous avons testé que tout fonctionne, mais elles sont liées à Utilisateur. Cela n’a pas beaucoup de sens avec les rôles USER de Keycloak et ce n’est pas l’objectif principal du TP.
|
||
|
||
### Tests avec Insomnia
|
||
|
||
Pour simplifier et se concentrer sur les fonctionnalités principales, nous avons testé les classes Session et Reponse directement via Insomnia.
|
||
|
||
### Example de token admin et user dans OAuth2
|
||
- Site web de décodage:
|
||
https://www.jwt.io/
|
||
|
||
- Admin
|
||
`eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJVaDlNMG8wMERKaEdTQzdTRjdmdDlFZWFDNmE4UVdKV0NPXzdENVBKeXFRIn0.eyJleHAiOjE3NjEzNDg4NzksImlhdCI6MTc2MTM0ODU3OSwianRpIjoib25ydHJvOmJiYmQyM2QwLTY2ZTctMWY0NS1iNTFiLTBiZGFjNzQzZmZiMyIsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9yZWFsbXMvbXlzcHJpbmdib290YXBwcmVhbG0iLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiMmY5YWRhYzQtODU4Ni00NTI4LWE4Y2QtM2I3M2I5NTc0ODBiIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoibXlzcHJpbmdib290YXBwIiwic2lkIjoiN2FjZmE3YWItNTk4ZC01ZmVlLTU0MzktYzMyNDYyYzFkM2JjIiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyJodHRwOi8vbG9jYWxob3N0OjgwODIiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iLCJBRE1JTiIsImRlZmF1bHQtcm9sZXMtbXlzcHJpbmdib290YXBwcmVhbG0iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6IlRpYm8gUm9jaGFzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoibXl1c2VyIiwiZ2l2ZW5fbmFtZSI6IlRpYm8iLCJmYW1pbHlfbmFtZSI6IlJvY2hhcyIsImVtYWlsIjoidGlib0BjYWNhLmNvbSJ9.TrxycBI76TRjSNjA7kwDNycyKjmNwhjfMnQ2xOi0hVvBqpQN-nIH6mvm3hv6FwoTCVZz9lwwS5kpn83Z4FoYZVY5oKGYsccNR77tg42Rahn1UXOuQuCs4v9W0oqClQa5PtI8loQXO9d5P3mc8uuUvO2vClnGRrky48DqGDSis30fXPY-c26TIZvIRyi_PWPSOK2i2k9w7fkWPodkkGxdaRm4Sc45hNXCA9FT8xRJhzfxJ21ynOovx2Z9y8lILqV5Q4NqjMOTlzyVwkj6vS3veXIJkHAAk8LPdHJKoPrrqQzXXsb3ZIgTl8DyF2cYcJ58vOOle91UoGuqWi1U-pJSnw`
|
||
- User
|
||
`eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJVaDlNMG8wMERKaEdTQzdTRjdmdDlFZWFDNmE4UVdKV0NPXzdENVBKeXFRIn0.eyJleHAiOjE3NjEzNDU2MjAsImlhdCI6MTc2MTM0NTMyMCwianRpIjoib25ydHJvOjJhMGIxOGZiLWE4MjEtMWI3MS1iODQ1LWE5NGY0NWY1ZDA4MSIsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9yZWFsbXMvbXlzcHJpbmdib290YXBwcmVhbG0iLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiOTkyZTI3OTktN2ExOS00ZWY1LTk0ODItYWMzMjljNTNhNDc5IiwidHlwIjoiQmVhcmVyIiwiYXpwIjoibXlzcHJpbmdib290YXBwIiwic2lkIjoiMzFhYmVlNzYtOWJkNy02NWMyLWY0MzMtOTJiZjliODZlMDA1IiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyJodHRwOi8vbG9jYWxob3N0OjgwODIiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iLCJVU0VSIiwiZGVmYXVsdC1yb2xlcy1teXNwcmluZ2Jvb3RhcHByZWFsbSJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoicHJvZmlsZSBlbWFpbCIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoidWlvYXpkcSB6c29rZHFzamtkIiwicHJlZmVycmVkX3VzZXJuYW1lIjoibXl1c2VyMiIsImdpdmVuX25hbWUiOiJ1aW9hemRxIiwiZmFtaWx5X25hbWUiOiJ6c29rZHFzamtkIiwiZW1haWwiOiJva0BjYWNhLmNvbSJ9.GBNldYmb4q02AaOwnu1xoLxkF_9qvadLdw1ftjetOsaDNYSe_y_9XhqmStc1ocD11AJUVr0Ix9fqB6TACoNMBS6gegSI6xmmdjT2ABqGilcpMs3OY6edNB8qZ9LP_YFK_z6UWdBBgWmETSfr9zRGVOOfLDMFwadgxCtbeV1AxGLTmfdVLCDPOlZseN3SNKHeFbC_ApYgPR-_vO1Fjl8KE8CucWULoDzgyHBdU1zqlLttlpaOQHl6aHWS0mtb4ymvQWDp7UZd-aukVb41UT5oeVtPS9HC6w2jfd4UBxG1T2TdTfazoXXk1eGgAD7ir6QyoB2Pkv9aANiRMMrTlk0C_w`
|
||
|
||
#### Utilisateur Resource
|
||
| 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 |
|
||
|---------|-------------------------------------------------|---------------------------------------------------------------|
|
||
| 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 (keycloak) rejout la session |
|
||
| PUT | `/session/leave/{session_id}` | l'utilisateur courant (keycloak) 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 |
|
||
|---------|-------------------------------------------------|----------------------------------------------------|
|
||
| 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/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
|
||
|
||
- Tuan Minh VU
|
||
|
||
- Thibaut ROCHAS
|