fix: add sso auto login config (#3436)

This commit is contained in:
heheer
2024-12-19 13:33:56 +08:00
committed by GitHub
parent bd79e7701f
commit ce2e926d76
3 changed files with 24 additions and 5 deletions

View File

@@ -58,6 +58,7 @@ export type FastGPTFeConfigsType = {
icon?: string;
title?: string;
url?: string;
autoLogin?: boolean;
};
oauth?: {
github?: string;

View File

@@ -6,7 +6,7 @@ import { OAuthEnum } from '@fastgpt/global/support/user/constant';
import MyIcon from '@fastgpt/web/components/common/Icon';
import { customAlphabet } from 'nanoid';
import { useRouter } from 'next/router';
import { Dispatch, useMemo, useRef } from 'react';
import { Dispatch, useEffect, useMemo, useRef } from 'react';
import { useTranslation } from 'next-i18next';
import I18nLngSelector from '@/components/Select/I18nLngSelector';
import { useSystem } from '@fastgpt/web/hooks/useSystem';
@@ -100,6 +100,26 @@ const FormLayout = ({ children, setPageType, pageType }: Props) => {
[feConfigs?.sso?.url, oAuthList.length]
);
const formatUrl = useMemo(() => {
if (feConfigs?.sso?.url) {
return `${feConfigs.sso.url}/login/oauth/authorize?redirect_uri=${encodeURIComponent(redirectUri)}&state=${state.current}`;
}
return '';
}, [feConfigs.sso, redirectUri]);
useEffect(() => {
if (formatUrl && feConfigs?.sso?.autoLogin) {
setLoginStore({
provider: OAuthEnum.sso,
lastRoute,
state: state.current
});
window.open(formatUrl, '_self');
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [feConfigs.sso]);
return (
<Flex flexDirection={'column'} h={'100%'}>
<Flex alignItems={'center'} justify={'space-between'}>
@@ -167,8 +187,7 @@ const FormLayout = ({ children, setPageType, pageType }: Props) => {
borderRadius={'sm'}
leftIcon={<MyImage alt="" src={feConfigs.sso.icon as any} w="20px" />}
onClick={() => {
const url = feConfigs.sso?.url;
if (!url) {
if (!formatUrl) {
toast({
title: 'SSO URL is not set',
status: 'error'
@@ -181,7 +200,6 @@ const FormLayout = ({ children, setPageType, pageType }: Props) => {
state: state.current
});
const formatUrl = `${url}/login/oauth/authorize?redirect_uri=${encodeURIComponent(redirectUri)}&state=${state.current}`;
window.open(formatUrl, '_self');
}}
>

View File

@@ -71,7 +71,7 @@ export const useInitApp = () => {
if (sourceDomain) return sourceDomain;
return document.referrer;
})();
console.log(formatSourceDomain, '-=-=');
if (formatSourceDomain && !sessionStorage.getItem('sourceDomain')) {
sessionStorage.setItem('sourceDomain', formatSourceDomain);
}