Storage model
A-Z and 0-9.userAuthAttempts.const codeHash = hashOTPCode(code); await db.insert(userAuthAttempts).values({ email: user.email, userId: user.id, codeHash, purpose: 'login', expiresAt: new Date(Date.now() + 15 * 60 * 1000), used: false, });
Token verification
export const Route = createFileRoute('/login-via-code/$token')({ beforeLoad: async ({ params }) => { await verifyCodeVerificationToken(params.token); return { tokenValid: true }; }, component: LoginViaCodePage, });
Signup flow
signup.Why this matters