fix: parse JSON error messages and redirect to dashboard
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:
parent
1cd93d521e
commit
3dc3774d76
|
|
@ -42,15 +42,23 @@ export default function Verify() {
|
||||||
setError('Verifizierung erfolgreich, aber Login fehlgeschlagen')
|
setError('Verifizierung erfolgreich, aber Login fehlgeschlagen')
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} 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
|
// Check if already verified or already used
|
||||||
if (errorMsg.includes('bereits bestätigt') || errorMsg.includes('already verified') ||
|
if (errorMsg.includes('bereits bestätigt') || errorMsg.includes('already verified') ||
|
||||||
errorMsg.includes('bereits verwendet') || errorMsg.includes('already used')) {
|
errorMsg.includes('bereits verwendet') || errorMsg.includes('already used')) {
|
||||||
setStatus('already_verified')
|
setStatus('already_verified')
|
||||||
setError(errorMsg) // Show the actual message
|
setError(errorMsg) // Show the actual message
|
||||||
// Auto-redirect to login after 3 seconds
|
// Auto-redirect to dashboard after 3 seconds (let App.jsx decide login vs dashboard)
|
||||||
setTimeout(() => { window.location.href = '/login' }, 3000)
|
setTimeout(() => { window.location.href = '/' }, 3000)
|
||||||
}
|
}
|
||||||
// Check if token expired
|
// Check if token expired
|
||||||
else if (errorMsg.includes('abgelaufen') || errorMsg.includes('expired')) {
|
else if (errorMsg.includes('abgelaufen') || errorMsg.includes('expired')) {
|
||||||
|
|
@ -218,10 +226,10 @@ export default function Verify() {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
onClick={() => navigate('/login')}
|
onClick={() => { window.location.href = '/' }}
|
||||||
className="btn btn-primary btn-full"
|
className="btn btn-primary btn-full"
|
||||||
>
|
>
|
||||||
Jetzt anmelden
|
Weiter zum Dashboard
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user