diff --git a/packages/global/common/system/types/index.d.ts b/packages/global/common/system/types/index.d.ts index 6ac0a0a95..3200c653d 100644 --- a/packages/global/common/system/types/index.d.ts +++ b/packages/global/common/system/types/index.d.ts @@ -24,7 +24,10 @@ export type FastGPTConfigFileType = { export type FastGPTFeConfigsType = { show_emptyChat?: boolean; - show_register?: boolean; + register_method?: ['email' | 'phone']; + login_method?: ['email' | 'phone']; // Attention: login method is diffrent with oauth + find_password_method?: ['email' | 'phone']; + bind_notification_method?: ['email' | 'phone']; show_appStore?: boolean; show_git?: boolean; show_pay?: boolean; @@ -43,8 +46,6 @@ export type FastGPTFeConfigsType = { systemDescription?: string; googleClientVerKey?: string; isPlus?: boolean; - show_phoneLogin?: boolean; - show_emailLogin?: boolean; sso?: { icon?: string; title?: string; diff --git a/projects/app/src/pages/account/components/UpdateNotificationModal.tsx b/projects/app/src/pages/account/components/UpdateNotificationModal.tsx index 1a94cda8e..317ddb79c 100644 --- a/projects/app/src/pages/account/components/UpdateNotificationModal.tsx +++ b/projects/app/src/pages/account/components/UpdateNotificationModal.tsx @@ -8,6 +8,7 @@ import { updateNotificationAccount } from '@/web/support/user/api'; import Icon from '@fastgpt/web/components/common/Icon'; import { useSendCode } from '@/web/support/user/hooks/useSendCode'; import { useUserStore } from '@/web/support/user/useUserStore'; +import { useSystemStore } from '@/web/common/system/useSystemStore'; type FormType = { account: string; @@ -17,6 +18,7 @@ type FormType = { const UpdateNotificationModal = ({ onClose }: { onClose: () => void }) => { const { t } = useTranslation(); const { initUserInfo } = useUserStore(); + const { feConfigs } = useSystemStore(); const { register, handleSubmit, trigger, getValues, watch } = useForm({ defaultValues: { account: '', @@ -51,6 +53,17 @@ const UpdateNotificationModal = ({ onClose }: { onClose: () => void }) => { }); }, [getValues, sendCode, trigger]); + const placeholder = feConfigs?.bind_notification_method + ?.map((item) => { + switch (item) { + case 'email': + return t('common:support.user.login.Email'); + case 'phone': + return t('common:support.user.login.Phone number'); + } + }) + .join('/'); + return ( void }) => { flex={1} bg={'myGray.50'} {...register('account', { required: true })} - placeholder={t('user:password.email_phone')} + placeholder={placeholder} > diff --git a/projects/app/src/pages/login/components/ForgetPasswordForm.tsx b/projects/app/src/pages/login/components/ForgetPasswordForm.tsx index 234a91153..ecf22923c 100644 --- a/projects/app/src/pages/login/components/ForgetPasswordForm.tsx +++ b/projects/app/src/pages/login/components/ForgetPasswordForm.tsx @@ -46,6 +46,18 @@ const RegisterForm = ({ setPageType, loginSuccess }: Props) => { }, [getValues, sendCode, trigger]); const [requesting, setRequesting] = useState(false); + const placeholder = feConfigs?.find_password_method + ?.map((item) => { + switch (item) { + case 'email': + return t('common:support.user.login.Email'); + case 'phone': + return t('common:support.user.login.Phone number'); + default: + return t('common:support.user.login.Username'); + } + }) + .join('/'); const onclickFindPassword = useCallback( async ({ username, code, password }: RegisterType) => { @@ -89,7 +101,7 @@ const RegisterForm = ({ setPageType, loginSuccess }: Props) => { { [loginSuccess, t, toast] ); - const isCommunityVersion = feConfigs?.show_register === false && !feConfigs?.isPlus; + const isCommunityVersion = !!(feConfigs?.register_method && !feConfigs?.isPlus); - const loginOptions = [ - feConfigs?.show_phoneLogin ? t('common:support.user.login.Phone number') : '', - feConfigs?.show_emailLogin ? t('common:support.user.login.Email') : '', - t('common:support.user.login.Username') - ].filter(Boolean); - - const placeholder = isCommunityVersion - ? t('common:support.user.login.Root login') - : loginOptions.join('/'); + const placeholder = (() => { + if (isCommunityVersion) { + return t('common:support.user.login.Root login'); + } + return [t('common:support.user.login.Username')] + .concat( + feConfigs?.login_method?.map((item) => { + switch (item) { + case 'email': + return t('common:support.user.login.Email'); + case 'phone': + return t('common:support.user.login.Phone number'); + } + }) ?? [] + ) + .join('/'); + })(); return ( { - if (e.keyCode === 13 && !e.shiftKey && !requesting) { + if (e.key === 'Enter' && !e.shiftKey && !requesting) { handleSubmit(onclickLogin)(); } }} @@ -140,17 +148,19 @@ const LoginForm = ({ setPageType, loginSuccess }: Props) => { {t('common:Login')} - {feConfigs?.show_register && ( - <> - - setPageType('forgetPassword')} - fontSize="sm" - > - {t('common:support.user.login.Forget Password')} - + + {feConfigs?.find_password_method && feConfigs.find_password_method.length > 0 && ( + setPageType('forgetPassword')} + fontSize="sm" + > + {t('common:support.user.login.Forget Password')} + + )} + {feConfigs?.register_method && feConfigs.register_method.length > 0 && ( + <> { > {t('common:support.user.login.Register')} - - - )} + + )} + ); diff --git a/projects/app/src/pages/login/components/LoginForm/components/FormLayout.tsx b/projects/app/src/pages/login/components/LoginForm/components/FormLayout.tsx index 2bc00451f..7323dbc8c 100644 --- a/projects/app/src/pages/login/components/LoginForm/components/FormLayout.tsx +++ b/projects/app/src/pages/login/components/LoginForm/components/FormLayout.tsx @@ -67,6 +67,9 @@ const FormLayout = ({ children, setPageType, pageType }: Props) => { ] : []) ]; + + const show_oauth = !!(feConfigs?.sso || oAuthList.length > 0); + return ( @@ -87,9 +90,9 @@ const FormLayout = ({ children, setPageType, pageType }: Props) => { {children} - - {feConfigs?.show_register && oAuthList.length > 0 && ( + {show_oauth && ( <> + diff --git a/projects/app/src/pages/login/components/RegisterForm.tsx b/projects/app/src/pages/login/components/RegisterForm.tsx index 1609ed99b..0125218c2 100644 --- a/projects/app/src/pages/login/components/RegisterForm.tsx +++ b/projects/app/src/pages/login/components/RegisterForm.tsx @@ -90,6 +90,17 @@ const RegisterForm = ({ setPageType, loginSuccess }: Props) => { [loginSuccess, t, toast] ); + const placeholder = feConfigs?.register_method + ?.map((item) => { + switch (item) { + case 'email': + return t('common:support.user.login.Email'); + case 'phone': + return t('common:support.user.login.Phone number'); + } + }) + .join('/'); + return ( <> @@ -98,7 +109,7 @@ const RegisterForm = ({ setPageType, loginSuccess }: Props) => { { - if (e.keyCode === 13 && !e.shiftKey && !requesting) { + if (e.key === 'Enter' && !e.shiftKey && !requesting) { handleSubmit(onclickRegister)(); } }} @@ -106,7 +117,7 @@ const RegisterForm = ({ setPageType, loginSuccess }: Props) => {