user()->hasVerifiedEmail()) { return redirect()->route('dashboard'); } return view('auth.verifica-email', [ 'user' => $request->user(), 'postaFunzionante' => $posta->funzionante(), ]); } public function invia(Request $request) { $user = $request->user(); if ($user->hasVerifiedEmail()) { return redirect()->route('dashboard'); } try { $user->sendEmailVerificationNotification(); } catch (\Throwable $e) { Log::warning('Email di conferma non inviata.', ['user' => $user->id, 'exception' => $e]); return back()->with('error', 'L\'email non è partita: il server di posta non risponde o rifiuta l\'invio. Avvisa un amministratore.'); } return back()->with('success', "Email inviata a {$user->email}. Apri il link che contiene (controlla anche lo spam)."); } public function conferma(Request $request, int $id, string $hash) { $user = User::find($id); // La firma garantisce id e scadenza; l'hash lega il link all'indirizzo // di allora, così un link vecchio non conferma un'email cambiata dopo. if (! $user || ! hash_equals(sha1($user->getEmailForVerification()), $hash)) { abort(403, 'Link di conferma non valido.'); } if (! $user->hasVerifiedEmail()) { $user->markEmailAsVerified(); event(new Verified($user)); activity()->causedBy($user)->log('email_confermata'); } $messaggio = 'Indirizzo email confermato.'; if ($request->user()?->is($user)) { return redirect()->route('dashboard')->with('success', $messaggio); } return redirect()->route('login')->with('success', $messaggio . ' Ora puoi accedere.'); } }