presseportale/app/Http/Responses/FailedTwoFactorChallengeResponse.php
Kevin Adametz b42e0e3f62 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>
2026-07-07 10:58:17 +00:00

31 lines
1.1 KiB
PHP

<?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]);
}
}