fix(auth): surface email-not-verified error and detect needsVerification on signup

- mana-auth login route: catch Better Auth's email verification error and
  return 403 EMAIL_NOT_VERIFIED instead of 401 Invalid credentials
- shared-auth signUp: detect emailVerified:false in register response and
  return needsVerification:true so the UI shows the verification prompt
- shared-auth-ui LoginPage: map INVALID_CREDENTIALS error code to friendly message
- shared-i18n: add invalidCredentials translation (de/en)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-03-31 17:52:47 +02:00
parent 999c54a5a1
commit b1af506b99
5 changed files with 15 additions and 5 deletions

View file

@ -19,6 +19,7 @@
"emailInvalid": "Bitte gib eine gültige E-Mail-Adresse ein",
"passwordRequired": "Passwort ist erforderlich",
"signInFailed": "Anmeldung fehlgeschlagen",
"invalidCredentials": "Ungültige E-Mail oder Passwort",
"signInSuccess": "Erfolgreich angemeldet. Weiterleitung...",
"emailVerified": "E-Mail erfolgreich bestätigt! Bitte melde dich an.",
"emailNotVerified": "E-Mail nicht bestätigt.",

View file

@ -19,6 +19,7 @@
"emailInvalid": "Please enter a valid email address",
"passwordRequired": "Password is required",
"signInFailed": "Sign in failed",
"invalidCredentials": "Invalid email or password",
"signInSuccess": "Successfully signed in. Redirecting...",
"emailVerified": "Email successfully verified! Please sign in.",
"emailNotVerified": "Email not verified.",

View file

@ -34,6 +34,7 @@ export interface AuthTranslations {
emailInvalid: string;
passwordRequired: string;
signInFailed: string;
invalidCredentials?: string;
signInSuccess: string;
emailVerified?: string;
emailNotVerified?: string;