redirect(); } public function callback(Request $request, SocialAuthService $social, LoginCompletion $completion): RedirectResponse { try { $googleUser = Socialite::driver('google')->user(); } catch (\Throwable) { return redirect()->route('login')->withErrors([ 'email' => __('Die Anmeldung mit Google ist fehlgeschlagen. Bitte versuchen Sie es erneut.'), ]); } $user = $social->resolveUser( 'google', (string) $googleUser->getId(), $googleUser->getEmail(), $googleUser->getName(), ); if (! $user || ! $user->is_active) { return redirect()->route('login')->withErrors([ 'email' => __('Ihr Konto ist nicht aktiv. Bitte wenden Sie sich an den Support.'), ]); } // 2FA aktiv: wie Passwort- und Magic-Link-Login nicht direkt einloggen, // sondern in Fortifys Challenge übergeben (Audit F02). Google belegt // den Besitz des Postfachs, nicht den zweiten Faktor. // // Kein erzwungenes „Angemeldet bleiben" mehr (Audit K-08): wie beim // Magic Link nur die Sitzung, siehe LoginCompletion. if ($user->hasEnabledTwoFactorAuthentication()) { $completion->handOffToTwoFactor($request, $user, 'google'); return redirect()->route('two-factor.challenge'); } $completion->login($request, $user, 'google'); return redirect(LoginRedirect::safeTarget( $user, $request->session()->pull('url.intended'), LoginRedirect::homeFor($user), )); } }