validate([ 'email' => ['required', 'string', 'max:255'], 'password' => ['required', 'string', 'min:6'], 'remember' => ['nullable', 'boolean'], ]); $throttleKey = Str::transliterate(Str::lower($credentials['email']) . '|' . $request->ip()); if (RateLimiter::tooManyAttempts($throttleKey, 5)) { $seconds = RateLimiter::availableIn($throttleKey); return back() ->withErrors(['email' => "Troppi tentativi. Riprova tra {$seconds} secondi."]) ->withInput($request->only('email', 'remember')); } $identificativo = trim($credentials['email']); $campo = str_contains($identificativo, '@') ? 'email' : 'username'; if (! Auth::attempt([ $campo => $campo === 'username' ? Str::lower($identificativo) : $identificativo, 'password' => $credentials['password'], ], $request->boolean('remember'))) { RateLimiter::hit($throttleKey); return back() ->withErrors(['email' => 'Credenziali non valide.']) ->withInput($request->only('email', 'remember')); } // Utenza disattivata (gruppo di servizio sciolto): la password è giusta // ma non si entra. if (Auth::user()->isDisattivato()) { Auth::logout(); return back() ->withErrors(['email' => 'Questa utenza è stata disattivata.']) ->withInput($request->only('email', 'remember')); } RateLimiter::clear($throttleKey); $request->session()->regenerate(); activity()->causedBy(auth()->user())->log('login'); // Il sorvegliante di gruppo va dritto al suo gruppo. if (Auth::user()->isSorvegliante() && Auth::user()->roles->count() === 1) { return redirect()->route('mio-gruppo'); } return redirect()->intended(route('dashboard')); } }