2FA-Challenge: Fehlversuch crasht nicht mehr (Route two-factor.login fehlt)

Fortifys FailedTwoFactorLoginResponse leitet auf die Route
two-factor.login um, die bei views => false nie registriert wird
(RouteNotFoundException). Eigener Response leitet zurück auf die
Volt-Challenge-Seite und meldet den Fehler auf Deutsch.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-07 10:58:17 +00:00
parent 15387d0a3f
commit b42e0e3f62
3 changed files with 65 additions and 0 deletions

View file

@ -0,0 +1,31 @@
<?php
namespace App\Http\Responses;
use Illuminate\Validation\ValidationException;
use Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse;
use Symfony\Component\HttpFoundation\Response;
/**
* Ersetzt Fortifys FailedTwoFactorLoginResponse: Der Standard leitet auf die
* Fortify-Route `two-factor.login` um, die bei `views => false` nicht
* registriert ist (RouteNotFoundException). Wir leiten stattdessen zurück auf
* unsere Volt-Challenge-Seite.
*/
class FailedTwoFactorChallengeResponse implements FailedTwoFactorLoginResponse
{
public function toResponse($request): Response
{
[$key, $message] = $request->filled('recovery_code')
? ['recovery_code', __('Der eingegebene Wiederherstellungs-Code ist ungültig.')]
: ['code', __('Der eingegebene Code ist ungültig. Bitte versuchen Sie es mit einem aktuellen Code erneut.')];
if ($request->wantsJson()) {
throw ValidationException::withMessages([
$key => [$message],
]);
}
return redirect()->route('two-factor.challenge')->withErrors([$key => $message]);
}
}