auth.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // noinspection ES6PreferShortImport
  2. import "dotenv/config"
  3. import prisma from "./prisma.js"
  4. import { betterAuth } from "better-auth"
  5. import { admin as adminPlugin } from "better-auth/plugins"
  6. import { prismaAdapter } from "better-auth/adapters/prisma"
  7. import { additionalFields } from "../../shared/utils/auth/additionalFields.js"
  8. import { ac, admin, user } from "../../shared/utils/auth/permissions.js"
  9. const auth = betterAuth({
  10. baseURL: process.env.NUXT_BETTER_AUTH_BASE_URL,
  11. secret: process.env.NUXT_BETTER_AUTH_SECRET,
  12. database: prismaAdapter(prisma, { provider: "postgresql" }),
  13. advanced: { database: { generateId: false } },
  14. account: { accountLinking: { enabled: true } },
  15. session: { cookieCache: { enabled: true, maxAge: 5 * 60 } },
  16. user: { additionalFields: additionalFields.user },
  17. emailAndPassword: {
  18. enabled: true,
  19. minPasswordLength: 12,
  20. maxPasswordLength: 128
  21. },
  22. plugins: [adminPlugin({ ac, roles: { admin, user } })]
  23. })
  24. let _auth
  25. function serverAuth() {
  26. if (!_auth) {
  27. _auth = auth
  28. }
  29. return _auth
  30. }
  31. export { auth, serverAuth }