Wire up email verification flow for new signups
requireEmailVerification was enabled but no sendVerificationEmail was configured — new users saw "check your email", never received anything, and couldn't log in (403 shown as "wrong email or password"). - email.ts: add verification email template; welcome email no longer claims the account is "confirmed" - auth.ts: configure emailVerification (send on signup, resend on unverified login attempt, auto sign-in after verification, 24h TTL) - register route: callbackURL=/dashboard so the verify link lands in the cabinet - login form: distinguish 403 (unverified — tell user a fresh link was sent) and 429 (rate limit) from wrong credentials Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+11
-1
@@ -3,7 +3,7 @@ import { prismaAdapter } from "better-auth/adapters/prisma";
|
||||
import { admin } from "better-auth/plugins";
|
||||
import { prisma } from "./prisma";
|
||||
import bcrypt from "bcryptjs";
|
||||
import { sendWelcomeEmail, sendPasswordResetEmail } from "./email";
|
||||
import { sendWelcomeEmail, sendPasswordResetEmail, sendVerificationEmail } from "./email";
|
||||
|
||||
export const auth = betterAuth({
|
||||
database: prismaAdapter(prisma, {
|
||||
@@ -20,6 +20,16 @@ export const auth = betterAuth({
|
||||
await sendPasswordResetEmail(user.email, user.name, url);
|
||||
},
|
||||
},
|
||||
emailVerification: {
|
||||
// Без этого блока requireEmailVerification блокирует вход,
|
||||
// а письмо подтверждения никто не отправляет — тупик для новых юзеров.
|
||||
sendVerificationEmail: async ({ user, url }) => {
|
||||
await sendVerificationEmail(user.email, user.name, url);
|
||||
},
|
||||
sendOnSignUp: true,
|
||||
autoSignInAfterVerification: true,
|
||||
expiresIn: 60 * 60 * 24, // 24h
|
||||
},
|
||||
databaseHooks: {
|
||||
user: {
|
||||
create: {
|
||||
|
||||
Reference in New Issue
Block a user