hasTwoFactorEnabled()) { return $this->redirect(route('dashboard'), navigate: true); } $this->secret = (new Google2FA())->generateSecretKey(); } public function confirm() { $this->validate(); if (! (new Google2FA())->verifyKey($this->secret, preg_replace('/\s+/', '', $this->code))) { throw ValidationException::withMessages(['code' => 'Code stimmt nicht — prüfe die Uhrzeit der Authenticator-App.']); } Auth::user()->forceFill([ 'two_factor_secret' => $this->secret, 'two_factor_confirmed_at' => now(), ])->save(); return $this->redirect(route('dashboard'), navigate: true); } public function qrCode(): string { return (new Google2FA())->getQRCodeInline('Clusev', Auth::user()->email, $this->secret); } public function render() { return view('livewire.auth.two-factor-setup'); } }