2025-10-25 02:07:11 +02:00
2025-10-25 01:56:58 +02:00
2025-10-12 18:31:21 +02:00
2025-10-22 01:39:18 +02:00
2025-10-25 02:07:11 +02:00

TP TAA

TP3 - TP4

Nous avons maintenant deux rôles :

  • ADMIN : correspond à lenseignant

  • 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 na pas beaucoup de sens avec les rôles USER de Keycloak et ce nest pas lobjectif 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

Description
No description provided
Readme 130 MiB