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.

65 lines (50 loc) 1.99 kB
import debug from 'debug'; import { createContextForInteractionDetails } from '@/libs/oidc-provider/http-adapter'; import { OIDCProvider } from '@/libs/oidc-provider/provider'; import { getOIDCProvider } from './oidcProvider'; const log = debug('lobe-oidc:service'); export class OIDCService { private provider: OIDCProvider; constructor(provider: OIDCProvider) { this.provider = provider; } static async initialize() { const provider = await getOIDCProvider(); return new OIDCService(provider); } async getInteractionDetails(uid: string) { const { req, res } = await createContextForInteractionDetails(uid); return this.provider.interactionDetails(req, res); } async getInteractionResult(uid: string, result: any) { const { req, res } = await createContextForInteractionDetails(uid); return this.provider.interactionResult(req, res, result); } async finishInteraction(uid: string, result: any) { const { req, res } = await createContextForInteractionDetails(uid); return this.provider.interactionFinished(req, res, result, { mergeWithLastSubmission: true }); } async findOrCreateGrants(accountId: string, clientId: string, existingGrantId?: string) { // 2. 查找或创建 Grant 对象 let grant; if (existingGrantId) { // 如果之前的交互步骤已经关联了 Grant grant = await this.provider.Grant.find(existingGrantId); log('Found existing grantId: %s', existingGrantId); } if (!grant) { // 如果没有找到或没有 existingGrantId,则创建新的 grant = new this.provider.Grant({ accountId: accountId, clientId: clientId, }); log('Created new Grant for account %s and client %s', accountId, clientId); } return grant; } async getClientMetadata(clientId: string) { const client = await this.provider.Client.find(clientId); return client?.metadata(); } } export { getOIDCProvider } from './oidcProvider';