import { betterAuth } from "better-auth"; import { prismaAdapter } from "better-auth/adapters/prisma"; import { prisma } from "./prisma"; import { testUtils } from "better-auth/plugins"; export const auth = betterAuth({ database: prismaAdapter(prisma, { provider: "postgresql", }), emailAndPassword: { enabled: true, autoSignIn: true, requireEmailVerification: false, minPasswordLength: 8, maxPasswordLength: 128, }, secret: process.env.BETTER_AUTH_SECRET || process.env.NEXTAUTH_SECRET, baseURL: process.env.BETTER_AUTH_URL || process.env.NEXTAUTH_URL || "http://localhost:3000/api/auth", trustedOrigins: (() => { const origins = []; if (process.env.TRUSTED_ORIGINS) { origins.push(...process.env.TRUSTED_ORIGINS.split(',').map(o => o.trim())); } if (process.env.BETTER_AUTH_URL) { origins.push(process.env.BETTER_AUTH_URL); } if (process.env.NEXTAUTH_URL) { origins.push(process.env.NEXTAUTH_URL); } origins.push( "https://euchre.notsosm.art", "http://euchre.notsosm.art", "http://dhg.lol:51193", "http://localhost:3000", "http://127.0.0.1:3000", "http://0.0.0.0:3000" ); return [...new Set(origins.filter(o => o))]; })(), session: { cookieCache: { enabled: false, }, }, rateLimit: { enabled: false, }, databaseHooks: { user: { create: { async after(user) { const timestamp = Date.now(); const randomId = Math.random().toString(36).substring(2, 8); const baseName = user.name || user.email.split('@')[0]; const uniqueName = `${baseName}-${timestamp}-${randomId}`; const newPlayer = await prisma.player.create({ data: { name: uniqueName, normalizedName: uniqueName.toLowerCase(), }, }); await prisma.user.update({ where: { id: user.id }, data: { playerId: newPlayer.id }, }); }, }, }, }, plugins: [ testUtils() ] });