Moodle-Connection einrichten
Pflicht-Konfiguration für Produktivbetrieb
Der Moodle-Zugriffs-Token wird mit Fernet verschlüsselt gespeichert. Für den Produktivbetrieb muss die Umgebungsvariable MOODLE_TOKEN_ENCRYPTION_KEY mit einem 44-Zeichen-Fernet-Key gesetzt sein. Fehlt sie, fällt die Anwendung auf einen Default-Mechanismus zurück, der für die Produktion ungeeignet ist.
Die Moodle-Connection erlaubt Lehrpersonen den direkten API-Import von Prüfungsresultaten ohne manuellen CSV-Export. Diese Einrichtung erfolgt einmalig pro Institution durch einen Administrator.
Voraussetzungen in Moodle
- Website-Administration → Plugins → Web Services → Überblick: Web Services aktivieren
- REST-Protokoll aktivieren
- Einen externen Dienst anlegen und folgende Funktionen zuweisen:
mod_quiz_get_quizzes_by_coursesmod_quiz_get_user_attemptsmod_quiz_get_attempt_reviewcore_webservice_get_site_info(für den Test-Button)- Token für einen Systembenutzer mit den nötigen Berechtigungen generieren
Encryption-Key generieren
Führen Sie folgenden Befehl auf dem Server aus und tragen Sie den Output als MOODLE_TOKEN_ENCRYPTION_KEY in die .env-Datei ein:
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
Der Key hat exakt 44 Zeichen und muss geheim gehalten werden. Bei Verlust müssen alle gespeicherten Tokens neu eingetragen werden.
Connection einrichten

- Navigieren Sie als Admin zu
/admin/integrations/moodle - Klicken Sie auf Neue Verbindung
- Füllen Sie die Felder aus:
| Feld | Beispiel | Hinweis |
|---|---|---|
| Name | „Moodle Hochschule Bern" | Anzeigename für Lehrpersonen |
| Base-URL | https://moodle.example.ch |
Ohne abschliessendes / |
| Token | abc123... |
Aus Moodle kopiert |
- Klicken Sie auf Verbindung testen — ExamCraft ruft
core_webservice_get_site_infoauf. Bei Erfolg erscheint der Moodle-Sitename als Bestätigung. - Speichern
Wie der API-Import intern funktioniert
Beim Import läuft folgende Abfragesequenz:
mod_quiz_get_quizzes_by_courses— alle Quizze im Kurs auflistenmod_quiz_get_user_attempts— alle Versuche pro Studierenden holenmod_quiz_get_attempt_review— Detailantworten pro Versuch abrufen
Die Fragen-Zuordnung erfolgt anhand der Moodle-Fragen-IDs, die Lehrpersonen einmalig im Question-ID-Round-Trip hinterlegen.
Multi-Tenant-Isolation
Jede Institution verwaltet ihre eigenen Connections. Tokens und Verbindungsdaten sind institutionsübergreifend nicht zugänglich.