Paillasse/portail/routes/web.php
Adam Belkacemi 8742bde807 ajoute le proxy console Go et le relais WebSocket vers nova-serialproxy
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-08 09:35:16 +02:00

86 lines
5.7 KiB
PHP

<?php
use App\Http\Controllers\Auth\ConnexionController;
use App\Http\Controllers\ClasseController;
use App\Http\Controllers\ConsoleController;
use App\Http\Controllers\EleveTableauDeBordController;
use App\Http\Controllers\InscriptionController;
use App\Http\Controllers\SeanceController;
use Illuminate\Support\Facades\Route;
Route::view('/', 'accueil')->name('accueil');
Route::view('/labs', 'labs.index')->name('labs.index');
Route::view('/labs/essai', 'labs.essai')->name('labs.essai');
Route::view('/cours', 'cours.index')->name('cours.index');
Route::view('/cours/adressage-ipv4', 'cours.show')->name('cours.show');
Route::view('/etablissements', 'etablissements')->name('etablissements');
Route::view('/tarifs', 'tarifs')->name('tarifs');
Route::view('/connexion', 'auth.connexion')->name('login');
Route::view('/inscription', 'auth.inscription')->name('register');
// Démo marketing (données fictives) : la vraie gestion de classe est sous /mes-classes.
Route::view('/classes/suivi', 'classes.suivi')->name('suivi');
Route::view('/examen', 'examen')->name('examen');
// À brancher sur l'envoi d'e-mail (Mail::to('adam@belkacemi.me')->send(...)).
Route::post('/contact', fn () => back()->with('contact_ok', true))->name('contact');
Route::view('/fonctionnalites', 'fonctionnalites')->name('fonctionnalites');
Route::view('/legal', 'legal')->name('legal');
Route::view('/cours/adressage-ipv4/cm', 'cours.cm')->name('cours.cm');
Route::view('/banque', 'banque')->name('banque');
Route::view('/quiz/projection', 'quiz.projection')->name('quiz.projection');
Route::view('/quiz', 'quiz.eleve')->name('quiz.eleve');
Route::view('/ide', 'ide')->name('ide');
Route::view('/bibliotheque', 'bibliotheque')->name('bibliotheque');
Route::view('/generateur', 'generateur')->name('generateur');
Route::view('/labs/web', 'labs.web')->name('labs.web');
Route::view('/maison', 'maison')->name('maison');
Route::view('/devoirs', 'devoirs')->name('devoirs');
Route::view('/td/imprimer', 'td.imprimable')->name('td.imprimable');
Route::view('/cockpit', 'cockpit')->name('cockpit');
// Démo marketing (données fictives), distincte de /eleve (vrai tableau de bord).
Route::view('/mon-espace', 'espace-eleve')->name('espace.eleve');
Route::view('/vie-scolaire', 'vie-scolaire')->name('vie.scolaire');
Route::view('/eleves/fiche', 'fiche-eleve')->name('fiche.eleve');
Route::view('/correction', 'correction')->name('correction');
Route::view('/sujets/creer', 'sujet-creer')->name('sujet.creer');
Route::view('/messagerie', 'messagerie')->name('messagerie');
Route::view('/exports', 'export-ent')->name('export.ent');
Route::view('/aide', 'aide')->name('aide');
Route::view('/academie', 'academie')->name('academie');
Route::view('/paiement', 'paiement')->name('paiement');
Route::view('/paiement/confirme', 'paiement-ok')->name('paiement.ok');
Route::view('/compte/facturation', 'facturation')->name('facturation');
Route::view('/cours/fiche', 'cours.fiche')->name('cours.fiche');
Route::view('/etablissement', 'espace-etablissement')->name('espace.etablissement');
Route::view('/integration', 'integration')->name('integration');
Route::view('/cohortes', 'cohortes')->name('cohortes');
Route::view('/ressources/outil', 'ressource')->name('ressource');
Route::view('/visio', 'visio')->name('visio');
// --- Authentification (étape 8) ---
Route::post('/connexion/prof', [ConnexionController::class, 'connexionProf'])->name('connexion.prof');
Route::post('/connexion/eleve', [ConnexionController::class, 'connexionEleve'])->name('connexion.eleve');
Route::get('/connexion/qr/{jeton}', [ConnexionController::class, 'connexionParQr'])->name('connexion.qr');
Route::post('/inscription', [InscriptionController::class, 'store'])->name('inscription.store');
Route::post('/deconnexion', [ConnexionController::class, 'deconnexion'])->name('deconnexion');
// --- Espace élève (protégé, session unique) ---
Route::middleware(['auth:eleve', 'session.unique:eleve'])->group(function () {
Route::get('/eleve', [EleveTableauDeBordController::class, 'show'])->name('eleve');
Route::post('/seances/{seance}/rejoindre', [SeanceController::class, 'rejoindre'])->name('seances.rejoindre');
Route::get('/seances/{seance}/attente-eleve', [SeanceController::class, 'attenteEleve'])->name('seances.eleve.attente');
Route::post('/lab-sessions/{labSession}/console', [ConsoleController::class, 'pourEleve'])->name('console.eleve');
});
// --- Espace prof (protégé, session unique) ---
Route::middleware(['auth:web', 'session.unique:web'])->group(function () {
Route::get('/mes-classes', [ClasseController::class, 'index'])->name('mes-classes.index');
Route::get('/mes-classes/{classe}', [ClasseController::class, 'show'])->name('mes-classes.show');
Route::post('/mes-classes/{classe}/eleves', [ClasseController::class, 'storeEleve'])->name('mes-classes.eleves.store');
Route::post('/mes-classes/{classe}/eleves/import', [ClasseController::class, 'importerCsv'])->name('mes-classes.eleves.importer');
Route::post('/mes-classes/{classe}/eleves/{eleve}/regenerer-code', [ClasseController::class, 'regenererCode'])->name('mes-classes.eleves.regenererCode');
Route::post('/mes-classes/{classe}/seances', [SeanceController::class, 'store'])->name('mes-classes.seances.store');
Route::get('/seances/{seance}/attente', [SeanceController::class, 'attente'])->name('seances.attente');
Route::post('/seances/{seance}/admettre/{labSession}', [SeanceController::class, 'admettre'])->name('seances.admettre');
Route::get('/seances/{seance}/labsessions/{labSession}/console', [SeanceController::class, 'consoleProf'])->name('seances.console.prof.page');
Route::post('/seances/{seance}/labsessions/{labSession}/console', [ConsoleController::class, 'pourProf'])->name('console.prof');
});