Files
dashboard-noc-desa-darmasaba/src/utils/auth.ts
2026-02-26 16:22:08 +08:00

65 lines
1.3 KiB
TypeScript

import { betterAuth } from "better-auth";
import { prismaAdapter } from "better-auth/adapters/prisma";
import { PrismaClient } from "../../generated/prisma";
import { VITE_PUBLIC_URL } from "./env";
const baseUrl = VITE_PUBLIC_URL;
const prisma = new PrismaClient();
// logger.info('Initializing Better Auth with Prisma adapter');
export const auth = betterAuth({
baseURL: baseUrl,
basePath: "/api/auth",
database: prismaAdapter(prisma, {
provider: "postgresql",
}),
emailAndPassword: {
enabled: true,
},
socialProviders: {
github: {
clientId: process.env.GITHUB_CLIENT_ID || "CLIENT_ID_MISSING",
clientSecret: process.env.GITHUB_CLIENT_SECRET || "CLIENT_SECRET_MISSING",
enabled: true,
},
},
user: {
additionalFields: {
role: {
type: "string",
required: false,
defaultValue: "user",
},
},
},
databaseHooks: {
user: {
create: {
before: async (user) => {
if (user.email === process.env.ADMIN_EMAIL) {
return {
data: {
...user,
role: "admin",
},
};
}
return { data: user };
},
},
},
},
secret: process.env.BETTER_AUTH_SECRET,
session: {
cookieCache: {
enabled: true,
maxAge: 60 * 60 * 24 * 7, // 7 days
},
expiresIn: 60 * 60 * 24 * 7, // 7 days
},
advanced: {
cookiePrefix: "bun-react",
trustProxy: true,
},
});