ajoute le portail Laravel : connexion prof/élève, session unique, gestion de classe, salle d'attente
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
aa31b6112f
commit
30e14b1c54
191 changed files with 25324 additions and 0 deletions
63
portail/app/Http/Controllers/InscriptionController.php
Normal file
63
portail/app/Http/Controllers/InscriptionController.php
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Classe;
|
||||
use App\Models\Etablissement;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
class InscriptionController extends Controller
|
||||
{
|
||||
public function store(Request $request): RedirectResponse
|
||||
{
|
||||
$donnees = $request->validate([
|
||||
'prenom' => ['required', 'string', 'max:100'],
|
||||
'nom' => ['required', 'string', 'max:100'],
|
||||
'email' => ['required', 'email', 'unique:users,email'],
|
||||
'password' => ['required', 'string', 'min:8', 'confirmed'],
|
||||
'etablissement_nom_liste' => ['required', 'string'],
|
||||
'etablissement_nom' => ['required_if:etablissement_nom_liste,autre', 'nullable', 'string', 'max:150'],
|
||||
'etablissement_ville' => ['required_if:etablissement_nom_liste,autre', 'nullable', 'string', 'max:100'],
|
||||
'etablissement_uai' => ['nullable', 'string', 'max:20'],
|
||||
'formation' => ['nullable', 'string', 'max:100'],
|
||||
'classe' => ['required', 'string', 'max:100'],
|
||||
]);
|
||||
|
||||
[$prof, $classe] = DB::transaction(function () use ($donnees) {
|
||||
$etablissement = $donnees['etablissement_nom_liste'] === 'autre'
|
||||
? Etablissement::firstOrCreate(
|
||||
['nom' => $donnees['etablissement_nom']],
|
||||
['ville' => $donnees['etablissement_ville'], 'uai' => $donnees['etablissement_uai'] ?? null],
|
||||
)
|
||||
: Etablissement::firstOrCreate(['nom' => $donnees['etablissement_nom_liste']]);
|
||||
|
||||
$prof = User::create([
|
||||
'name' => trim($donnees['prenom'].' '.$donnees['nom']),
|
||||
'email' => $donnees['email'],
|
||||
'password' => Hash::make($donnees['password']),
|
||||
'etablissement_id' => $etablissement->id,
|
||||
]);
|
||||
|
||||
$classe = Classe::create([
|
||||
'etablissement_id' => $etablissement->id,
|
||||
'user_id' => $prof->id,
|
||||
'nom' => $donnees['classe'],
|
||||
'formation' => $donnees['formation'] ?? null,
|
||||
]);
|
||||
|
||||
return [$prof, $classe];
|
||||
});
|
||||
|
||||
Auth::guard('web')->login($prof);
|
||||
$request->session()->regenerate();
|
||||
$request->session()->put('jeton_session_web', $prof->demarreNouvelleSession());
|
||||
|
||||
return redirect()->route('mes-classes.show', $classe)
|
||||
->with('classe_creee', true);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue