verifierAppartenance($devoir); return view('devoirs.eleve', [ 'devoir' => $devoir, 'rendu' => RenduDevoir::where('devoir_id', $devoir->id)->where('eleve_id', $eleve->id)->first(), ]); } public function rendre(Request $request, Devoir $devoir): RedirectResponse { $eleve = $this->verifierAppartenance($devoir); abort_if($devoir->echeanceDepassee(), 409, 'L’échéance est dépassée.'); $donnees = $request->validate(['reponse' => ['required', 'string', 'max:10000']]); RenduDevoir::updateOrCreate( ['devoir_id' => $devoir->id, 'eleve_id' => $eleve->id], ['reponse' => $donnees['reponse'], 'rendu_a' => now()] ); return redirect()->route('devoirs.eleve.show', $devoir)->with('rendu_envoye', true); } private function verifierAppartenance(Devoir $devoir): Eleve { $eleve = Auth::guard('eleve')->user(); abort_if($devoir->classe_id !== $eleve->classe_id, 403); return $eleve; } }