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:
parent
15387d0a3f
commit
b42e0e3f62
3 changed files with 65 additions and 0 deletions
31
app/Http/Responses/FailedTwoFactorChallengeResponse.php
Normal file
31
app/Http/Responses/FailedTwoFactorChallengeResponse.php
Normal 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]);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue