Paillasse/docs/runbooks/lti-moodle.md

75 lines
3.2 KiB
Markdown
Raw Normal View History

# Runbook — Moodle LTI 1.3
6ᵉ façon de rejoindre une classe (V2, CLAUDE.md section 6) : un élève
clique sur l'activité Moodle, atterrit connecté sur son tableau de bord
Syllabus habituel. Détail des choix :
[ADR 0010](../adr/0010-lti-moodle-comme-sixieme-facon-de-rejoindre.md).
## Étape 1 — Côté Moodle : ajouter Syllabus comme outil externe
Administration du site → Plugins → Outils externes → Gérer les outils →
Configurer un outil manuellement. Renseigner :
| Champ Moodle | Valeur |
|---|---|
| URL de l'outil | `https://syllabuslab.fr/lti/lancement/<code de la classe>` (visible sur la page de la classe, section « Lier à Moodle ») |
| LTI version | 1.3 |
| Initiate login URL | `https://syllabuslab.fr/lti/connexion` |
| Redirection URIs | la même URL de lancement que ci-dessus |
| Public key type | Clé publique au format JWKS |
| Jeu de clés publiques (URL) | `https://syllabuslab.fr/lti/cles.json` |
Après enregistrement, Moodle **affiche** un « Platform ID », un
« Client ID », une « Public keyset URL », une « Access token URL » et une
« Authentication request URL » — ce sont ces valeurs-là (celles de
Moodle, pas les nôtres) qu'il faut passer à l'étape 2.
## Étape 2 — Côté serveur : enregistrer la plateforme
```
ssh paillasse
cd /var/www/portail
sudo -u www-data HOME=/tmp php8.3 artisan lti:enregistrer-plateforme \
"<Platform ID affiché par Moodle>" \
"<Client ID affiché par Moodle>" \
"<Public keyset URL affichée par Moodle>" \
"<Access token URL affichée par Moodle>" \
"<Authentication request URL affichée par Moodle>"
```
La commande génère et stocke une paire de clés RSA pour le portail (jamais
collée par Adam) et rappelle les deux adresses déjà saisies à l'étape 1.
## Étape 3 — Ajouter l'outil à un cours, puis enregistrer le déploiement
Dans le cours Moodle : ajouter une activité « Outil externe » pointant
vers Syllabus. Une fois ajoutée, Moodle affiche un **Deployment ID** pour
cette combinaison outil/cours — à enregistrer :
```
sudo -u www-data HOME=/tmp php8.3 artisan lti:enregistrer-deploiement <id_plateforme> <deployment_id>
```
`<id_plateforme>` est l'identifiant numérique affiché à l'étape 2
(« Plateforme #… enregistrée »).
## Vérifier que ça fonctionne
Un élève qui clique sur l'activité dans Moodle doit atterrir connecté sur
`/eleve`, dans la bonne classe. En cas d'échec, Moodle affiche en général
le message d'erreur renvoyé par le portail (page « Le lancement depuis
Moodle n'a pas fonctionné ») :
| Message | Cause probable |
|---|---|
| Classe introuvable ou archivée | Le code dans l'URL de lancement ne correspond à aucune classe active |
| LTI 1.3 Registration not found… | Étape 2 pas faite, ou Platform ID/Client ID mal recopiés |
| Unable to find deployment | Étape 3 pas faite pour ce cours précis |
| Please make sure you have cookies… | Cookies tiers bloqués côté navigateur de l'élève, ou horloge du serveur décalée |
## Un élève change d'identité Moodle ou rejoint depuis deux cours
Peu probable, mais si ça arrive : un nouveau compte serait créé (l'élève
est retrouvé par `lti_sub`, propre à Moodle). Pas de fusion automatique —
à faire à la main si ça se produit réellement.