Aller au contenu principal

TP3 : CTF et suppression

Repository Git ​1 point

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.

Suppressions des tâches
Suppression dans le serveur

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.
Suppression dans l'interface graphique

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.

Améliorations
Gestion des erreurs ​2 points

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).
RAPPEL

Tous les messages d'erreur doivent être traduits pour les 2 langues.

Attente dans l'interface graphique ​2 points

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.

RAPPEL

Tous les messages doivent être traduits pour les 2 langues.

Capture du drapeau / faille de sécurité du serveur

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.

  1. 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.
  2. 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. 3 points Tu dois corriger la faille dans le serveur modifié que tu remets avec ton TP3.
Fonctionnement global ​5 points négatifs

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...