permet aux élèves de rejoindre leur classe avec son code, et les fiches en lot
L'élève saisit le code de classe et son prénom, le prof accepte, l'élève voit une seule fois son identifiant et son code. Aucun e-mail. Le prof peut aussi régénérer les fiches de plusieurs élèves d'un coup. Procédure pour prouver la copie de la clé des sauvegardes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
1ac8d4773a
commit
dd4f9c3c55
21 changed files with 573 additions and 26 deletions
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
use App\Models\DemandeInscription;
|
||||
use Illuminate\Foundation\Inspiring;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\Schedule;
|
||||
|
|
@ -20,3 +21,6 @@ Schedule::command('horizon:snapshot')->everyFiveMinutes();
|
|||
// Étape 14 (RGPD) : classes archivées depuis 90 jours supprimées avec les
|
||||
// données de leurs élèves.
|
||||
Schedule::command('classes:purger-archivees')->dailyAt('02:30');
|
||||
|
||||
// Demandes pour rejoindre une classe non traitées depuis une heure : supprimées.
|
||||
Schedule::command('model:prune', ['--model' => [DemandeInscription::class]])->everyFifteenMinutes();
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ use App\Http\Controllers\CorrectionController;
|
|||
use App\Http\Controllers\EleveTableauDeBordController;
|
||||
use App\Http\Controllers\InscriptionController;
|
||||
use App\Http\Controllers\RapportCspController;
|
||||
use App\Http\Controllers\RejoindreClasseController;
|
||||
use App\Http\Controllers\SeanceController;
|
||||
use Illuminate\Foundation\Http\Middleware\ValidateCsrfToken;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
|
@ -71,6 +72,13 @@ Route::post('/connexion/prof', [ConnexionController::class, 'connexionProf'])->n
|
|||
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');
|
||||
|
||||
// Un élève rejoint une classe avec son code ; le prof accepte (aucun e-mail).
|
||||
Route::get('/rejoindre', [RejoindreClasseController::class, 'formulaire'])->name('rejoindre');
|
||||
Route::post('/rejoindre', [RejoindreClasseController::class, 'demander'])->middleware('throttle:10,1')->name('rejoindre.demander');
|
||||
Route::get('/rejoindre/attente', [RejoindreClasseController::class, 'attente'])->name('rejoindre.attente');
|
||||
Route::get('/rejoindre/etat', [RejoindreClasseController::class, 'etat'])->name('rejoindre.etat');
|
||||
Route::get('/rejoindre/bienvenue', [RejoindreClasseController::class, 'bienvenue'])->name('rejoindre.bienvenue');
|
||||
Route::post('/deconnexion', [ConnexionController::class, 'deconnexion'])->name('deconnexion');
|
||||
|
||||
// --- Espace élève (protégé, session unique) ---
|
||||
|
|
@ -92,6 +100,10 @@ Route::middleware(['auth:web', 'session.unique:web'])->group(function () {
|
|||
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}/demandes/{demande}/accepter', [ClasseController::class, 'accepterDemande'])->name('mes-classes.demandes.accepter');
|
||||
Route::post('/mes-classes/{classe}/demandes/{demande}/refuser', [ClasseController::class, 'refuserDemande'])->name('mes-classes.demandes.refuser');
|
||||
Route::get('/mes-classes/{classe}/demandes/nombre', [ClasseController::class, 'nombreDemandes'])->name('mes-classes.demandes.nombre');
|
||||
Route::post('/mes-classes/{classe}/fiches', [ClasseController::class, 'nouvellesFiches'])->name('mes-classes.fiches');
|
||||
Route::post('/mes-classes/{classe}/archiver', [ClasseController::class, 'archiver'])->name('mes-classes.archiver');
|
||||
Route::post('/mes-classes/{classe}/desarchiver', [ClasseController::class, 'desarchiver'])->name('mes-classes.desarchiver');
|
||||
Route::post('/mes-classes/{classe}/seances', [SeanceController::class, 'store'])->name('mes-classes.seances.store');
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue