UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

51 lines (44 loc) 1.57 kB
import type { NextAuthConfig } from 'next-auth'; import { authEnv } from '@/config/auth'; import { ssoProviders } from './sso-providers'; export const initSSOProviders = () => { return authEnv.NEXT_PUBLIC_ENABLE_NEXT_AUTH ? authEnv.NEXT_AUTH_SSO_PROVIDERS.split(/[,,]/).map((provider) => { const validProvider = ssoProviders.find((item) => item.id === provider.trim()); if (validProvider) return validProvider.provider; throw new Error(`[NextAuth] provider ${provider} is not supported`); }) : []; }; // Notice this is only an object, not a full Auth.js instance export default { callbacks: { // Note: Data processing order of callback: authorize --> jwt --> session async jwt({ token, user }) { // ref: https://authjs.dev/guides/extending-the-session#with-jwt if (user?.id) { token.userId = user?.id; } return token; }, async session({ session, token, user }) { if (session.user) { // ref: https://authjs.dev/guides/extending-the-session#with-database if (user) { session.user.id = user.id; } else { session.user.id = (token.userId ?? session.user.id) as string; } } return session; }, }, debug: authEnv.NEXT_AUTH_DEBUG, pages: { error: '/next-auth/error', signIn: '/next-auth/signin', }, providers: initSSOProviders(), secret: authEnv.NEXT_AUTH_SECRET, trustHost: process.env?.AUTH_TRUST_HOST ? process.env.AUTH_TRUST_HOST === 'true' : true, } satisfies NextAuthConfig;