| 123456789101112131415161718192021222324252627282930313233343536373839 |
- // noinspection ES6PreferShortImport
- import "dotenv/config"
- import prisma from "./prisma.js"
- import { betterAuth } from "better-auth"
- import { admin as adminPlugin } from "better-auth/plugins"
- import { prismaAdapter } from "better-auth/adapters/prisma"
- import { additionalFields } from "../../shared/utils/auth/additionalFields.js"
- import { ac, admin, user } from "../../shared/utils/auth/permissions.js"
- const auth = betterAuth({
- baseURL: process.env.NUXT_BETTER_AUTH_BASE_URL,
- secret: process.env.NUXT_BETTER_AUTH_SECRET,
- database: prismaAdapter(prisma, { provider: "postgresql" }),
- advanced: { database: { generateId: false } },
- account: { accountLinking: { enabled: true } },
- session: { cookieCache: { enabled: true, maxAge: 5 * 60 } },
- user: { additionalFields: additionalFields.user },
- emailAndPassword: {
- enabled: true,
- minPasswordLength: 12,
- maxPasswordLength: 128
- },
- plugins: [adminPlugin({ ac, roles: { admin, user } })]
- })
- let _auth
- function serverAuth() {
- if (!_auth) {
- _auth = auth
- }
- return _auth
- }
- export { auth, serverAuth }
|