fix(trigger): oauth client config
Some checks are pending
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/amd64, build-api-amd64) (push) Waiting to run
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/arm64, build-api-arm64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/amd64, build-web-amd64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/arm64, build-web-arm64) (push) Waiting to run
Build and Push API & Web / create-manifest (api, DIFY_API_IMAGE_NAME, merge-api-images) (push) Blocked by required conditions
Build and Push API & Web / create-manifest (web, DIFY_WEB_IMAGE_NAME, merge-web-images) (push) Blocked by required conditions

This commit is contained in:
yessenia
2025-10-17 10:03:32 +08:00
parent 84c09ec59d
commit fe4b63210e
5 changed files with 38 additions and 28 deletions

View File

@@ -100,7 +100,7 @@ export const CreateSubscriptionButton = ({ buttonType = CreateButtonType.FULL_BU
]
}, [t, oauthConfig, supportedMethods, methodType])
const onChooseCreateType = (type: SupportedCreationMethods) => {
const onChooseCreateType = async (type: SupportedCreationMethods) => {
if (type === SupportedCreationMethods.OAUTH) {
if (oauthConfig?.configured) {
initiateOAuth(detail?.provider || '', {
@@ -115,10 +115,10 @@ export const CreateSubscriptionButton = ({ buttonType = CreateButtonType.FULL_BU
}
})
},
onError: (error: any) => {
onError: () => {
Toast.notify({
type: 'error',
message: error?.message || t('pluginTrigger.modal.errors.authFailed'),
message: t('pluginTrigger.modal.oauth.authorization.authFailed'),
})
},
})

View File

@@ -7,6 +7,7 @@ import Toast from '@/app/components/base/toast'
import type { TriggerOAuthClientParams, TriggerOAuthConfig, TriggerSubscriptionBuilder } from '@/app/components/workflow/block-selector/types'
import OptionCard from '@/app/components/workflow/nodes/_base/components/option-card'
import { openOAuthPopup } from '@/hooks/use-oauth'
import type { ConfigureTriggerOAuthPayload } from '@/service/use-triggers'
import {
useConfigureTriggerOAuth,
useDeleteTriggerOAuth,
@@ -71,10 +72,11 @@ export const OAuthClientSettingsModal = ({ oauthConfig, onClose, showOAuthCreate
}
})
},
onError: (error: any) => {
onError: () => {
setAuthorizationStatus(AuthorizationStatusEnum.Failed)
Toast.notify({
type: 'error',
message: error?.message || t('pluginTrigger.modal.errors.authFailed'),
message: t('pluginTrigger.modal.oauth.authorization.authFailed'),
})
},
})
@@ -125,28 +127,32 @@ export const OAuthClientSettingsModal = ({ oauthConfig, onClose, showOAuthCreate
}
const handleSave = (needAuth: boolean) => {
const clientParams = clientFormRef.current?.getFormValues({})?.values || {}
if (clientParams.client_id === oauthConfig?.params.client_id)
clientParams.client_id = '[__HIDDEN__]'
if (clientParams.client_secret === oauthConfig?.params.client_secret)
clientParams.client_secret = '[__HIDDEN__]'
configureOAuth({
const isCustom = clientType === ClientTypeEnum.Custom
const params: ConfigureTriggerOAuthPayload = {
provider: providerName,
client_params: clientParams as TriggerOAuthClientParams,
enabled: clientType === ClientTypeEnum.Custom,
}, {
enabled: isCustom,
}
if (isCustom) {
const clientFormValues = clientFormRef.current?.getFormValues({}) as { values: TriggerOAuthClientParams, isCheckValidated: boolean }
if (!clientFormValues.isCheckValidated)
return
const clientParams = clientFormValues.values
if (clientParams.client_id === oauthConfig?.params.client_id)
clientParams.client_id = '[__HIDDEN__]'
if (clientParams.client_secret === oauthConfig?.params.client_secret)
clientParams.client_secret = '[__HIDDEN__]'
params.client_params = clientParams
}
configureOAuth(params, {
onSuccess: () => {
if (needAuth)
handleAuthorization()
else
onClose()
Toast.notify({
type: 'success',
message: t('pluginTrigger.modal.oauth.configuration.success'),
})
},
onError: (error: any) => {
Toast.notify({

View File

@@ -116,7 +116,7 @@ const translation = {
authorizeButton: 'Authorize with {{provider}}',
waitingAuth: 'Waiting for authorization...',
authSuccess: 'Authorization successful',
authFailed: 'Authorization failed',
authFailed: 'Failed to get OAuth authorization information',
waitingJump: 'Authorized, waiting for jump',
},
configuration: {

View File

@@ -116,7 +116,7 @@ const translation = {
authorizeButton: '使用 {{provider}} 授权',
waitingAuth: '等待授权中...',
authSuccess: '授权成功',
authFailed: '授权失败',
authFailed: '获取 OAuth 授权信息失败',
waitingJump: '已授权,待跳转',
},
configuration: {

View File

@@ -233,14 +233,16 @@ export const useTriggerOAuthConfig = (provider: string, enabled = true) => {
})
}
export type ConfigureTriggerOAuthPayload = {
provider: string
client_params?: TriggerOAuthClientParams
enabled: boolean
}
export const useConfigureTriggerOAuth = () => {
return useMutation({
mutationKey: [NAME_SPACE, 'configure-oauth'],
mutationFn: (payload: {
provider: string
client_params: TriggerOAuthClientParams
enabled: boolean
}) => {
mutationFn: (payload: ConfigureTriggerOAuthPayload) => {
const { provider, ...body } = payload
return post<{ result: string }>(
`/workspaces/current/trigger-provider/${provider}/oauth/client`,
@@ -267,6 +269,8 @@ export const useInitiateTriggerOAuth = () => {
mutationFn: (provider: string) => {
return get<{ authorization_url: string; subscription_builder: TriggerSubscriptionBuilder }>(
`/workspaces/current/trigger-provider/${provider}/subscriptions/oauth/authorize`,
{},
{ silent: true },
)
},
})