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); } }