fix(mana-auth): robust email-not-verified detection

Better Auth throws APIError.from(FORBIDDEN, EMAIL_NOT_VERIFIED).
Check status 403, body.code, and lowercased message.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-03-31 18:01:24 +02:00
parent 38135ca8b9
commit 36922cc946

View file

@ -131,10 +131,13 @@ export function createAuthRoutes(
return c.json(response);
} catch (error) {
// Check if Better Auth rejected login due to unverified email
const errorMessage = error instanceof Error ? error.message : String(error);
// Better Auth throws APIError.from("FORBIDDEN", "EMAIL_NOT_VERIFIED") for unverified emails
const isEmailNotVerified =
errorMessage.includes('email') && errorMessage.toLowerCase().includes('verif');
(error as any)?.status === 403 ||
(error as any)?.body?.code === 'EMAIL_NOT_VERIFIED' ||
String((error as any)?.message ?? error)
.toLowerCase()
.includes('not verified');
if (isEmailNotVerified) {
return c.json({ error: 'Email not verified', code: 'EMAIL_NOT_VERIFIED' }, 403);
}