import { betterAuth } from "better-auth";
import { prismaAdapter } from "better-auth/adapters/prisma";
import { PrismaClient } from "@prisma/client";
import { username, admin, oidcProvider, jwt } from "better-auth/plugins";
import { nextCookies } from "better-auth/next-js";
const prisma = new PrismaClient();
export const auth = betterAuth({
appName: "XXX",
database: prismaAdapter(prisma, { provider: "postgresql" }),
emailAndPassword: {
enabled: true,
minPasswordLength: 4,
maxPasswordLength: 4,
disableSignUp: true,
},
socialProviders: {
discord: {
clientId: process.env.DISCORD_CLIENT_ID!,
clientSecret: process.env.DISCORD_CLIENT_SECRET!,
disableSignUp: true,
},
},
plugins: [
username(),
admin(),
oidcProvider({
loginPage: "/login",
useJWTPlugin: true,
}),
jwt(),
nextCookies(), // must be last plugin to work correctly
],
onAPIError: {
throw: true,
onError: (error, ctx) => {
console.error("Auth error:", error);
},
errorURL: "/error",
},
// todo: add callback to disable username/password login for users that have discord linked
jwt: { secret: process.env.JWT_SECRET! },
oidc: { enabled: true, issuer: process.env.AUTH_ISSUER! },
});
import { betterAuth } from "better-auth";
import { prismaAdapter } from "better-auth/adapters/prisma";
import { PrismaClient } from "@prisma/client";
import { username, admin, oidcProvider, jwt } from "better-auth/plugins";
import { nextCookies } from "better-auth/next-js";
const prisma = new PrismaClient();
export const auth = betterAuth({
appName: "XXX",
database: prismaAdapter(prisma, { provider: "postgresql" }),
emailAndPassword: {
enabled: true,
minPasswordLength: 4,
maxPasswordLength: 4,
disableSignUp: true,
},
socialProviders: {
discord: {
clientId: process.env.DISCORD_CLIENT_ID!,
clientSecret: process.env.DISCORD_CLIENT_SECRET!,
disableSignUp: true,
},
},
plugins: [
username(),
admin(),
oidcProvider({
loginPage: "/login",
useJWTPlugin: true,
}),
jwt(),
nextCookies(), // must be last plugin to work correctly
],
onAPIError: {
throw: true,
onError: (error, ctx) => {
console.error("Auth error:", error);
},
errorURL: "/error",
},
// todo: add callback to disable username/password login for users that have discord linked
jwt: { secret: process.env.JWT_SECRET! },
oidc: { enabled: true, issuer: process.env.AUTH_ISSUER! },
});