From e2ba68d974f8525c2905cab64725966734e7b3b9 Mon Sep 17 00:00:00 2001 From: J1za Date: Tue, 28 Jan 2025 12:22:31 +0200 Subject: [PATCH] feat(UI-1260): add custom OAuth GitHub connection --- .../connections/integrations/github/add.tsx | 2 +- .../connections/integrationsDataKeys.constants.ts | 1 + src/hooks/useConnectionForm.ts | 14 +++++++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/components/organisms/connections/integrations/github/add.tsx b/src/components/organisms/connections/integrations/github/add.tsx index 7ae61e1d84..f05c7a5464 100644 --- a/src/components/organisms/connections/integrations/github/add.tsx +++ b/src/components/organisms/connections/integrations/github/add.tsx @@ -47,7 +47,7 @@ export const GithubIntegrationAddForm = ({ await handleOAuth(connectionId, Integrations.github); break; case ConnectionAuthType.CustomOAuth: - await handleCustomOauth(connectionId, Integrations.github); + await handleCustomOauth(connectionId, Integrations.github, ConnectionAuthType.CustomOAuth); break; default: break; diff --git a/src/constants/connections/integrationsDataKeys.constants.ts b/src/constants/connections/integrationsDataKeys.constants.ts index fde6af01ed..14426844f9 100644 --- a/src/constants/connections/integrationsDataKeys.constants.ts +++ b/src/constants/connections/integrationsDataKeys.constants.ts @@ -1,4 +1,5 @@ export const integrationDataKeys = { auth0: ["cid", "client_id", "client_secret", "auth0_domain"], google: ["auth_scopes", "cal_id", "form_id"], + github: ["client_id", "client_secret", "app_id", "webhook_secret", "enterprise_url", "private_key"], }; diff --git a/src/hooks/useConnectionForm.ts b/src/hooks/useConnectionForm.ts index 6ebaf1c146..fe8d3a0e15 100644 --- a/src/hooks/useConnectionForm.ts +++ b/src/hooks/useConnectionForm.ts @@ -362,12 +362,16 @@ export const useConnectionForm = (validationSchema: ZodObject, mode } }; - const handleCustomOauth = async (oauthConnectionId: string, integrationName: string) => { + const handleCustomOauth = async ( + oauthConnectionId: string, + integrationName: keyof typeof Integrations | typeof defaultGoogleConnectionName, + authType?: ConnectionAuthType.CustomOAuth | ConnectionAuthType.Oauth + ) => { setIsLoading(true); try { await VariablesService.setByConnectiontId(oauthConnectionId, { name: "auth_type", - value: ConnectionAuthType.Oauth, + value: authType || ConnectionAuthType.Oauth, isSecret: false, scopeId: oauthConnectionId, }); @@ -377,9 +381,13 @@ export const useConnectionForm = (validationSchema: ZodObject, mode connectionData, integrationDataKeys[integrationName.toString() as keyof typeof integrationDataKeys] ); + const intCustomOAuthUrl: Partial> = { + [Integrations.github]: "custom-oauth", + [Integrations.auth0]: "save", + }; openPopup( - `${apiBaseUrl}/${integrationName}/save?cid=${oauthConnectionId}&origin=web&auth_type=oauth&${urlParams}`, + `${apiBaseUrl}/${integrationName}/${intCustomOAuthUrl[integrationName]}?cid=${oauthConnectionId}&origin=web&auth_type=oauth&${urlParams}`, "Authorize" ); startCheckingStatus(oauthConnectionId);