* feat: add third party account config (#3443) * temp * editor workflow variable style * add team to dispatch * i18n * delete console * change openai account position * fix * fix * fix * fix * fix * 4.8.17 test (#3461) * perf: external provider config * perf: ui * feat: add template config (#3434) * change template position * template config * delete console * delete * fix * fix * perf: Mongo visutal field (#3464) * remve invalid code * perf: team member visutal code * perf: virtual search; perf: search test data * fix: ts * fix: image response headers * perf: template code * perf: auth layout;perf: auto save (#3472) * perf: auth layout * perf: auto save * perf: auto save * fix: template guide display & http input support external variables (#3475) * fix: template guide display * http editor support external workflow variables * perf: auto save;fix: ifelse checker line break; (#3478) * perf: auto save * perf: auto save * fix: ifelse checker line break * perf: doc * perf: doc * fix: update var type error * 4.8.17 test (#3479) * perf: auto save * perf: auto save * perf: template code * 4.8.17 test (#3480) * perf: auto save * perf: auto save * perf: model price model * feat: add react memo * perf: model provider filter * fix: ts (#3481) * perf: auto save * perf: auto save * fix: ts * simple app tool select (#3473) * workflow plugin userguide & simple tool ui * simple tool filter * reuse component * change component to hook * fix * perf: too selector modal (#3484) * perf: auto save * perf: auto save * perf: markdown render * perf: too selector * fix: app version require tmbId * perf: templates refresh * perf: templates refresh * hide auto save error tip * perf: toolkit guide --------- Co-authored-by: heheer <heheer@sealos.io>
78 lines
2.4 KiB
TypeScript
78 lines
2.4 KiB
TypeScript
import { POST } from '@fastgpt/service/common/api/plusRequest';
|
|
import type {
|
|
AuthOutLinkChatProps,
|
|
AuthOutLinkLimitProps,
|
|
AuthOutLinkInitProps,
|
|
AuthOutLinkResponse
|
|
} from '@fastgpt/global/support/outLink/api.d';
|
|
import { ShareChatAuthProps } from '@fastgpt/global/support/permission/chat';
|
|
import { authOutLinkValid } from '@fastgpt/service/support/permission/publish/authLink';
|
|
import { getUserChatInfoAndAuthTeamPoints } from '@fastgpt/service/support/permission/auth/team';
|
|
import { AuthUserTypeEnum } from '@fastgpt/global/support/permission/constant';
|
|
import { OutLinkErrEnum } from '@fastgpt/global/common/error/code/outLink';
|
|
import { OutLinkSchema } from '@fastgpt/global/support/outLink/type';
|
|
|
|
export function authOutLinkInit(data: AuthOutLinkInitProps): Promise<AuthOutLinkResponse> {
|
|
if (!global.feConfigs?.isPlus) return Promise.resolve({ uid: data.outLinkUid });
|
|
return POST<AuthOutLinkResponse>('/support/outLink/authInit', data);
|
|
}
|
|
export function authOutLinkChatLimit(data: AuthOutLinkLimitProps): Promise<AuthOutLinkResponse> {
|
|
if (!global.feConfigs?.isPlus) return Promise.resolve({ uid: data.outLinkUid });
|
|
return POST<AuthOutLinkResponse>('/support/outLink/authChatStart', data);
|
|
}
|
|
|
|
export const authOutLink = async ({
|
|
shareId,
|
|
outLinkUid
|
|
}: ShareChatAuthProps): Promise<{
|
|
uid: string;
|
|
appId: string;
|
|
outLinkConfig: OutLinkSchema;
|
|
}> => {
|
|
if (!outLinkUid) {
|
|
return Promise.reject(OutLinkErrEnum.linkUnInvalid);
|
|
}
|
|
const result = await authOutLinkValid({ shareId });
|
|
|
|
const { uid } = await authOutLinkInit({
|
|
outLinkUid,
|
|
tokenUrl: result.outLinkConfig.limit?.hookUrl
|
|
});
|
|
|
|
return {
|
|
...result,
|
|
uid
|
|
};
|
|
};
|
|
|
|
export async function authOutLinkChatStart({
|
|
shareId,
|
|
ip,
|
|
outLinkUid,
|
|
question
|
|
}: AuthOutLinkChatProps & {
|
|
shareId: string;
|
|
}) {
|
|
// get outLink and app
|
|
const { outLinkConfig, appId } = await authOutLinkValid({ shareId });
|
|
|
|
// check ai points and chat limit
|
|
const [{ timezone, externalProvider }, { uid }] = await Promise.all([
|
|
getUserChatInfoAndAuthTeamPoints(outLinkConfig.tmbId),
|
|
authOutLinkChatLimit({ outLink: outLinkConfig, ip, outLinkUid, question })
|
|
]);
|
|
|
|
return {
|
|
sourceName: outLinkConfig.name,
|
|
teamId: outLinkConfig.teamId,
|
|
tmbId: outLinkConfig.tmbId,
|
|
authType: AuthUserTypeEnum.token,
|
|
responseDetail: outLinkConfig.responseDetail,
|
|
showNodeStatus: outLinkConfig.showNodeStatus,
|
|
timezone,
|
|
externalProvider,
|
|
appId,
|
|
uid
|
|
};
|
|
}
|