import NextAuth, { NextAuthConfig, NextAuthResult } from "next-auth"; import Authentik from "next-auth/providers/authentik"; import type { Provider } from "next-auth/providers"; import { DrizzleAdapter } from "@auth/drizzle-adapter"; import { db } from "@/db/index"; const providers: Provider[] = [ Authentik({ clientId: process.env.AUTH_AUTHENTIK_CLIENT_ID, clientSecret: process.env.AUTH_AUTHENTIK_CLIENT_SECRET, issuer: process.env.AUTH_AUTHENTIK_ISSUER, }), ]; export const providerMap = providers.map((provider) => { if (typeof provider === "function") { const providerData = provider(); return { id: providerData.id, name: providerData.name }; } else { return { id: provider.id, name: provider.name }; } }); const config = { adapter: DrizzleAdapter(db), providers, pages: { signIn: "/auth/signin", signOut: "/auth/signout", error: "/auth/error", }, trustHost: true, } satisfies NextAuthConfig; export const { handlers, signIn, signOut, auth }: NextAuthResult = NextAuth(config);