has('2fa.user')) { return $this->redirect(route('login'), navigate: true); } } public function verify() { $this->validate(); $user = User::find(session('2fa.user')); if (! $user || ! $user->hasTwoFactorEnabled()) { session()->forget(['2fa.user', '2fa.remember']); throw ValidationException::withMessages(['code' => 'Sitzung abgelaufen. Bitte erneut anmelden.']); } $valid = (new Google2FA())->verifyKey($user->two_factor_secret, preg_replace('/\s+/', '', $this->code)); if (! $valid) { throw ValidationException::withMessages(['code' => 'Ungültiger Code.']); } $remember = (bool) session('2fa.remember'); session()->forget(['2fa.user', '2fa.remember']); Auth::login($user, $remember); session()->regenerate(); return $this->redirectIntended(route('dashboard'), navigate: true); } public function render() { return view('livewire.auth.two-factor-challenge'); } }