Paillasse/portail/app/Console/Commands/EnregistrerDeploiementLti.php
Adam Belkacemi 91d7cde4c1 ajoute Moodle LTI 1.3 (V2), une 6e façon de rejoindre une classe
LTI authentifie l'élève et le fait rejoindre sa classe (même code que
le code/QR existant), pas lancer un lab précis - relecture du
CLAUDE.md qui liste LTI avec les autres façons d'ajouter des élèves.
packbackbooks/lti-1p3-tool (Apache-2.0, recommandé par le CLAUDE.md),
trois ponts vers Redis/cookies/MariaDB, élève retrouvé par identité
Moodle stable pour ne jamais créer de doublon. Enregistrement d'une
plateforme/d'un déploiement par commande Artisan (opération rare,
faite à la main par Adam), jamais une page d'administration.

Corrige au passage un vrai bug préexistant trouvé en vérifiant en réel
sur le serveur : withoutMiddleware(ValidateCsrfToken::class) sur une
route ne retire jamais le vrai middleware CSRF (ValidateCsrfToken est
un alias déprécié de PreventRequestForgery, pas la classe réellement
enregistrée) - /csp-rapport avait le même défaut depuis l'étape 14,
invisible faute de surveillance. Corrigé pour les deux par la bonne
méthode (validateCsrfTokens except, dans bootstrap/app.php).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-14 13:51:47 +02:00

38 lines
1.1 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Console\Commands;
use App\Models\LtiDeploiement;
use App\Models\LtiPlateforme;
use Illuminate\Console\Command;
/**
* Enregistre un déploiement (V2, LTI 1.3) : Moodle en crée un chaque fois
* que l'outil est ajouté à un cours, affiché dans la configuration de
* l'activité. Un lancement dont le déploiement n'est pas enregistré est
* refusé.
*/
class EnregistrerDeploiementLti extends Command
{
protected $signature = 'lti:enregistrer-deploiement {plateforme_id} {deployment_id}';
protected $description = 'Enregistre un déploiement Moodle (ajout de l’outil à un cours)';
public function handle(): void
{
$plateforme = LtiPlateforme::find($this->argument('plateforme_id'));
if ($plateforme === null) {
$this->error('Plateforme introuvable.');
return;
}
LtiDeploiement::create([
'lti_plateforme_id' => $plateforme->id,
'deployment_id' => $this->argument('deployment_id'),
]);
$this->info('Déploiement enregistré.');
}
}