Configurer la connexion Moodle
Configuration obligatoire pour la production
Le token d'accès Moodle est stocké chiffré avec Fernet. Pour la production, la variable d'environnement MOODLE_TOKEN_ENCRYPTION_KEY doit être définie avec une clé Fernet de 44 caractères. En son absence, l'application revient à un mécanisme par défaut inadapté à la production.
La connexion Moodle permet aux enseignants d'importer directement les résultats d'examens via API sans export CSV manuel. Cette configuration s'effectue une seule fois par institution, par un administrateur.
Prérequis dans Moodle
- Administration du site → Plugins → Services web → Vue d'ensemble: Activer les services web
- Activer le protocole REST
- Créer un service externe et lui assigner les fonctions suivantes:
mod_quiz_get_quizzes_by_coursesmod_quiz_get_user_attemptsmod_quiz_get_attempt_reviewcore_webservice_get_site_info(pour le bouton de test)- Générer un token pour un utilisateur système disposant des autorisations nécessaires
Générer la clé de chiffrement
Exécutez la commande suivante sur le serveur et saisissez le résultat comme valeur de MOODLE_TOKEN_ENCRYPTION_KEY dans le fichier .env:
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
La clé fait exactement 44 caractères et doit rester secrète. En cas de perte, tous les tokens enregistrés devront être ressaisis.
Configurer la connexion

- Accédez en tant qu'admin à
/admin/integrations/moodle - Cliquez sur Nouvelle connexion
- Remplissez les champs:
| Champ | Exemple | Remarque |
|---|---|---|
| Nom | «Moodle Haute école de Berne» | Nom d'affichage pour les enseignants |
| URL de base | https://moodle.example.ch |
Sans / final |
| Token | abc123... |
Copié depuis Moodle |
- Cliquez sur Tester la connexion — ExamCraft appelle
core_webservice_get_site_info. En cas de succès, le nom du site Moodle s'affiche en confirmation. - Enregistrer
Fonctionnement interne de l'import API
Lors de l'import, la séquence de requêtes suivante est exécutée:
mod_quiz_get_quizzes_by_courses— lister tous les quiz du coursmod_quiz_get_user_attempts— récupérer toutes les tentatives par étudiantmod_quiz_get_attempt_review— obtenir les réponses détaillées par tentative
La correspondance des questions s'effectue sur la base des ID de questions Moodle, que les enseignants saisissent une seule fois lors du Question-ID-Round-Trip.
Isolation multi-tenant
Chaque institution gère ses propres connexions. Les tokens et données de connexion ne sont pas accessibles d'une institution à l'autre.