fix: parse JSON error messages and redirect to dashboard
All checks were successful
Deploy Development / deploy (push) Successful in 53s
Build Test / lint-backend (push) Successful in 0s
Build Test / build-frontend (push) Successful in 13s

1. Parse JSON error responses to extract 'detail' field
   Fixes: {"detail":"..."} shown as raw JSON instead of clean text
2. Redirect 'already_verified' to '/' instead of '/login'
   Fixes: Users land on empty page when already logged in
3. Change button text: "Jetzt anmelden" → "Weiter zum Dashboard"

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Lars 2026-03-21 12:35:04 +01:00
parent 1cd93d521e
commit 3dc3774d76

View File

@ -42,15 +42,23 @@ export default function Verify() {
setError('Verifizierung erfolgreich, aber Login fehlgeschlagen')
}
} catch (err) {
const errorMsg = err.message || 'Verifizierung fehlgeschlagen'
let errorMsg = err.message || 'Verifizierung fehlgeschlagen'
// Try to parse JSON error response
try {
const parsed = JSON.parse(errorMsg)
if (parsed.detail) errorMsg = parsed.detail
} catch (e) {
// Not JSON, use as-is
}
// Check if already verified or already used
if (errorMsg.includes('bereits bestätigt') || errorMsg.includes('already verified') ||
errorMsg.includes('bereits verwendet') || errorMsg.includes('already used')) {
setStatus('already_verified')
setError(errorMsg) // Show the actual message
// Auto-redirect to login after 3 seconds
setTimeout(() => { window.location.href = '/login' }, 3000)
// Auto-redirect to dashboard after 3 seconds (let App.jsx decide login vs dashboard)
setTimeout(() => { window.location.href = '/' }, 3000)
}
// Check if token expired
else if (errorMsg.includes('abgelaufen') || errorMsg.includes('expired')) {
@ -218,10 +226,10 @@ export default function Verify() {
</div>
<button
onClick={() => navigate('/login')}
onClick={() => { window.location.href = '/' }}
className="btn btn-primary btn-full"
>
Jetzt anmelden
Weiter zum Dashboard
</button>
</div>
)