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>
31 lines
1.1 KiB
PHP
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]);
|
|
}
|
|
}
|