Files
stack/packages/auth/src/auth.ts
T
2026-03-13 02:21:15 +00:00

43 lines
1013 B
TypeScript

import { betterAuth } from 'better-auth';
import { drizzleAdapter } from 'better-auth/adapters/drizzle';
import type { Db } from '@mosaic/db';
export interface AuthConfig {
db: Db;
baseURL?: string;
secret?: string;
}
export function createAuth(config: AuthConfig) {
const { db, baseURL, secret } = config;
return betterAuth({
database: drizzleAdapter(db, {
provider: 'pg',
usePlural: true,
}),
baseURL: baseURL ?? process.env['BETTER_AUTH_URL'] ?? 'http://localhost:4000',
secret: secret ?? process.env['BETTER_AUTH_SECRET'],
basePath: '/api/auth',
emailAndPassword: {
enabled: true,
},
user: {
additionalFields: {
role: {
type: 'string',
required: false,
defaultValue: 'member',
input: false,
},
},
},
session: {
expiresIn: 60 * 60 * 24 * 7, // 7 days
updateAge: 60 * 60 * 24, // refresh daily
},
});
}
export type Auth = ReturnType<typeof createAuth>;