ajoute la visio de classe : Jitsi auto-hébergé, jetons du portail, prof seul modérateur
Jitsi (docker-jitsi-meet, version figée) derrière Nginx sur meet.syllabuslab.fr, accès par jeton JWT signé par le portail, modération du micro, mains levées synchronisées avec l'application. Pare-feu : UDP 10000 et pont interne br-visio (accords d'Adam). Jicofo n'authentifie plus lui-même : il donnait le rôle de propriétaire aux élèves. Capacité ramenée à 20 VM. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
dd4f9c3c55
commit
ec4eae3744
36 changed files with 1406 additions and 18 deletions
31
portail/tests/Reels/preparer-visio.php
Normal file
31
portail/tests/Reels/preparer-visio.php
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
|
||||
// Données de test de la visio (étape 15), sur le serveur :
|
||||
// sudo -u www-data HOME=/tmp php8.3 artisan tinker tests/Reels/preparer-visio.php
|
||||
// Identifiants dans un fichier 600, jamais affichés. À supprimer après le test.
|
||||
|
||||
use App\Models\Classe;
|
||||
use App\Models\Eleve;
|
||||
use App\Models\Etablissement;
|
||||
use App\Models\Lab;
|
||||
use App\Models\Seance;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
$etablissement = Etablissement::create(['nom' => 'Lycée Test Visio', 'ville' => 'Test']);
|
||||
$motDePasse = Str::password(24, symbols: false);
|
||||
$prof = User::create(['name' => 'Prof Visio', 'email' => 'prof-visio@syllabus.test', 'password' => $motDePasse, 'etablissement_id' => $etablissement->id]);
|
||||
$classe = Classe::create(['etablissement_id' => $etablissement->id, 'user_id' => $prof->id, 'nom' => 'Classe Test Visio', 'formation' => 'Test']);
|
||||
$eleves = [];
|
||||
foreach ([['Lea', 'Martin', 'lea.visio'], ['Yanis', 'Bernard', 'yanis.visio']] as [$prenom, $nom, $identifiant]) {
|
||||
$code = Str::upper(Str::random(6));
|
||||
Eleve::create(['classe_id' => $classe->id, 'prenom' => $prenom, 'nom' => $nom, 'identifiant' => $identifiant, 'code_secret' => Hash::make($code), 'jeton_qr' => Str::random(32)]);
|
||||
$eleves[] = ['identifiant' => $identifiant, 'code' => $code];
|
||||
}
|
||||
$seance = Seance::create(['classe_id' => $classe->id, 'lab_id' => Lab::where('identifiant', '08-deux-lan-routeur')->value('id'), 'statut' => Seance::SALLE_ATTENTE, 'demarree_a' => now()]);
|
||||
|
||||
$fichier = '/tmp/visio-identifiants.json';
|
||||
file_put_contents($fichier, json_encode(['prof' => ['email' => $prof->email, 'mot_de_passe' => $motDePasse], 'eleves' => $eleves, 'seance_id' => $seance->id]));
|
||||
chmod($fichier, 0600);
|
||||
echo "données de test prêtes (séance {$seance->id})\n";
|
||||
Loading…
Add table
Add a link
Reference in a new issue