45 lines
1.0 KiB
TypeScript

import { sendOtp } from "@/actions/auth-actions";
import { betterAuth } from "better-auth";
import { prismaAdapter } from "better-auth/adapters/prisma";
import { phoneNumber } from "better-auth/plugins";
import prisma from "./db";
export const auth = betterAuth({
session: {
cookieCache: {
enabled: true,
maxAge: 10 * 60, // Cache duration in seconds
},
},
trustedOrigins: process.env.BETTER_AUTH_TRUSTED_ORIGINS?.split(",") || [
"localhost:3000",
],
user: {
additionalFields: {
role: {
type: "string",
required: false,
defaultValue: "USER",
input: false, // don't allow user to set role
},
lang: {
type: "string",
required: false,
defaultValue: "en",
},
},
},
database: prismaAdapter(prisma, {
provider: "postgresql", // or "mysql", "postgresql", ...etc
}),
plugins: [
phoneNumber({
sendOTP: async ({ phoneNumber, code }) => {
// Implement sending OTP code via SMS
console.log("Send OTP in auth.ts", phoneNumber, code);
await sendOtp(phoneNumber, code);
},
}),
],
});