TP3 : CTF et suppression
Un minimum de 4 commits de tailles comparables. Ces points sont conditionnés à la remise d'au moins un commit par 2 séances de cours.
4 points Vous devez modifier le serveur fourni pour permettre la suppression d'une tâche. Il faut :
- Ajouter une route (POST GET DELETE + url) dans un controleur.
- Ajouter une méthode dans le service pour supprimer une tâche.
- Utiliser le repository pour la suppression.
1 point Implanter le contrôle d'accès : vérifier que l'utilisateur est bien le propriétaire de la tâche avant de la supprimer.
1 point Implanter le contrôle d'accès : vérifier que l'utilisateur est bien le propriétaire de la tâche avant de la supprimer.
2 points Tu dois produire les tests unitaires pour la suppression d'une tâche au niveau de la couche de service:
- Assure-toi que la suppression fonctionne si on fournit un ID correct.
- Détermine le comportement à avoir si on fournit un ID erronné et implante un test qui valide ce comportement.
- Valide que le contrôle d'accès fonctionne correctement.
Vous pouvez choisir l'endroit dans l'interface où implanter la suppression (dans la liste, dans la consultation) ainsi que le moyen de déclencher la suppression (bouton, swipe, etc.).
2 points La suppression est implantée dans l'interface graphique. L'interface se met à jour après la suppression.
Votre application doit afficher des messages d'erreur significatifs (qui indiquent une solution quand c'est possible). Cela inclut les cas où l'utilisateur donne de mauvaises données (validation, trop court, existant, etc.), et les erreurs d'accès au serveur. Cet aspect sera corrigé en détail sur :
- la création d'un compte : message si les mots de passe ne concordent pas, si l'accès réseau est impossible, si le nom utilisateur est déjà pris, etc.
- l'écran de la liste de tâches : message si pas de réseau (vous devez fournir une option pour recharger les données dans ce cas).
Tous les messages d'erreur doivent être traduits pour les 2 langues.
Note : vous pouvez modifier le délai d'attente du serveur dans le fichier ConfigHTTP.java en changeant la valeur dans le Thread.sleep.
Quand vous envoyez une requête au serveur, la réponse n'est pas immédiate. Pour une action, vous devez :
- Indiquer à l'utilisateur qu'il se passe quelque chose
- Désactiver l'action qu'il vient de déclencher pour éviter que l'utilisateur puisse envoyer des requêtes
Pour chaque consultation (liste et consultation) vous devez :
- Indiquer à l'utilisateur que le chargement est en cours
- Afficher les informations quand elles sont reçues
L'interface doit revenir dans un état fonctionnel après le chargement, que le résultat soit correct ou en cas d'erreur.
Tous les messages doivent être traduits pour les 2 langues.
Notre serveur contient une faille de contrôle d'accès sur la mise à jour du pourcentage d'une tâche. Vous devez trouver un moyen d'exploiter cette faille. Pendant la séance 13.2 vous devrez montrer que vous êtes capables de modifier une tâche qui ne vous appartient pas.
- 3 points Tu dois montrer pendant la séance 13.2 que tu es capable de modifier (une seule) tâche qui ne t'appartient pas, selon les modalités données en classe.
- 1 point UNIQUEMENT SI TU AS RÉUSSI À EXPLOITER LA FAILLE, explique en détails les étapes qui t'ont permis d'exploiter la faille de sécurité dans un fichier nommé faille.md à la racine de ton projet. Mets ton fichier explicatif à la racine de ton TP3.
- 3 points Tu dois corriger la faille dans le serveur modifié que tu remets avec ton TP3.
L'application fonctionne sans plantage et correctement. Ce pointage fonctionne en négatif. Si l'application fonctionne correctement en tout temps, vous conservez votre note. Dans le cas contraire, vous perdez des points avec un maximum de 5.
- Plantage de l'application -1 point
- Interface illisible -1 point
- Information affichée incohérente -1 point
- Autre cas...