validate([ 'email' => 'required|email', 'password' => 'required', ]); $user = User::where('email', $credentials['email'])->first(); if ($user && $user->status === 'suspended') { throw ValidationException::withMessages([ 'email' => ['Questo account รจ sospeso. Contatta un amministratore.'], ]); } if (Auth::attempt($credentials, $request->has('remember'))) { $request->session()->regenerate(); ActivityLog::logLogin(); return redirect()->intended('/dashboard'); } throw ValidationException::withMessages([ 'email' => ['Le credenziali fornite non sono corrette.'], ]); } public function logout(Request $request) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect('/'); } public function showForgotForm() { return view('auth.forgot-password'); } public function sendResetLink(Request $request) { $request->validate(['email' => 'required|email']); $user = User::where('email', $request->email)->first(); if (!$user) { return back()->withErrors(['email' => 'Nessun account trovato con questa email.']); } $token = Password::broker()->createToken($user); $user->sendPasswordResetNotification($token); return back()->with('success', 'Ti abbiamo inviato un link per il reset della password via email.'); } public function showResetForm(string $token) { return view('auth.reset-password', ['token' => $token]); } public function reset(Request $request) { $request->validate([ 'token' => 'required', 'email' => 'required|email', 'password' => 'required|string|min:8|confirmed', ]); $status = Password::broker()->reset( $request->only('email', 'password', 'password_confirmation', 'token'), function (User $user, string $password) { $user->forceFill([ 'password' => Hash::make($password), ])->save(); } ); if ($status === Password::PASSWORD_RESET) { return redirect()->route('login')->with('success', 'Password reimpostata con successo. Accedi con la nuova password.'); } return back()->withErrors(['email' => [__($status)]]); } }