Skip to content
Taha Khetib edited this page May 10, 2025 · 3 revisions

Ébauche de documentation

Ce document vise à expliquer le fonctionnement de l’application

Accès à la documentation

Documentation Dart Doc

  • Fichiers importants

    Tout les fichiers cités ici sont dans le dossier lib à la racine du projet à l’exception de l'entrypoint qui est dans le dossier bin

    • bin/celene_cli.dart : Entrypoint du projet, à voir comme le main de l'app
    • celeneCLI.dart : Fichier contenant la fonction main() du projet, contient l’initialisation de la majeure partie des éléments utilisés dans le projet
    • model/casAuthentification.dart : Fichier contenant la classe CASAuth qui gère la connexion avec le CAS (Central Authentifcation System) et gérant la persistance au niveau de la connexion → Utilisée dans la classe CeleneParser
    • model/celeneObject.dart : Fichier contenant la classe CeleneParser qui gère la lecture des pages celene et le téléchargement des fichiers présents sur ces page
    • model/secretManager.dart : Fichier contenant la classe SecretManager qui gère le stockage des éléments sensibles dans le trousseau de clés systèmes
    • model/secureStorage.dart : Fichier contenant la classe SecureStorage qui gère la lecture et écriture du fichier chiffré contenant les données de sessions pour la persistance de session
    • model/dbManager.dart : Fichier contenant la classe DBManager qui gère l'enregistrement des cours et fichiers téléchargés
    • KeychainAPI/keyring.dart : Fichier contenant la classe Keyring faisant l'interface avec le trousseau de clés du système d'exploitation → utilisée dans la classe SecretManager

    Les fichiers dans les dossiers view et controller n'introduisent que des éléments d'affichage et des gestion d'état et font appels aux fonctions des fichiers cités plus haut

Fonctionnement de l’application

Au démarrage

lib/celeneCLI.dart

  • L’application charge à l’aide de la classe DBManager le fichier db.json contenant les cours que l'utilisateur à ajouté, les fichiers téléchargés et les paramètres utilisateur

  • L’application en fonction de la valeur des clés credentialSaved, et secureStorageStatus, récupèrent les identifiants CAS enregistrés ainsi que la clé de déchiffrement du secureStorage

    Si secureStorageStatus est faux, le programme tentera de se connecter automatiquement et ne cherchera pas à charger une session

    Si credentialSaved est faux, le programme demande à l'utilisateur ses identifiants pour se connecter à Celene

  • [RESEAU] Une fois les identifiants chargé, le programme se connecte au CAS afin de créer une session à l’aide de fonction loginToCelene() de la classe CeleneParser() (qui fait appel à la méthode loginToCas() de la classe CASAuth)

    Si secureStorageStatus est vrai, le contenu de secStorage.key est déchiffré pour récupérer les données de la session précédente si existantes, ces données de session sont ensuite ajouté au CookieJar de l'attribut session de la classe CASAuth. Aucune connexion est initiée avec le CAS

    • Pour qu’une session soit chargée, les 3 éléments suivants doivent être respectés : Présence de tout les champs de connexion, Session vieille de 30 minutes au maximum, et configuration correcte du SecureStorage

  • Si la connexion a été réussie, on affiche la liste des cours enregistrés par l’utilisateur avec la classe ChooseCourseView

Lors de l’utilisation

  • [RESEAU] Si l'utilisateur sélectionne un cours (Entrée)
    • La vue ShowClassContentView est affiché à l'écran et on récupère le contenu de la page Celene à l'aide de la fonction getClassData de la classe CeleneParser (requête get sur l'adresse Celene + paramètre "id" du cours)
    • Dans le cas ou l’utilisateur clique sur une ressource, si celle-ci est téléchargée, elle est ouverte à l’aide de la fonction openFile de la classe FileEntry, autrement dit elle est téléchargé à l'aide de la méthode downloadElement() de la classe CeleneParser
  • Si l’utilisateur ajoute un cours manuellement (n)
    • Un nom et un url sont demandé et aucune requête n’est effectuée, seul le cours est ajouté
  • [RESEAU] Si l’utilisateur importe ses cours (i)
    • La vue ImportClassesView est affichée et une requête est faite vers celene à l’aide de la méthode getUserJoinedClasses() de la classe CeleneParser (requête get sur la page profil celene de l'utilisateur celene et parsing des cours rejoints à l'aide de Beautiful Soup)
  • Si l’utilisateur édite ses cours (e)
    • Pas encore implémenté
  • [RESEAU] Si l’utilisateur recherche un cours sur celene (s)
    • Pas encore implémenté
  • Si l’utilisateur entre dans les options (o)
    • La vue OptionsView est affichée et trois options sont présentées : Désactiver la connexion auto, désactiver la persistance de session et Réinitialiser le CLI
    • Désactiver la connexion automatique supprime le mot de passe CAS stocké dans le trousseau système, à l’aide de la méthode , et désactive la persistance de session (en supprimant le mots de passe de chiffrement)
    • Désactiver la persistance de session, désactive la sauvegarde de la session en passant le drapeau secureStorageStatus à false et supprime le mot de passe de chiffrement du SecureStorage
    • Réinitialiser le CLI supprime tout les fichiers associés aux cours celene et supprime le fichier db.json, et supprime les mots de passe enregistrés dans le trousseau système

A l'arrêt

  • L’application fait appel la méthode dump() de la classe DBManager pour sauvegarder les changements sur le disque (nouvelles ressources téléchargées, cours ajoutés, paramètres changés...)