@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
text/typescript
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;