@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.36 kB
text/typescript
import { OIDCConfig, OIDCUserConfig } from '@auth/core/providers';
import { authEnv } from '@/config/auth';
import { CommonProviderConfig } from './sso.config';
interface LogtoProfile extends Record<string, any> {
email: string;
id: string;
name?: string;
picture: string;
sub: string;
username: string;
}
function LobeLogtoProvider(config: OIDCUserConfig<LogtoProfile>): OIDCConfig<LogtoProfile> {
return {
...CommonProviderConfig,
...config,
id: 'logto',
name: 'Logto',
profile(profile) {
// You can customize the user profile mapping here
return {
email: profile.email,
id: profile.sub,
image: profile.picture,
name: profile.name ?? profile.username ?? profile.email,
providerAccountId: profile.sub,
};
},
type: 'oidc',
};
}
const provider = {
id: 'logto',
provider: LobeLogtoProvider({
authorization: {
params: { scope: 'openid offline_access profile email' },
},
// You can get the issuer value from the Logto Application Details page,
// in the field "Issuer endpoint"
clientId: authEnv.LOGTO_CLIENT_ID ?? process.env.AUTH_LOGTO_ID,
clientSecret: authEnv.LOGTO_CLIENT_SECRET ?? process.env.AUTH_LOGTO_SECRET,
issuer: authEnv.LOGTO_ISSUER ?? process.env.AUTH_LOGTO_ISSUER,
}),
};
export default provider;