Repository navigation
Home
Ce document vise à expliquer le fonctionnement de l’application
-
Tout les fichiers cités ici sont dans le dossier
libà la racine du projet à l’exception de l'entrypoint qui est dans le dossierbin-
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 classeCASAuthqui gère la connexion avec le CAS (Central Authentifcation System) et gérant la persistance au niveau de la connexion → Utilisée dans la classeCeleneParser -
model/celeneObject.dart: Fichier contenant la classeCeleneParserqui 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 classeSecureStoragequi 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 classeDBManagerqui gère l'enregistrement des cours et fichiers téléchargés -
KeychainAPI/keyring.dart: Fichier contenant la classeKeyringfaisant l'interface avec le trousseau de clés du système d'exploitation → utilisée dans la classeSecretManager
Les fichiers dans les dossiers
viewetcontrollern'introduisent que des éléments d'affichage et des gestion d'état et font appels aux fonctions des fichiers cités plus haut -
lib/celeneCLI.dart
-
L’application charge à l’aide de la classe
DBManagerle fichierdb.jsoncontenant 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, etsecureStorageStatus, récupèrent les identifiants CAS enregistrés ainsi que la clé de déchiffrement du secureStorageSi
secureStorageStatusest faux, le programme tentera de se connecter automatiquement et ne cherchera pas à charger une sessionSi
credentialSavedest 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 classeCeleneParser()(qui fait appel à la méthodeloginToCas()de la classeCASAuth)Si
secureStorageStatusest vrai, le contenu desecStorage.keyest 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é auCookieJarde l'attributsessionde la classeCASAuth. 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
- [RESEAU] Si l'utilisateur sélectionne un cours (
Entrée)- La vue
ShowClassContentViewest affiché à l'écran et on récupère le contenu de la page Celene à l'aide de la fonctiongetClassDatade la classeCeleneParser(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
openFilede la classeFileEntry, autrement dit elle est téléchargé à l'aide de la méthodedownloadElement()de la classeCeleneParser
- La vue
- 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
ImportClassesViewest affichée et une requête est faite vers celene à l’aide de la méthodegetUserJoinedClasses()de la classeCeleneParser(requête get sur la page profil celene de l'utilisateur celene et parsing des cours rejoints à l'aide de Beautiful Soup)
- La vue
- 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àfalseet 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
- L’application fait appel la méthode
dump()de la classeDBManagerpour sauvegarder les changements sur le disque (nouvelles ressources téléchargées, cours ajoutés, paramètres changés...)