Enhance WeChat login functionality (#5213)

* Enhance WeChat login functionality

* Add inviterId
This commit is contained in:
Zhuangzai fa
2025-07-15 17:29:36 +08:00
committed by GitHub
parent 0c0e54cb05
commit 4e2ab1f63b
4 changed files with 36 additions and 15 deletions

View File

@@ -21,6 +21,10 @@ export type OauthLoginProps = {
export type WxLoginProps = { export type WxLoginProps = {
inviterId?: string; inviterId?: string;
code: string; code: string;
bd_vid?: string;
msclkid?: string;
fastgpt_sem?: string;
sourceDomain?: string;
}; };
export type FastLoginProps = { export type FastLoginProps = {

View File

@@ -10,6 +10,14 @@ import FormLayout from './FormLayout';
import { useTranslation } from 'next-i18next'; import { useTranslation } from 'next-i18next';
import Loading from '@fastgpt/web/components/common/MyLoading'; import Loading from '@fastgpt/web/components/common/MyLoading';
import MyImage from '@fastgpt/web/components/common/Image/MyImage'; import MyImage from '@fastgpt/web/components/common/Image/MyImage';
import {
getBdVId,
getFastGPTSem,
getMsclkid,
getSourceDomain,
removeFastGPTSem,
getInviterId
} from '@/web/support/marketing/utils';
interface Props { interface Props {
loginSuccess: (e: ResLogin) => void; loginSuccess: (e: ResLogin) => void;
@@ -29,15 +37,28 @@ const WechatForm = ({ setPageType, loginSuccess }: Props) => {
} }
}); });
useQuery(['getWXLoginResult', wechatInfo?.code], () => getWXLoginResult(wechatInfo?.code || ''), { useQuery(
refetchInterval: 3 * 1000, ['getWXLoginResult', wechatInfo?.code],
enabled: !!wechatInfo?.code, () =>
onSuccess(data: ResLogin | undefined) { getWXLoginResult({
if (data) { inviterId: getInviterId(),
loginSuccess(data); code: wechatInfo?.code || '',
bd_vid: getBdVId(),
msclkid: getMsclkid(),
fastgpt_sem: getFastGPTSem(),
sourceDomain: getSourceDomain()
}),
{
refetchInterval: 3 * 1000,
enabled: !!wechatInfo?.code,
onSuccess(data: ResLogin | undefined) {
if (data) {
removeFastGPTSem();
loginSuccess(data);
}
} }
} }
}); );
return ( return (
<FormLayout setPageType={setPageType} pageType={LoginPageTypeEnum.wechat}> <FormLayout setPageType={setPageType} pageType={LoginPageTypeEnum.wechat}>

View File

@@ -90,15 +90,10 @@ const Login = ({ ChineseRedirectUrl }: { ChineseRedirectUrl: string }) => {
/* default login type */ /* default login type */
useEffect(() => { useEffect(() => {
const bd_vid = getBdVId(); //delete bd_vid and show WeChat login
if (bd_vid) {
setPageType(LoginPageTypeEnum.passwordLogin);
return;
}
setPageType( setPageType(
feConfigs?.oauth?.wechat ? LoginPageTypeEnum.wechat : LoginPageTypeEnum.passwordLogin feConfigs?.oauth?.wechat ? LoginPageTypeEnum.wechat : LoginPageTypeEnum.passwordLogin
); );
// init store // init store
setLastChatAppId(''); setLastChatAppId('');
}, [feConfigs?.oauth, setLastChatAppId]); }, [feConfigs?.oauth, setLastChatAppId]);

View File

@@ -15,6 +15,7 @@ import type {
GetWXLoginQRResponse GetWXLoginQRResponse
} from '@fastgpt/global/support/user/login/api.d'; } from '@fastgpt/global/support/user/login/api.d';
import type { preLoginResponse } from '@/pages/api/support/user/account/preLogin'; import type { preLoginResponse } from '@/pages/api/support/user/account/preLogin';
import type { WxLoginProps } from '@fastgpt/global/support/user/api.d';
export const sendAuthCode = (data: { export const sendAuthCode = (data: {
username: string; username: string;
@@ -99,8 +100,8 @@ export const putUserInfo = (data: UserUpdateParams) => PUT('/support/user/accoun
export const getWXLoginQR = () => export const getWXLoginQR = () =>
GET<GetWXLoginQRResponse>('/proApi/support/user/account/login/wx/getQR'); GET<GetWXLoginQRResponse>('/proApi/support/user/account/login/wx/getQR');
export const getWXLoginResult = (code: string) => export const getWXLoginResult = (params: WxLoginProps) =>
GET<ResLogin>(`/proApi/support/user/account/login/wx/getResult`, { code }); GET<ResLogin>(`/proApi/support/user/account/login/wx/getResult`, params);
export const getCaptchaPic = (username: string) => export const getCaptchaPic = (username: string) =>
GET<{ GET<{