Commit 4e2ab1f6 by Zhuangzai fa Committed by GitHub

Enhance WeChat login functionality (#5213)

* Enhance WeChat login functionality

* Add inviterId
parent 0c0e54cb
...@@ -21,6 +21,10 @@ export type OauthLoginProps = { ...@@ -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 = {
......
...@@ -10,6 +10,14 @@ import FormLayout from './FormLayout'; ...@@ -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) => { ...@@ -29,15 +37,28 @@ const WechatForm = ({ setPageType, loginSuccess }: Props) => {
} }
}); });
useQuery(['getWXLoginResult', wechatInfo?.code], () => getWXLoginResult(wechatInfo?.code || ''), { useQuery(
['getWXLoginResult', wechatInfo?.code],
() =>
getWXLoginResult({
inviterId: getInviterId(),
code: wechatInfo?.code || '',
bd_vid: getBdVId(),
msclkid: getMsclkid(),
fastgpt_sem: getFastGPTSem(),
sourceDomain: getSourceDomain()
}),
{
refetchInterval: 3 * 1000, refetchInterval: 3 * 1000,
enabled: !!wechatInfo?.code, enabled: !!wechatInfo?.code,
onSuccess(data: ResLogin | undefined) { onSuccess(data: ResLogin | undefined) {
if (data) { if (data) {
removeFastGPTSem();
loginSuccess(data); loginSuccess(data);
} }
} }
}); }
);
return ( return (
<FormLayout setPageType={setPageType} pageType={LoginPageTypeEnum.wechat}> <FormLayout setPageType={setPageType} pageType={LoginPageTypeEnum.wechat}>
......
...@@ -90,15 +90,10 @@ const Login = ({ ChineseRedirectUrl }: { ChineseRedirectUrl: string }) => { ...@@ -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]);
......
...@@ -15,6 +15,7 @@ import type { ...@@ -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 ...@@ -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<{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment