mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-24 22:03:54 +00:00
fix: add sso auto login config (#3436)
This commit is contained in:
@@ -58,6 +58,7 @@ export type FastGPTFeConfigsType = {
|
|||||||
icon?: string;
|
icon?: string;
|
||||||
title?: string;
|
title?: string;
|
||||||
url?: string;
|
url?: string;
|
||||||
|
autoLogin?: boolean;
|
||||||
};
|
};
|
||||||
oauth?: {
|
oauth?: {
|
||||||
github?: string;
|
github?: string;
|
||||||
|
@@ -6,7 +6,7 @@ import { OAuthEnum } from '@fastgpt/global/support/user/constant';
|
|||||||
import MyIcon from '@fastgpt/web/components/common/Icon';
|
import MyIcon from '@fastgpt/web/components/common/Icon';
|
||||||
import { customAlphabet } from 'nanoid';
|
import { customAlphabet } from 'nanoid';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
import { Dispatch, useMemo, useRef } from 'react';
|
import { Dispatch, useEffect, useMemo, useRef } from 'react';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import I18nLngSelector from '@/components/Select/I18nLngSelector';
|
import I18nLngSelector from '@/components/Select/I18nLngSelector';
|
||||||
import { useSystem } from '@fastgpt/web/hooks/useSystem';
|
import { useSystem } from '@fastgpt/web/hooks/useSystem';
|
||||||
@@ -100,6 +100,26 @@ const FormLayout = ({ children, setPageType, pageType }: Props) => {
|
|||||||
[feConfigs?.sso?.url, oAuthList.length]
|
[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 (
|
return (
|
||||||
<Flex flexDirection={'column'} h={'100%'}>
|
<Flex flexDirection={'column'} h={'100%'}>
|
||||||
<Flex alignItems={'center'} justify={'space-between'}>
|
<Flex alignItems={'center'} justify={'space-between'}>
|
||||||
@@ -167,8 +187,7 @@ const FormLayout = ({ children, setPageType, pageType }: Props) => {
|
|||||||
borderRadius={'sm'}
|
borderRadius={'sm'}
|
||||||
leftIcon={<MyImage alt="" src={feConfigs.sso.icon as any} w="20px" />}
|
leftIcon={<MyImage alt="" src={feConfigs.sso.icon as any} w="20px" />}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
const url = feConfigs.sso?.url;
|
if (!formatUrl) {
|
||||||
if (!url) {
|
|
||||||
toast({
|
toast({
|
||||||
title: 'SSO URL is not set',
|
title: 'SSO URL is not set',
|
||||||
status: 'error'
|
status: 'error'
|
||||||
@@ -181,7 +200,6 @@ const FormLayout = ({ children, setPageType, pageType }: Props) => {
|
|||||||
state: state.current
|
state: state.current
|
||||||
});
|
});
|
||||||
|
|
||||||
const formatUrl = `${url}/login/oauth/authorize?redirect_uri=${encodeURIComponent(redirectUri)}&state=${state.current}`;
|
|
||||||
window.open(formatUrl, '_self');
|
window.open(formatUrl, '_self');
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
@@ -71,7 +71,7 @@ export const useInitApp = () => {
|
|||||||
if (sourceDomain) return sourceDomain;
|
if (sourceDomain) return sourceDomain;
|
||||||
return document.referrer;
|
return document.referrer;
|
||||||
})();
|
})();
|
||||||
console.log(formatSourceDomain, '-=-=');
|
|
||||||
if (formatSourceDomain && !sessionStorage.getItem('sourceDomain')) {
|
if (formatSourceDomain && !sessionStorage.getItem('sourceDomain')) {
|
||||||
sessionStorage.setItem('sourceDomain', formatSourceDomain);
|
sessionStorage.setItem('sourceDomain', formatSourceDomain);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user