@kardoe/better-auth-combo-auth
v1.0.1
Published
Combo authentication (magic link + OTP) utility for Better Auth with AWS SES
Downloads
254
Maintainers
Readme
@kardoe/better-auth-combo-auth
Combo authentication utility for Better Auth - sends both magic link AND OTP code in a single email.
Installation
npm install @kardoe/better-auth-combo-auth @kardoe/better-auth-aws-ses
# or
pnpm add @kardoe/better-auth-combo-auth @kardoe/better-auth-aws-sesUsage
This package provides a sendVerificationOTP callback that wraps Better Auth's emailOTP plugin to send combo auth emails (magic link + OTP).
import { betterAuth } from "better-auth";
import { emailOTP } from "better-auth/plugins";
import { awsSESPlugin } from "@kardoe/better-auth-aws-ses";
import { createComboAuthSendVerificationOTP } from "@kardoe/better-auth-combo-auth";
const sesConfig = {
region: process.env.AWS_SES_REGION!,
accessKeyId: process.env.AWS_ACCESS_KEY_ID!,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!,
fromEmail: process.env.EMAIL_FROM!,
fromName: process.env.EMAIL_FROM_NAME!,
appName: "My App",
appUrl: "https://myapp.com",
useComboAuthEmail: true,
};
export const auth = betterAuth({
// ... your config
plugins: [
awsSESPlugin(sesConfig),
emailOTP({
sendVerificationOTP: createComboAuthSendVerificationOTP({
sesConfig,
baseUrl: "https://myapp.com",
defaultCallback: "/dashboard",
welcomeRoute: "/welcome",
emailOTPRoute: "/verify",
}),
}),
],
});How It Works
When a user requests an OTP (for sign-in or email verification), instead of just sending an OTP code, this utility sends an email containing:
- Magic Link - A clickable link that auto-submits the OTP
- OTP Code - The code that can be manually entered
The magic link encodes the OTP, email, and callback URL in a base64 payload, allowing the frontend to auto-verify the user when they click the link.
Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| sesConfig | SESConfig | required | AWS SES configuration |
| baseUrl | string | required | Base URL of your application |
| defaultCallback | string | "/profile" | URL to redirect after authentication |
| welcomeRoute | string | "/welcome" | Route for signup/welcome flow |
| emailOTPRoute | string | "/email-otp" | Route for email OTP verification |
License
MIT
