mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-13 23:45:54 +08:00
oauth2 supports. (#4551)
This commit is contained in:
parent
f32bba6531
commit
c873035084
@ -6,7 +6,7 @@ import React, { useEffect, useState } from 'react'
|
|||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import Toast from '@/app/components/base/toast'
|
import Toast from '@/app/components/base/toast'
|
||||||
import Button from '@/app/components/base/button'
|
import Button from '@/app/components/base/button'
|
||||||
import { fetchSystemFeatures, fetchWebOIDCSSOUrl, fetchWebSAMLSSOUrl } from '@/service/share'
|
import { fetchSystemFeatures, fetchWebOAuth2SSOUrl, fetchWebOIDCSSOUrl, fetchWebSAMLSSOUrl } from '@/service/share'
|
||||||
import LogoSite from '@/app/components/base/logo/logo-site'
|
import LogoSite from '@/app/components/base/logo/logo-site'
|
||||||
import { setAccessToken } from '@/app/components/share/utils'
|
import { setAccessToken } from '@/app/components/share/utils'
|
||||||
|
|
||||||
@ -90,6 +90,13 @@ const WebSSOForm: FC = () => {
|
|||||||
setIsLoading(false)
|
setIsLoading(false)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
else if (protocal === 'oauth2') {
|
||||||
|
fetchWebOAuth2SSOUrl(appCode, redirectUrl).then((res) => {
|
||||||
|
router.push(res.url)
|
||||||
|
}).finally(() => {
|
||||||
|
setIsLoading(false)
|
||||||
|
})
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
Toast.notify({
|
Toast.notify({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
|
@ -5,7 +5,7 @@ import type { FC } from 'react'
|
|||||||
import { useEffect, useState } from 'react'
|
import { useEffect, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import Toast from '@/app/components/base/toast'
|
import Toast from '@/app/components/base/toast'
|
||||||
import { getUserOIDCSSOUrl, getUserSAMLSSOUrl } from '@/service/sso'
|
import { getUserOAuth2SSOUrl, getUserOIDCSSOUrl, getUserSAMLSSOUrl } from '@/service/sso'
|
||||||
import Button from '@/app/components/base/button'
|
import Button from '@/app/components/base/button'
|
||||||
|
|
||||||
type UserSSOFormProps = {
|
type UserSSOFormProps = {
|
||||||
@ -47,7 +47,7 @@ const UserSSOForm: FC<UserSSOFormProps> = ({
|
|||||||
setIsLoading(false)
|
setIsLoading(false)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
else {
|
else if (protocol === 'oidc') {
|
||||||
getUserOIDCSSOUrl().then((res) => {
|
getUserOIDCSSOUrl().then((res) => {
|
||||||
document.cookie = `user-oidc-state=${res.state}`
|
document.cookie = `user-oidc-state=${res.state}`
|
||||||
router.push(res.url)
|
router.push(res.url)
|
||||||
@ -55,6 +55,21 @@ const UserSSOForm: FC<UserSSOFormProps> = ({
|
|||||||
setIsLoading(false)
|
setIsLoading(false)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
else if (protocol === 'oauth2') {
|
||||||
|
getUserOAuth2SSOUrl().then((res) => {
|
||||||
|
document.cookie = `user-oauth2-state=${res.state}`
|
||||||
|
router.push(res.url)
|
||||||
|
}).finally(() => {
|
||||||
|
setIsLoading(false)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Toast.notify({
|
||||||
|
type: 'error',
|
||||||
|
message: 'invalid SSO protocol',
|
||||||
|
})
|
||||||
|
setIsLoading(false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -159,6 +159,15 @@ export const fetchWebOIDCSSOUrl = async (appCode: string, redirectUrl: string) =
|
|||||||
}) as Promise<{ url: string }>
|
}) as Promise<{ url: string }>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const fetchWebOAuth2SSOUrl = async (appCode: string, redirectUrl: string) => {
|
||||||
|
return (getAction('get', false))(getUrl('/enterprise/sso/oauth2/login', false, ''), {
|
||||||
|
params: {
|
||||||
|
app_code: appCode,
|
||||||
|
redirect_url: redirectUrl,
|
||||||
|
},
|
||||||
|
}) as Promise<{ url: string }>
|
||||||
|
}
|
||||||
|
|
||||||
export const fetchAppMeta = async (isInstalledApp: boolean, installedAppId = '') => {
|
export const fetchAppMeta = async (isInstalledApp: boolean, installedAppId = '') => {
|
||||||
return (getAction('get', isInstalledApp))(getUrl('meta', isInstalledApp, installedAppId)) as Promise<AppMeta>
|
return (getAction('get', isInstalledApp))(getUrl('meta', isInstalledApp, installedAppId)) as Promise<AppMeta>
|
||||||
}
|
}
|
||||||
|
@ -7,3 +7,7 @@ export const getUserSAMLSSOUrl = () => {
|
|||||||
export const getUserOIDCSSOUrl = () => {
|
export const getUserOIDCSSOUrl = () => {
|
||||||
return get<{ url: string; state: string }>('/enterprise/sso/oidc/login')
|
return get<{ url: string; state: string }>('/enterprise/sso/oidc/login')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const getUserOAuth2SSOUrl = () => {
|
||||||
|
return get<{ url: string; state: string }>('/enterprise/sso/oauth2/login')
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user