From df7ad9e6457fcca53e404421b1bda199ee26b92a Mon Sep 17 00:00:00 2001 From: "Kee, Zhen Wei" Date: Sun, 16 Jul 2023 21:40:33 +0800 Subject: [PATCH 1/3] feat(integration): add integration with BitBucket --- .env.example | 2 + backend/src/config/index.ts | 2 + .../v1/integrationAuthController.ts | 65 +++++- backend/src/integrations/apps.ts | 83 ++++++++ backend/src/integrations/exchange.ts | 57 +++++ backend/src/integrations/refresh.ts | 60 ++++++ backend/src/integrations/sync.ts | 129 +++++++++++- backend/src/models/integration.ts | 5 +- backend/src/models/integrationAuth.ts | 22 +- backend/src/routes/v1/integrationAuth.ts | 14 ++ backend/src/variables/integration.ts | 16 +- docs/images/integrations-bitbucket-auth.png | Bin 0 -> 32266 bytes docs/images/integrations-bitbucket.png | Bin 0 -> 188676 bytes docs/integrations/cicd/bitbucket.mdx | 29 +++ docs/integrations/overview.mdx | 1 + docs/mint.json | 3 +- docs/self-hosting/configuration/envars.mdx | 8 + frontend/public/data/frequentConstants.ts | 39 ++-- .../public/images/integrations/BitBucket.png | Bin 0 -> 9665 bytes .../src/hooks/api/integrationAuth/index.tsx | 3 +- .../src/hooks/api/integrationAuth/queries.tsx | 48 ++++- .../src/hooks/api/integrationAuth/types.ts | 6 + .../pages/integrations/bitbucket/create.tsx | 198 ++++++++++++++++++ .../bitbucket/oauth2/callback.tsx | 34 +++ .../IntegrationPage.utils.tsx | 3 + .../IntegrationsSection.tsx | 3 +- 26 files changed, 794 insertions(+), 36 deletions(-) create mode 100644 docs/images/integrations-bitbucket-auth.png create mode 100644 docs/images/integrations-bitbucket.png create mode 100644 docs/integrations/cicd/bitbucket.mdx create mode 100644 frontend/public/images/integrations/BitBucket.png create mode 100644 frontend/src/pages/integrations/bitbucket/create.tsx create mode 100644 frontend/src/pages/integrations/bitbucket/oauth2/callback.tsx diff --git a/.env.example b/.env.example index 1926bcef63..d3ec397dea 100644 --- a/.env.example +++ b/.env.example @@ -47,11 +47,13 @@ CLIENT_ID_VERCEL= CLIENT_ID_NETLIFY= CLIENT_ID_GITHUB= CLIENT_ID_GITLAB= +CLIENT_ID_BITBUCKET= CLIENT_SECRET_HEROKU= CLIENT_SECRET_VERCEL= CLIENT_SECRET_NETLIFY= CLIENT_SECRET_GITHUB= CLIENT_SECRET_GITLAB= +CLIENT_SECRET_BITBUCKET= CLIENT_SLUG_VERCEL= # Sentry (optional) for monitoring errors diff --git a/backend/src/config/index.ts b/backend/src/config/index.ts index e023a12c88..0259c829ed 100644 --- a/backend/src/config/index.ts +++ b/backend/src/config/index.ts @@ -37,6 +37,7 @@ export const getClientIdNetlify = async () => (await client.getSecret("CLIENT_ID export const getClientIdGitHub = async () => (await client.getSecret("CLIENT_ID_GITHUB")).secretValue; export const getClientIdGitLab = async () => (await client.getSecret("CLIENT_ID_GITLAB")).secretValue; export const getClientIdGoogle = async () => (await client.getSecret("CLIENT_ID_GOOGLE")).secretValue; +export const getClientIdBitBucket = async () => (await client.getSecret("CLIENT_ID_BITBUCKET")).secretValue; export const getClientSecretAzure = async () => (await client.getSecret("CLIENT_SECRET_AZURE")).secretValue; export const getClientSecretHeroku = async () => (await client.getSecret("CLIENT_SECRET_HEROKU")).secretValue; export const getClientSecretVercel = async () => (await client.getSecret("CLIENT_SECRET_VERCEL")).secretValue; @@ -44,6 +45,7 @@ export const getClientSecretNetlify = async () => (await client.getSecret("CLIEN export const getClientSecretGitHub = async () => (await client.getSecret("CLIENT_SECRET_GITHUB")).secretValue; export const getClientSecretGitLab = async () => (await client.getSecret("CLIENT_SECRET_GITLAB")).secretValue; export const getClientSecretGoogle = async () => (await client.getSecret("CLIENT_SECRET_GOOGLE")).secretValue; +export const getClientSecretBitBucket = async () => (await client.getSecret("CLIENT_SECRET_BITBUCKET")).secretValue; export const getClientSlugVercel = async () => (await client.getSecret("CLIENT_SLUG_VERCEL")).secretValue; export const getPostHogHost = async () => (await client.getSecret("POSTHOG_HOST")).secretValue || "https://app.posthog.com"; export const getPostHogProjectApiKey = async () => (await client.getSecret("POSTHOG_PROJECT_API_KEY")).secretValue || "phc_nSin8j5q2zdhpFDI1ETmFNUIuTG4DwKVyIigrY10XiE"; diff --git a/backend/src/controllers/v1/integrationAuthController.ts b/backend/src/controllers/v1/integrationAuthController.ts index f625f10a2d..9072f459b9 100644 --- a/backend/src/controllers/v1/integrationAuthController.ts +++ b/backend/src/controllers/v1/integrationAuthController.ts @@ -7,6 +7,7 @@ import { IntegrationService } from "../../services"; import { ALGORITHM_AES_256_GCM, ENCODING_SCHEME_UTF8, + INTEGRATION_BITBUCKET_API_URL, INTEGRATION_RAILWAY_API_URL, INTEGRATION_SET, INTEGRATION_VERCEL_API_URL, @@ -141,12 +142,14 @@ export const saveIntegrationAccessToken = async (req: Request, res: Response) => */ export const getIntegrationAuthApps = async (req: Request, res: Response) => { const teamId = req.query.teamId as string; + const workspaceSlug = req.query.workspaceSlug as string; const apps = await getApps({ integrationAuth: req.integrationAuth, accessToken: req.accessToken, accessId: req.accessId, - ...(teamId && { teamId }) + ...(teamId && { teamId }), + ...(workspaceSlug && { workspaceSlug }) }); return res.status(200).send({ @@ -382,6 +385,66 @@ export const getIntegrationAuthRailwayServices = async (req: Request, res: Respo }); }; +/** + * Return list of workspaces allowed for integration with integration authorization id [integrationAuthId] + * @param req + * @param res + * @returns + */ +export const getIntegrationAuthBitBucketWorkspaces = async (req: Request, res: Response) => { + + interface WorkspaceResponse { + size: number; + page: number; + pageLen: number; + next: string; + previous: string; + values: Array; + } + + interface Workspace { + type: string; + uuid: string; + name: string; + slug: string; + is_private: boolean; + created_on: string; + updated_on: string; + } + + const workspaces: Workspace[] = []; + let hasNextPage = true; + let workspaceUrl = `${INTEGRATION_BITBUCKET_API_URL}/2.0/workspaces` + + while (hasNextPage) { + const { data }: { data: WorkspaceResponse } = await standardRequest.get( + workspaceUrl, + { + headers: { + Authorization: `Bearer ${req.accessToken}`, + "Accept-Encoding": "application/json" + } + } + ); + + if (data?.values.length > 0) { + data.values.forEach((workspace) => { + workspaces.push(workspace) + }) + } + + if (data.next) { + workspaceUrl = data.next + } else { + hasNextPage = false + } + } + + return res.status(200).send({ + workspaces + }); +}; + /** * Delete integration authorization with id [integrationAuthId] * @param req diff --git a/backend/src/integrations/apps.ts b/backend/src/integrations/apps.ts index b2fec9292e..e68f29f56e 100644 --- a/backend/src/integrations/apps.ts +++ b/backend/src/integrations/apps.ts @@ -5,6 +5,8 @@ import { INTEGRATION_AWS_PARAMETER_STORE, INTEGRATION_AWS_SECRET_MANAGER, INTEGRATION_AZURE_KEY_VAULT, + INTEGRATION_BITBUCKET, + INTEGRATION_BITBUCKET_API_URL, INTEGRATION_CHECKLY, INTEGRATION_CHECKLY_API_URL, INTEGRATION_CIRCLECI, @@ -54,11 +56,13 @@ const getApps = async ({ accessToken, accessId, teamId, + workspaceSlug, }: { integrationAuth: IIntegrationAuth; accessToken: string; accessId?: string; teamId?: string; + workspaceSlug?: string; }) => { let apps: App[] = []; switch (integrationAuth.integration) { @@ -145,6 +149,11 @@ const getApps = async ({ accountId: accessId }) break; + case INTEGRATION_BITBUCKET: + apps = await getAppsBitBucket({ + accessToken, + workspaceSlug + }) } return apps; @@ -721,4 +730,78 @@ const getAppsCloudflarePages = async ({ return apps; } +/** + * Return list of repositories for the BitBucket integration based on provided BitBucket workspace + * @param {Object} obj + * @param {String} obj.accessToken - access token for BitBucket API + * @param {String} obj.workspaceSlug - Workspace identifier for fetching BitBucket repositories + * @returns {Object[]} apps - BitBucket repositories + * @returns {String} apps.name - name of BitBucket repository + */ +const getAppsBitBucket = async ({ + accessToken, + workspaceSlug, +}: { + accessToken: string; + workspaceSlug?: string; +}) => { + interface RepositoriesResponse { + size: number; + page: number; + pageLen: number; + next: string; + previous: string; + values: Array; + } + + interface Repository { + type: string; + uuid: string; + name: string; + is_private: boolean; + created_on: string; + updated_on: string; + } + + if (!workspaceSlug) { + return [] + } + + const repositories: Repository[] = []; + let hasNextPage = true; + let repositoriesUrl = `${INTEGRATION_BITBUCKET_API_URL}/2.0/repositories/${workspaceSlug}` + + while (hasNextPage) { + const { data }: { data: RepositoriesResponse } = await standardRequest.get( + repositoriesUrl, + { + headers: { + Authorization: `Bearer ${accessToken}`, + "Accept": "application/json", + }, + } + ); + + if (data?.values.length > 0) { + data.values.forEach((repository) => { + repositories.push(repository) + }) + } + + if (data.next) { + repositoriesUrl = data.next + } else { + hasNextPage = false + } + } + + const apps = repositories.map((repository) => { + return { + name: repository.name, + appId: repository.uuid, + }; + }); + return apps; +} + export { getApps }; diff --git a/backend/src/integrations/exchange.ts b/backend/src/integrations/exchange.ts index 12948d4030..da42a00fc7 100644 --- a/backend/src/integrations/exchange.ts +++ b/backend/src/integrations/exchange.ts @@ -2,6 +2,8 @@ import { standardRequest } from "../config/request"; import { INTEGRATION_AZURE_KEY_VAULT, INTEGRATION_AZURE_TOKEN_URL, + INTEGRATION_BITBUCKET, + INTEGRATION_BITBUCKET_TOKEN_URL, INTEGRATION_GITHUB, INTEGRATION_GITHUB_TOKEN_URL, INTEGRATION_GITLAB, @@ -15,11 +17,13 @@ import { } from "../variables"; import { getClientIdAzure, + getClientIdBitBucket, getClientIdGitHub, getClientIdGitLab, getClientIdNetlify, getClientIdVercel, getClientSecretAzure, + getClientSecretBitBucket, getClientSecretGitHub, getClientSecretGitLab, getClientSecretHeroku, @@ -78,6 +82,15 @@ interface ExchangeCodeGitlabResponse { created_at: number; } +interface ExchangeCodeBitBucketResponse { + access_token: string; + token_type: string; + expires_in: number; + refresh_token: string; + scopes: string; + state: string; +} + /** * Return [accessToken], [accessExpiresAt], and [refreshToken] for OAuth2 * code-token exchange for integration named [integration] @@ -129,6 +142,11 @@ const exchangeCode = async ({ obj = await exchangeCodeGitlab({ code, }); + break; + case INTEGRATION_BITBUCKET: + obj = await exchangeCodeBitBucket({ + code, + }) } return obj; @@ -347,4 +365,43 @@ const exchangeCodeGitlab = async ({ code }: { code: string }) => { }; }; +/** + * Return [accessToken], [accessExpiresAt], and [refreshToken] for BitBucket + * code-token exchange + * @param {Object} obj1 + * @param {Object} obj1.code - code for code-token exchange + * @returns {Object} obj2 + * @returns {String} obj2.accessToken - access token for BitBucket API + * @returns {String} obj2.refreshToken - refresh token for BitBucket API + * @returns {Date} obj2.accessExpiresAt - date of expiration for access token + */ +const exchangeCodeBitBucket = async ({ code }: { code: string }) => { + const accessExpiresAt = new Date(); + const res: ExchangeCodeBitBucketResponse = ( + await standardRequest.post( + INTEGRATION_BITBUCKET_TOKEN_URL, + new URLSearchParams({ + grant_type: "authorization_code", + code: code, + client_id: await getClientIdBitBucket(), + client_secret: await getClientSecretBitBucket(), + redirect_uri: `${await getSiteURL()}/integrations/bitbucket/oauth2/callback`, + } as any), + { + headers: { + "Accept-Encoding": "application/json", + }, + } + ) + ).data; + + accessExpiresAt.setSeconds(accessExpiresAt.getSeconds() + res.expires_in); + + return { + accessToken: res.access_token, + refreshToken: res.refresh_token, + accessExpiresAt, + }; +}; + export { exchangeCode }; diff --git a/backend/src/integrations/refresh.ts b/backend/src/integrations/refresh.ts index d530ab2f58..426d414f5a 100644 --- a/backend/src/integrations/refresh.ts +++ b/backend/src/integrations/refresh.ts @@ -2,6 +2,8 @@ import { standardRequest } from "../config/request"; import { IIntegrationAuth } from "../models"; import { INTEGRATION_AZURE_KEY_VAULT, + INTEGRATION_BITBUCKET, + INTEGRATION_BITBUCKET_TOKEN_URL, INTEGRATION_GITLAB, INTEGRATION_HEROKU, } from "../variables"; @@ -13,8 +15,10 @@ import { import { IntegrationService } from "../services"; import { getClientIdAzure, + getClientIdBitBucket, getClientIdGitLab, getClientSecretAzure, + getClientSecretBitBucket, getClientSecretGitLab, getClientSecretHeroku, getSiteURL, @@ -46,6 +50,15 @@ interface RefreshTokenGitLabResponse { created_at: number; } +interface RefreshTokenBitBucketResponse { + access_token: string; + token_type: string; + expires_in: number; + refresh_token: string; + scopes: string; + state: string; +} + /** * Return new access token by exchanging refresh token [refreshToken] for integration * named [integration] @@ -83,6 +96,11 @@ const exchangeRefresh = async ({ refreshToken, }); break; + case INTEGRATION_BITBUCKET: + tokenDetails = await exchangeRefreshBitBucket({ + refreshToken, + }); + break; default: throw new Error("Failed to exchange token for incompatible integration"); } @@ -218,4 +236,46 @@ const exchangeRefreshGitLab = async ({ }; }; +/** + * Return new access token by exchanging refresh token [refreshToken] for the + * BitBucket integration + * @param {Object} obj + * @param {String} obj.refreshToken - refresh token to use to get new access token for BitBucket + * @returns + */ +const exchangeRefreshBitBucket = async ({ + refreshToken, +}: { + refreshToken: string; +}) => { + const accessExpiresAt = new Date(); + const { + data, + }: { + data: RefreshTokenBitBucketResponse; + } = await standardRequest.post( + INTEGRATION_BITBUCKET_TOKEN_URL, + new URLSearchParams({ + grant_type: "refresh_token", + refresh_token: refreshToken, + client_id: await getClientIdBitBucket(), + client_secret: await getClientSecretBitBucket(), + redirect_uri: `${await getSiteURL()}/integrations/bitbucket/oauth2/callback`, + } as any), + { + headers: { + "Accept-Encoding": "application/json", + }, + } + ); + + accessExpiresAt.setSeconds(accessExpiresAt.getSeconds() + data.expires_in); + + return { + accessToken: data.access_token, + refreshToken: data.refresh_token, + accessExpiresAt, + }; +}; + export { exchangeRefresh }; diff --git a/backend/src/integrations/sync.ts b/backend/src/integrations/sync.ts index 5d8efa1019..7b7456b86f 100644 --- a/backend/src/integrations/sync.ts +++ b/backend/src/integrations/sync.ts @@ -14,6 +14,8 @@ import { INTEGRATION_AWS_PARAMETER_STORE, INTEGRATION_AWS_SECRET_MANAGER, INTEGRATION_AZURE_KEY_VAULT, + INTEGRATION_BITBUCKET, + INTEGRATION_BITBUCKET_API_URL, INTEGRATION_CHECKLY, INTEGRATION_CHECKLY_API_URL, INTEGRATION_CIRCLECI, @@ -202,7 +204,14 @@ const syncSecrets = async ({ accessToken }); break; - } + case INTEGRATION_BITBUCKET: + await syncSecretsBitBucket({ + integration, + secrets, + accessToken, + }); + break; + } }; /** @@ -1937,4 +1946,122 @@ const syncSecretsCloudflarePages = async ({ ); } +/** + * Sync/push [secrets] to BitBucket repo with name [integration.app] + * @param {Object} obj + * @param {IIntegration} obj.integration - integration details + * @param {IIntegrationAuth} obj.integrationAuth - integration auth details + * @param {Object} obj.secrets - secrets to push to integration (object where keys are secret keys and values are secret values) + * @param {String} obj.accessToken - access token for BitBucket integration + */ +const syncSecretsBitBucket = async ({ + integration, + secrets, + accessToken, +}: { + integration: IIntegration; + secrets: any; + accessToken: string; +}) => { + interface VariablesResponse { + size: number; + page: number; + pageLen: number; + next: string; + previous: string; + values: Array; + } + + interface Variable { + type: string; + uuid: string; + key: string; + value: string; + secured: boolean; + } + + const existingSecrets: Variable[] = []; + const workspaceSlug = integration.targetEnvironmentId + const repoSlug = integration.appId + let hasNextPage = true; + let variablesUrl = `${INTEGRATION_BITBUCKET_API_URL}/2.0/repositories/${workspaceSlug}/${repoSlug}/pipelines_config/variables` + + // Fetch all repository variables + while (hasNextPage) { + const { data }: { data: VariablesResponse } = await standardRequest.get( + variablesUrl, + { + headers: { + Authorization: `Bearer ${accessToken}`, + "Accept": "application/json", + }, + } + ); + + if (data?.values.length > 0) { + data.values.forEach((variable) => { + existingSecrets.push(variable) + }) + } + + if (data.next) { + variablesUrl = data.next + } else { + hasNextPage = false + } + } + + Object.keys(secrets).forEach(async (key) => { + const existingSecret = existingSecrets.find((secret) => secret.key.toUpperCase() === key.toUpperCase()); + if (existingSecret) { + // Update existing secrets + await standardRequest.put( + `${variablesUrl}/${existingSecret.uuid}`, + { + key, + value: secrets[key], + secured: true + }, + { + headers: { + Authorization: `Bearer ${accessToken}`, + "Accept": "application/json", + }, + } + ); + } else { + // Create new secrets + await standardRequest.post( + variablesUrl, + { + key, + value: secrets[key], + secured: true + }, + { + headers: { + Authorization: `Bearer ${accessToken}`, + "Accept": "application/json", + }, + } + ); + } + }) + + // Delete secrets + existingSecrets.forEach(async (existingSecret) => { + if (!(existingSecret.key in secrets) && existingSecret.secured) { + await standardRequest.delete( + `${variablesUrl}/${existingSecret.uuid}`, + { + headers: { + Authorization: `Bearer ${accessToken}`, + "Accept": "application/json", + }, + } + ); + } + }) +} + export { syncSecrets }; diff --git a/backend/src/models/integration.ts b/backend/src/models/integration.ts index c4021977db..2599e3cbcc 100644 --- a/backend/src/models/integration.ts +++ b/backend/src/models/integration.ts @@ -3,6 +3,7 @@ import { INTEGRATION_AWS_PARAMETER_STORE, INTEGRATION_AWS_SECRET_MANAGER, INTEGRATION_AZURE_KEY_VAULT, + INTEGRATION_BITBUCKET, INTEGRATION_CHECKLY, INTEGRATION_CIRCLECI, INTEGRATION_CLOUDFLARE_PAGES, @@ -54,7 +55,8 @@ export interface IIntegration { | "supabase" | "checkly" | "hashicorp-vault" - | "cloudflare-pages"; + | "cloudflare-pages" + | "bitbucket"; integrationAuth: Types.ObjectId; } @@ -144,6 +146,7 @@ const integrationSchema = new Schema( INTEGRATION_CHECKLY, INTEGRATION_HASHICORP_VAULT, INTEGRATION_CLOUDFLARE_PAGES, + INTEGRATION_BITBUCKET, ], required: true, }, diff --git a/backend/src/models/integrationAuth.ts b/backend/src/models/integrationAuth.ts index ed3dabadfb..26073c3b03 100644 --- a/backend/src/models/integrationAuth.ts +++ b/backend/src/models/integrationAuth.ts @@ -6,6 +6,7 @@ import { INTEGRATION_AWS_PARAMETER_STORE, INTEGRATION_AWS_SECRET_MANAGER, INTEGRATION_AZURE_KEY_VAULT, + INTEGRATION_BITBUCKET, INTEGRATION_CIRCLECI, INTEGRATION_CLOUDFLARE_PAGES, INTEGRATION_FLYIO, @@ -25,7 +26,25 @@ import { export interface IIntegrationAuth extends Document { _id: Types.ObjectId; workspace: Types.ObjectId; - integration: "heroku" | "vercel" | "netlify" | "github" | "gitlab" | "render" | "railway" | "flyio" | "azure-key-vault" | "laravel-forge" | "circleci" | "travisci" | "supabase" | "aws-parameter-store" | "aws-secret-manager" | "checkly" | "cloudflare-pages"; + integration: + | "heroku" + | "vercel" + | "netlify" + | "github" + | "gitlab" + | "render" + | "railway" + | "flyio" + | "azure-key-vault" + | "laravel-forge" + | "circleci" + | "travisci" + | "supabase" + | "aws-parameter-store" + | "aws-secret-manager" + | "checkly" + | "cloudflare-pages" + | "bitbucket"; teamId: string; accountId: string; url: string; @@ -71,6 +90,7 @@ const integrationAuthSchema = new Schema( INTEGRATION_SUPABASE, INTEGRATION_HASHICORP_VAULT, INTEGRATION_CLOUDFLARE_PAGES, + INTEGRATION_BITBUCKET ], required: true, }, diff --git a/backend/src/routes/v1/integrationAuth.ts b/backend/src/routes/v1/integrationAuth.ts index 28fa65af80..5e5f1e6d17 100644 --- a/backend/src/routes/v1/integrationAuth.ts +++ b/backend/src/routes/v1/integrationAuth.ts @@ -81,6 +81,7 @@ router.get( }), param("integrationAuthId"), query("teamId"), + query("workspaceSlug"), validateRequest, integrationAuthController.getIntegrationAuthApps ); @@ -141,6 +142,19 @@ router.get( integrationAuthController.getIntegrationAuthRailwayServices ); +router.get( + "/:integrationAuthId/bitbucket/workspaces", + requireAuth({ + acceptedAuthModes: [AUTH_MODE_JWT], + }), + requireIntegrationAuthorizationAuth({ + acceptedRoles: [ADMIN, MEMBER], + }), + param("integrationAuthId"), + validateRequest, + integrationAuthController.getIntegrationAuthBitBucketWorkspaces +); + router.delete( "/:integrationAuthId", requireAuth({ diff --git a/backend/src/variables/integration.ts b/backend/src/variables/integration.ts index 18eaeb0494..fc4397871b 100644 --- a/backend/src/variables/integration.ts +++ b/backend/src/variables/integration.ts @@ -1,5 +1,6 @@ import { getClientIdAzure, + getClientIdBitBucket, getClientIdGitHub, getClientIdGitLab, getClientIdHeroku, @@ -26,6 +27,7 @@ export const INTEGRATION_SUPABASE = "supabase"; export const INTEGRATION_CHECKLY = "checkly"; export const INTEGRATION_HASHICORP_VAULT = "hashicorp-vault"; export const INTEGRATION_CLOUDFLARE_PAGES = "cloudflare-pages"; +export const INTEGRATION_BITBUCKET = "bitbucket"; export const INTEGRATION_SET = new Set([ INTEGRATION_AZURE_KEY_VAULT, INTEGRATION_HEROKU, @@ -41,7 +43,8 @@ export const INTEGRATION_SET = new Set([ INTEGRATION_SUPABASE, INTEGRATION_CHECKLY, INTEGRATION_HASHICORP_VAULT, - INTEGRATION_CLOUDFLARE_PAGES + INTEGRATION_CLOUDFLARE_PAGES, + INTEGRATION_BITBUCKET ]); // integration types @@ -56,6 +59,7 @@ export const INTEGRATION_NETLIFY_TOKEN_URL = "https://api.netlify.com/oauth/toke export const INTEGRATION_GITHUB_TOKEN_URL = "https://github.com/login/oauth/access_token"; export const INTEGRATION_GITLAB_TOKEN_URL = "https://gitlab.com/oauth/token"; +export const INTEGRATION_BITBUCKET_TOKEN_URL = "https://bitbucket.org/site/oauth2/access_token" // integration apps endpoints export const INTEGRATION_HEROKU_API_URL = "https://api.heroku.com"; @@ -71,6 +75,7 @@ export const INTEGRATION_SUPABASE_API_URL = "https://api.supabase.com"; export const INTEGRATION_LARAVELFORGE_API_URL = "https://forge.laravel.com"; export const INTEGRATION_CHECKLY_API_URL = "https://api.checklyhq.com"; export const INTEGRATION_CLOUDFLARE_PAGES_API_URL = "https://api.cloudflare.com"; +export const INTEGRATION_BITBUCKET_API_URL = "https://api.bitbucket.org/"; export const getIntegrationOptions = async () => { const INTEGRATION_OPTIONS = [ @@ -245,6 +250,15 @@ export const getIntegrationOptions = async () => { type: "pat", clientId: "", docsLink: "" + }, + { + name: "BitBucket", + slug: "bitbucket", + image: "BitBucket.png", + isAvailable: true, + type: "oauth", + clientId: await getClientIdBitBucket(), + docsLink: "" } ] diff --git a/docs/images/integrations-bitbucket-auth.png b/docs/images/integrations-bitbucket-auth.png new file mode 100644 index 0000000000000000000000000000000000000000..edacf10850c2eb4bd0bd38865381e38843347f21 GIT binary patch literal 32266 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 literal 0 HcmV?d00001 diff --git a/docs/integrations/cicd/bitbucket.mdx b/docs/integrations/cicd/bitbucket.mdx new file mode 100644 index 0000000000..183ec075b2 --- /dev/null +++ b/docs/integrations/cicd/bitbucket.mdx @@ -0,0 +1,29 @@ +--- +title: "BitBucket" +description: "How to sync secrets from Infisical to BitBucket" +--- + +Prerequisites: + +- Set up and add envars to [Infisical Cloud](https://app.infisical.com) + +## Navigate to your project's integrations tab + +![integrations](../../images/integrations.png) + +## Authorize Infisical for BitBucket + +Press on the BitBucket tile and grant Infisical access to your BitBucket account. + +![integrations bitbucket authorization](../../images/integrations-bitbucket-auth.png) + + + If this is your project's first cloud integration, then you'll have to grant Infisical access to your project's environment variables. + Although this step breaks E2EE, it's necessary for Infisical to sync the environment variables to the cloud platform. + + +## Start integration + +Select which Infisical environment secrets you want to sync to which BitBucket repo and press start integration to start syncing secrets to the repo. + +![integrations bitbucket](../../images/integrations-bitbucket.png) diff --git a/docs/integrations/overview.mdx b/docs/integrations/overview.mdx index b054a52cd1..decc261848 100644 --- a/docs/integrations/overview.mdx +++ b/docs/integrations/overview.mdx @@ -28,6 +28,7 @@ Missing an integration? [Throw in a request](https://github.com/Infisical/infisi | [AWS Parameter Store](/integrations/cloud/aws-parameter-store) | Cloud | Available | | [AWS Secret Manager](/integrations/cloud/aws-secret-manager) | Cloud | Available | | [Azure Key Vault](/integrations/cloud/azure-key-vault) | Cloud | Available | +| [BitBucket](/integrations/cicd/bitbucket) | CI/CD | Available | | [GitHub Actions](/integrations/cicd/githubactions) | CI/CD | Available | | [GitLab](/integrations/cicd/gitlab) | CI/CD | Available | | [CircleCI](/integrations/cicd/circleci) | CI/CD | Available | diff --git a/docs/mint.json b/docs/mint.json index a749524ef8..e441f0ada9 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -220,7 +220,8 @@ "integrations/cicd/githubactions", "integrations/cicd/gitlab", "integrations/cicd/circleci", - "integrations/cicd/travisci" + "integrations/cicd/travisci", + "integrations/cicd/bitbucket" ] }, { diff --git a/docs/self-hosting/configuration/envars.mdx b/docs/self-hosting/configuration/envars.mdx index fddf6f82ed..1db8822602 100644 --- a/docs/self-hosting/configuration/envars.mdx +++ b/docs/self-hosting/configuration/envars.mdx @@ -107,6 +107,14 @@ Other environment variables are listed below to increase the functionality of yo OAuth2 slug for Vercel integration + + + OAuth2 client ID for BitBucket integration + + + + OAuth2 client secret for BitBucket integration + To integrate with external auth providers, provide value for the related keys diff --git a/frontend/public/data/frequentConstants.ts b/frontend/public/data/frequentConstants.ts index c3c74091d2..64f824de2a 100644 --- a/frontend/public/data/frequentConstants.ts +++ b/frontend/public/data/frequentConstants.ts @@ -3,25 +3,26 @@ interface Mapping { } const integrationSlugNameMapping: Mapping = { - 'azure-key-vault': 'Azure Key Vault', - 'aws-parameter-store': 'AWS Parameter Store', - 'aws-secret-manager': 'AWS Secret Manager', - 'heroku': 'Heroku', - 'vercel': 'Vercel', - 'netlify': 'Netlify', - 'github': 'GitHub', - 'gitlab': 'GitLab', - 'render': 'Render', - 'laravel-forge': "Laravel Forge", - 'railway': 'Railway', - 'flyio': 'Fly.io', - 'circleci': 'CircleCI', - 'travisci': 'TravisCI', - 'supabase': 'Supabase', - 'checkly': 'Checkly', - 'hashicorp-vault': 'Vault', - 'cloudflare-pages': 'Cloudflare Pages' -} + "azure-key-vault": "Azure Key Vault", + "aws-parameter-store": "AWS Parameter Store", + "aws-secret-manager": "AWS Secret Manager", + heroku: "Heroku", + vercel: "Vercel", + netlify: "Netlify", + github: "GitHub", + gitlab: "GitLab", + render: "Render", + "laravel-forge": "Laravel Forge", + railway: "Railway", + flyio: "Fly.io", + circleci: "CircleCI", + travisci: "TravisCI", + supabase: "Supabase", + checkly: "Checkly", + "hashicorp-vault": "Vault", + "cloudflare-pages": "Cloudflare Pages", + bitbucket: "BitBucket" +}; const envMapping: Mapping = { Development: "dev", diff --git a/frontend/public/images/integrations/BitBucket.png b/frontend/public/images/integrations/BitBucket.png new file mode 100644 index 0000000000000000000000000000000000000000..7fe9b525ce091a4ce3e436e5c8348c49fa0dca3b GIT binary patch literal 9665 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 literal 0 HcmV?d00001 diff --git a/frontend/src/hooks/api/integrationAuth/index.tsx b/frontend/src/hooks/api/integrationAuth/index.tsx index 3b18be83f0..a227cdae54 100644 --- a/frontend/src/hooks/api/integrationAuth/index.tsx +++ b/frontend/src/hooks/api/integrationAuth/index.tsx @@ -1,9 +1,10 @@ export { useDeleteIntegrationAuth, useGetIntegrationAuthApps, + useGetIntegrationAuthBitBucketWorkspaces, useGetIntegrationAuthById, useGetIntegrationAuthRailwayEnvironments, useGetIntegrationAuthRailwayServices, useGetIntegrationAuthTeams, - useGetIntegrationAuthVercelBranches + useGetIntegrationAuthVercelBranches, } from "./queries"; diff --git a/frontend/src/hooks/api/integrationAuth/queries.tsx b/frontend/src/hooks/api/integrationAuth/queries.tsx index aed885ff31..841c1a52b0 100644 --- a/frontend/src/hooks/api/integrationAuth/queries.tsx +++ b/frontend/src/hooks/api/integrationAuth/queries.tsx @@ -3,13 +3,13 @@ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { apiRequest } from "@app/config/request"; import { workspaceKeys } from "../workspace/queries"; -import { App, Environment, IntegrationAuth, Service, Team } from "./types"; +import { App, BitBucketWorkspace, Environment, IntegrationAuth, Service, Team } from "./types"; const integrationAuthKeys = { getIntegrationAuthById: (integrationAuthId: string) => [{ integrationAuthId }, "integrationAuth"] as const, - getIntegrationAuthApps: (integrationAuthId: string, teamId?: string) => - [{ integrationAuthId, teamId }, "integrationAuthApps"] as const, + getIntegrationAuthApps: (integrationAuthId: string, teamId?: string, workspaceSlug?: string) => + [{ integrationAuthId, teamId, workspaceSlug }, "integrationAuthApps"] as const, getIntegrationAuthTeams: (integrationAuthId: string) => [{ integrationAuthId }, "integrationAuthTeams"] as const, getIntegrationAuthVercelBranches: ({ @@ -32,7 +32,9 @@ const integrationAuthKeys = { }: { integrationAuthId: string; appId: string; - }) => [{ integrationAuthId, appId }, "integrationAuthRailwayServices"] as const + }) => [{ integrationAuthId, appId }, "integrationAuthRailwayServices"] as const, + getIntegrationAuthBitBucketWorkspaces: (integrationAuthId: string) => + [{ integrationAuthId }, "integrationAuthTeams"] as const, }; const fetchIntegrationAuthById = async (integrationAuthId: string) => { @@ -44,12 +46,22 @@ const fetchIntegrationAuthById = async (integrationAuthId: string) => { const fetchIntegrationAuthApps = async ({ integrationAuthId, - teamId + teamId, + workspaceSlug }: { integrationAuthId: string; teamId?: string; + workspaceSlug?: string; }) => { - const searchParams = new URLSearchParams(teamId ? { teamId } : undefined); + const params: Record = {} + if (teamId) { + params.teamId = teamId + } + if (workspaceSlug) { + params.workspaceSlug = workspaceSlug + } + + const searchParams = new URLSearchParams(params); const { data } = await apiRequest.get<{ apps: App[] }>( `/api/v1/integration-auth/${integrationAuthId}/apps`, { params: searchParams } @@ -127,6 +139,13 @@ const fetchIntegrationAuthRailwayServices = async ({ return services; }; +const fetchIntegrationAuthBitBucketWorkspaces = async (integrationAuthId: string) => { + const { data: { workspaces } } = await apiRequest.get<{ workspaces: BitBucketWorkspace[] }>( + `/api/v1/integration-auth/${integrationAuthId}/bitbucket/workspaces` + ); + return workspaces; +}; + export const useGetIntegrationAuthById = (integrationAuthId: string) => { return useQuery({ queryKey: integrationAuthKeys.getIntegrationAuthById(integrationAuthId), @@ -137,17 +156,20 @@ export const useGetIntegrationAuthById = (integrationAuthId: string) => { export const useGetIntegrationAuthApps = ({ integrationAuthId, - teamId + teamId, + workspaceSlug, }: { integrationAuthId: string; teamId?: string; + workspaceSlug?: string; }) => { return useQuery({ - queryKey: integrationAuthKeys.getIntegrationAuthApps(integrationAuthId, teamId), + queryKey: integrationAuthKeys.getIntegrationAuthApps(integrationAuthId, teamId, workspaceSlug), queryFn: () => fetchIntegrationAuthApps({ integrationAuthId, - teamId + teamId, + workspaceSlug }), enabled: true }); @@ -224,6 +246,14 @@ export const useGetIntegrationAuthRailwayServices = ({ }); }; +export const useGetIntegrationAuthBitBucketWorkspaces = (integrationAuthId: string) => { + return useQuery({ + queryKey: integrationAuthKeys.getIntegrationAuthBitBucketWorkspaces(integrationAuthId), + queryFn: () => fetchIntegrationAuthBitBucketWorkspaces(integrationAuthId), + enabled: true + }); +}; + export const useDeleteIntegrationAuth = () => { const queryClient = useQueryClient(); diff --git a/frontend/src/hooks/api/integrationAuth/types.ts b/frontend/src/hooks/api/integrationAuth/types.ts index 73440cc8d3..883f410407 100644 --- a/frontend/src/hooks/api/integrationAuth/types.ts +++ b/frontend/src/hooks/api/integrationAuth/types.ts @@ -29,3 +29,9 @@ export type Service = { name: string; serviceId: string; }; + +export type BitBucketWorkspace = { + uuid: string; + name: string; + slug: string; +} \ No newline at end of file diff --git a/frontend/src/pages/integrations/bitbucket/create.tsx b/frontend/src/pages/integrations/bitbucket/create.tsx new file mode 100644 index 0000000000..6bdc87f0dc --- /dev/null +++ b/frontend/src/pages/integrations/bitbucket/create.tsx @@ -0,0 +1,198 @@ +import { useEffect, useState } from "react"; +import { useRouter } from "next/router"; +import queryString from "query-string"; + +import { + Button, + Card, + CardTitle, + FormControl, + Input, + Select, + SelectItem +} from "../../../components/v2"; +import { + useGetIntegrationAuthApps, + useGetIntegrationAuthBitBucketWorkspaces, + useGetIntegrationAuthById, +} from "../../../hooks/api/integrationAuth"; +import { useGetWorkspaceById } from "../../../hooks/api/workspace"; +import createIntegration from "../../api/integrations/createIntegration"; + +export default function BitBucketCreateIntegrationPage() { + const router = useRouter(); + + const [targetAppId, setTargetAppId] = useState(""); + const [targetEnvironmentId, setTargetEnvironmentId] = useState(""); + + const [selectedSourceEnvironment, setSelectedSourceEnvironment] = useState(""); + const [secretPath, setSecretPath] = useState("/"); + const [isLoading, setIsLoading] = useState(false); + + const { integrationAuthId } = queryString.parse(router.asPath.split("?")[1]); + const { data: integrationAuth } = useGetIntegrationAuthById((integrationAuthId as string) ?? ""); + const { data: workspace } = useGetWorkspaceById(localStorage.getItem("projectData.id") ?? ""); + const { data: targetEnvironments } = useGetIntegrationAuthBitBucketWorkspaces((integrationAuthId as string) ?? ""); + const { data: integrationAuthApps } = useGetIntegrationAuthApps({ + integrationAuthId: (integrationAuthId as string) ?? "", + workspaceSlug: targetEnvironmentId + }); + + useEffect(() => { + if (workspace) { + setSelectedSourceEnvironment(workspace.environments[0].slug); + } + }, [workspace]); + + useEffect(() => { + if (integrationAuthApps) { + if (integrationAuthApps.length > 0) { + setTargetAppId(integrationAuthApps[0].appId as string); + } else { + setTargetAppId("none"); + } + } + }, [integrationAuthApps]); + + useEffect(() => { + if (targetEnvironments) { + if (targetEnvironments.length > 0) { + setTargetEnvironmentId(targetEnvironments[0].slug); + } else { + setTargetEnvironmentId("none"); + } + } + }, [targetEnvironments]); + + const handleButtonClick = async () => { + try { + setIsLoading(true); + + if (!integrationAuth?._id) return; + + const targetApp = integrationAuthApps?.find( + (integrationAuthApp) => integrationAuthApp.appId === targetAppId + ); + const targetEnvironment = targetEnvironments?.find( + (environment) => environment.slug === targetEnvironmentId + ); + + if (!targetApp || !targetApp.appId || !targetEnvironment) return; + + await createIntegration({ + integrationAuthId: integrationAuth?._id, + isActive: true, + app: targetApp.name, + appId: targetApp.appId, + sourceEnvironment: selectedSourceEnvironment, + targetEnvironment: targetEnvironment.name, + targetEnvironmentId: targetEnvironment.slug, + targetService: null, + targetServiceId: null, + owner: null, + path: null, + region: null, + secretPath + }); + + setIsLoading(false); + + router.push(`/integrations/${localStorage.getItem("projectData.id")}`); + } catch (err) { + console.error(err); + } + }; + + return integrationAuth && + workspace && + selectedSourceEnvironment && + integrationAuthApps && + targetEnvironments ? ( +

+ + BitBucket Integration + + + + + setSecretPath(evt.target.value)} + placeholder="Provide a path, default is /" + /> + + + + + + + + + +
+ ) : ( +
+ ); +} + +BitBucketCreateIntegrationPage.requireAuth = true; diff --git a/frontend/src/pages/integrations/bitbucket/oauth2/callback.tsx b/frontend/src/pages/integrations/bitbucket/oauth2/callback.tsx new file mode 100644 index 0000000000..43a58bc6f1 --- /dev/null +++ b/frontend/src/pages/integrations/bitbucket/oauth2/callback.tsx @@ -0,0 +1,34 @@ +import { useEffect } from "react"; +import { useRouter } from "next/router"; +import queryString from "query-string"; + +import AuthorizeIntegration from "../../../api/integrations/authorizeIntegration"; + +export default function BitBucketOAuth2CallbackPage() { + const router = useRouter(); + const { code, state } = queryString.parse(router.asPath.split("?")[1]); + + useEffect(() => { + (async () => { + try { + // validate state + if (state !== localStorage.getItem("latestCSRFToken")) return; + localStorage.removeItem("latestCSRFToken"); + + const integrationAuth = await AuthorizeIntegration({ + workspaceId: localStorage.getItem("projectData.id") as string, + code: code as string, + integration: "bitbucket" + }); + + router.push(`/integrations/bitbucket/create?integrationAuthId=${integrationAuth._id}`); + } catch (err) { + console.error(err); + } + })(); + }, []); + + return
; +} + +BitBucketOAuth2CallbackPage.requireAuth = true; diff --git a/frontend/src/views/IntegrationsPage/IntegrationPage.utils.tsx b/frontend/src/views/IntegrationsPage/IntegrationPage.utils.tsx index fd82d1fa75..6759c2207c 100644 --- a/frontend/src/views/IntegrationsPage/IntegrationPage.utils.tsx +++ b/frontend/src/views/IntegrationsPage/IntegrationPage.utils.tsx @@ -92,6 +92,9 @@ export const redirectForProviderAuth = (integrationOption: TCloudIntegration) => case "cloudflare-pages": link = `${window.location.origin}/integrations/cloudflare-pages/authorize`; break; + case "bitbucket": + link = `https://bitbucket.org/site/oauth2/authorize?client_id=${integrationOption.clientId}&response_type=code&redirect_uri=${window.location.origin}/integrations/bitbucket/oauth2/callback&state=${state}`; + break; default: break; } diff --git a/frontend/src/views/IntegrationsPage/components/IntegrationsSection/IntegrationsSection.tsx b/frontend/src/views/IntegrationsPage/components/IntegrationsSection/IntegrationsSection.tsx index 15ef381769..702e46ac92 100644 --- a/frontend/src/views/IntegrationsPage/components/IntegrationsSection/IntegrationsSection.tsx +++ b/frontend/src/views/IntegrationsPage/components/IntegrationsSection/IntegrationsSection.tsx @@ -106,7 +106,8 @@ export const IntegrationsSection = ({ {(integration.integration === "vercel" || integration.integration === "netlify" || integration.integration === "railway" || - integration.integration === "gitlab") && ( + integration.integration === "gitlab" || + integration.integration === "bitbucket") && (
From d9f6c27e4d7b016ff71908068dfd6116e8b19809 Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Fri, 21 Jul 2023 20:16:39 +0700 Subject: [PATCH 2/3] Update Bitbucket sync function --- backend/.eslintrc | 1 - .../v1/integrationAuthController.ts | 2 +- backend/src/integrations/sync.ts | 48 +++++++++---------- backend/src/routes/v1/integrationAuth.ts | 2 +- backend/src/variables/integration.ts | 2 +- .../src/hooks/api/integrationAuth/queries.tsx | 2 +- 6 files changed, 26 insertions(+), 31 deletions(-) diff --git a/backend/.eslintrc b/backend/.eslintrc index 2e5f5f719a..172e72d4b7 100644 --- a/backend/.eslintrc +++ b/backend/.eslintrc @@ -25,7 +25,6 @@ ], "@typescript-eslint/no-unused-vars": "off", "unused-imports/no-unused-imports": "error", - "@typescript-eslint/no-empty-function": "off", "unused-imports/no-unused-vars": [ "warn", { diff --git a/backend/src/controllers/v1/integrationAuthController.ts b/backend/src/controllers/v1/integrationAuthController.ts index 9072f459b9..88968a2727 100644 --- a/backend/src/controllers/v1/integrationAuthController.ts +++ b/backend/src/controllers/v1/integrationAuthController.ts @@ -386,7 +386,7 @@ export const getIntegrationAuthRailwayServices = async (req: Request, res: Respo }; /** - * Return list of workspaces allowed for integration with integration authorization id [integrationAuthId] + * Return list of workspaces allowed for Bitbucket integration * @param req * @param res * @returns diff --git a/backend/src/integrations/sync.ts b/backend/src/integrations/sync.ts index 7b7456b86f..a1815fe7e7 100644 --- a/backend/src/integrations/sync.ts +++ b/backend/src/integrations/sync.ts @@ -678,8 +678,6 @@ const syncSecretsVercel = async ({ return true; }); - // return secret.target.includes(integration.targetEnvironment); - const res: { [key: string]: VercelSecret } = {}; for await (const vercelSecret of vercelSecrets) { @@ -1963,16 +1961,17 @@ const syncSecretsBitBucket = async ({ secrets: any; accessToken: string; }) => { + interface VariablesResponse { size: number; page: number; pageLen: number; next: string; previous: string; - values: Array; + values: Array; } - interface Variable { + interface BitbucketVariable { type: string; uuid: string; key: string; @@ -1980,13 +1979,11 @@ const syncSecretsBitBucket = async ({ secured: boolean; } - const existingSecrets: Variable[] = []; - const workspaceSlug = integration.targetEnvironmentId - const repoSlug = integration.appId - let hasNextPage = true; - let variablesUrl = `${INTEGRATION_BITBUCKET_API_URL}/2.0/repositories/${workspaceSlug}/${repoSlug}/pipelines_config/variables` + const res: { [key: string]: BitbucketVariable } = {}; + + let hasNextPage = true; + let variablesUrl = `${INTEGRATION_BITBUCKET_API_URL}/2.0/repositories/${integration.targetEnvironmentId}/${integration.appId}/pipelines_config/variables` - // Fetch all repository variables while (hasNextPage) { const { data }: { data: VariablesResponse } = await standardRequest.get( variablesUrl, @@ -2000,8 +1997,8 @@ const syncSecretsBitBucket = async ({ if (data?.values.length > 0) { data.values.forEach((variable) => { - existingSecrets.push(variable) - }) + res[variable.key] = variable; + }); } if (data.next) { @@ -2011,12 +2008,11 @@ const syncSecretsBitBucket = async ({ } } - Object.keys(secrets).forEach(async (key) => { - const existingSecret = existingSecrets.find((secret) => secret.key.toUpperCase() === key.toUpperCase()); - if (existingSecret) { - // Update existing secrets + for await (const key of Object.keys(secrets)) { + if (key in res) { + // update existing secret await standardRequest.put( - `${variablesUrl}/${existingSecret.uuid}`, + `${variablesUrl}/${res[key].uuid}`, { key, value: secrets[key], @@ -2030,7 +2026,7 @@ const syncSecretsBitBucket = async ({ } ); } else { - // Create new secrets + // create new secret await standardRequest.post( variablesUrl, { @@ -2046,22 +2042,22 @@ const syncSecretsBitBucket = async ({ } ); } - }) + } - // Delete secrets - existingSecrets.forEach(async (existingSecret) => { - if (!(existingSecret.key in secrets) && existingSecret.secured) { + for await (const key of Object.keys(res)) { + if (!(key in secrets)) { + // delete secret await standardRequest.delete( - `${variablesUrl}/${existingSecret.uuid}`, + `${variablesUrl}/${res[key].uuid}`, { headers: { Authorization: `Bearer ${accessToken}`, "Accept": "application/json", - }, + } } - ); + ); } - }) + } } export { syncSecrets }; diff --git a/backend/src/routes/v1/integrationAuth.ts b/backend/src/routes/v1/integrationAuth.ts index 5e5f1e6d17..673d269d28 100644 --- a/backend/src/routes/v1/integrationAuth.ts +++ b/backend/src/routes/v1/integrationAuth.ts @@ -150,7 +150,7 @@ router.get( requireIntegrationAuthorizationAuth({ acceptedRoles: [ADMIN, MEMBER], }), - param("integrationAuthId"), + param("integrationAuthId").exists().isString(), validateRequest, integrationAuthController.getIntegrationAuthBitBucketWorkspaces ); diff --git a/backend/src/variables/integration.ts b/backend/src/variables/integration.ts index fc4397871b..041d1d1095 100644 --- a/backend/src/variables/integration.ts +++ b/backend/src/variables/integration.ts @@ -75,7 +75,7 @@ export const INTEGRATION_SUPABASE_API_URL = "https://api.supabase.com"; export const INTEGRATION_LARAVELFORGE_API_URL = "https://forge.laravel.com"; export const INTEGRATION_CHECKLY_API_URL = "https://api.checklyhq.com"; export const INTEGRATION_CLOUDFLARE_PAGES_API_URL = "https://api.cloudflare.com"; -export const INTEGRATION_BITBUCKET_API_URL = "https://api.bitbucket.org/"; +export const INTEGRATION_BITBUCKET_API_URL = "https://api.bitbucket.org"; export const getIntegrationOptions = async () => { const INTEGRATION_OPTIONS = [ diff --git a/frontend/src/hooks/api/integrationAuth/queries.tsx b/frontend/src/hooks/api/integrationAuth/queries.tsx index 841c1a52b0..10083432ad 100644 --- a/frontend/src/hooks/api/integrationAuth/queries.tsx +++ b/frontend/src/hooks/api/integrationAuth/queries.tsx @@ -34,7 +34,7 @@ const integrationAuthKeys = { appId: string; }) => [{ integrationAuthId, appId }, "integrationAuthRailwayServices"] as const, getIntegrationAuthBitBucketWorkspaces: (integrationAuthId: string) => - [{ integrationAuthId }, "integrationAuthTeams"] as const, + [{ integrationAuthId }, "integrationAuthBitbucketWorkspaces"] as const, }; const fetchIntegrationAuthById = async (integrationAuthId: string) => { From 504e0f6dc384f2f1fa0a503cb7f97149360383f7 Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Fri, 21 Jul 2023 20:52:35 +0700 Subject: [PATCH 3/3] Fix lint issues backend --- backend/src/ee/routes/v1/sso.ts | 4 +-- backend/src/index.ts | 4 +-- backend/src/integrations/apps.ts | 6 ++--- backend/src/integrations/sync.ts | 36 +++------------------------ backend/src/models/integration.ts | 4 +-- backend/src/models/integrationAuth.ts | 4 +-- backend/src/utils/aes-gcm.ts | 2 -- backend/src/utils/auth.ts | 10 ++++---- 8 files changed, 20 insertions(+), 50 deletions(-) diff --git a/backend/src/ee/routes/v1/sso.ts b/backend/src/ee/routes/v1/sso.ts index cf949f2f14..fb26e10649 100644 --- a/backend/src/ee/routes/v1/sso.ts +++ b/backend/src/ee/routes/v1/sso.ts @@ -11,8 +11,8 @@ import { ssoController } from "../../controllers/v1"; import { authLimiter } from "../../../helpers/rateLimiter"; import { ACCEPTED, - OWNER, - ADMIN + ADMIN, + OWNER } from "../../../variables"; router.get( diff --git a/backend/src/index.ts b/backend/src/index.ts index 1043b1616f..0235e601d0 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -35,6 +35,7 @@ import { membership as v1MembershipRouter, organization as v1OrganizationRouter, password as v1PasswordRouter, + secretImport as v1SecretImportRouter, secret as v1SecretRouter, secretScanning as v1SecretScanningRouter, secretsFolder as v1SecretsFolder, @@ -43,8 +44,7 @@ import { userAction as v1UserActionRouter, user as v1UserRouter, webhooks as v1WebhooksRouter, - workspace as v1WorkspaceRouter, - secretImport as v1SecretImportRouter + workspace as v1WorkspaceRouter } from "./routes/v1"; import { auth as v2AuthRouter, diff --git a/backend/src/integrations/apps.ts b/backend/src/integrations/apps.ts index 4ea342c16a..dea45ac992 100644 --- a/backend/src/integrations/apps.ts +++ b/backend/src/integrations/apps.ts @@ -13,6 +13,8 @@ import { INTEGRATION_CIRCLECI_API_URL, INTEGRATION_CLOUDFLARE_PAGES, INTEGRATION_CLOUDFLARE_PAGES_API_URL, + INTEGRATION_CODEFRESH, + INTEGRATION_CODEFRESH_API_URL, INTEGRATION_FLYIO, INTEGRATION_FLYIO_API_URL, INTEGRATION_GITHUB, @@ -33,9 +35,7 @@ import { INTEGRATION_TRAVISCI, INTEGRATION_TRAVISCI_API_URL, INTEGRATION_VERCEL, - INTEGRATION_VERCEL_API_URL, - INTEGRATION_CODEFRESH, - INTEGRATION_CODEFRESH_API_URL + INTEGRATION_VERCEL_API_URL } from "../variables"; interface App { diff --git a/backend/src/integrations/sync.ts b/backend/src/integrations/sync.ts index b58a62636c..2c2ed8d1ff 100644 --- a/backend/src/integrations/sync.ts +++ b/backend/src/integrations/sync.ts @@ -22,6 +22,8 @@ import { INTEGRATION_CIRCLECI_API_URL, INTEGRATION_CLOUDFLARE_PAGES, INTEGRATION_CLOUDFLARE_PAGES_API_URL, + INTEGRATION_CODEFRESH, + INTEGRATION_CODEFRESH_API_URL, INTEGRATION_FLYIO, INTEGRATION_FLYIO_API_URL, INTEGRATION_GITHUB, @@ -43,9 +45,7 @@ import { INTEGRATION_TRAVISCI, INTEGRATION_TRAVISCI_API_URL, INTEGRATION_VERCEL, - INTEGRATION_VERCEL_API_URL, - INTEGRATION_CODEFRESH, - INTEGRATION_CODEFRESH_API_URL + INTEGRATION_VERCEL_API_URL } from "../variables"; import { standardRequest } from "../config/request"; @@ -182,34 +182,6 @@ const syncSecrets = async ({ accessToken, }); break; - case INTEGRATION_FLYIO: - await syncSecretsFlyio({ - integration, - secrets, - accessToken, - }); - break; - case INTEGRATION_CIRCLECI: - await syncSecretsCircleCI({ - integration, - secrets, - accessToken, - }); - break; - case INTEGRATION_TRAVISCI: - await syncSecretsTravisCI({ - integration, - secrets, - accessToken, - }); - break; - case INTEGRATION_SUPABASE: - await syncSecretsSupabase({ - integration, - secrets, - accessToken, - }); - break; case INTEGRATION_CHECKLY: await syncSecretsCheckly({ integration, @@ -1942,7 +1914,7 @@ const syncSecretsCloudflarePages = async ({ } ) ) - .data.result['deployment_configs'][integration.targetEnvironment]['env_vars']; + .data.result["deployment_configs"][integration.targetEnvironment]["env_vars"]; // copy the secrets object, so we can set deleted keys to null const secretsObj: any = { ...secrets }; diff --git a/backend/src/models/integration.ts b/backend/src/models/integration.ts index a7b050a2e7..05e089f373 100644 --- a/backend/src/models/integration.ts +++ b/backend/src/models/integration.ts @@ -7,6 +7,7 @@ import { INTEGRATION_CHECKLY, INTEGRATION_CIRCLECI, INTEGRATION_CLOUDFLARE_PAGES, + INTEGRATION_CODEFRESH, INTEGRATION_FLYIO, INTEGRATION_GITHUB, INTEGRATION_GITLAB, @@ -18,8 +19,7 @@ import { INTEGRATION_RENDER, INTEGRATION_SUPABASE, INTEGRATION_TRAVISCI, - INTEGRATION_VERCEL, - INTEGRATION_CODEFRESH + INTEGRATION_VERCEL } from "../variables"; export interface IIntegration { diff --git a/backend/src/models/integrationAuth.ts b/backend/src/models/integrationAuth.ts index 4908ee2bdd..409249bf36 100644 --- a/backend/src/models/integrationAuth.ts +++ b/backend/src/models/integrationAuth.ts @@ -9,6 +9,7 @@ import { INTEGRATION_BITBUCKET, INTEGRATION_CIRCLECI, INTEGRATION_CLOUDFLARE_PAGES, + INTEGRATION_CODEFRESH, INTEGRATION_FLYIO, INTEGRATION_GITHUB, INTEGRATION_GITLAB, @@ -20,8 +21,7 @@ import { INTEGRATION_RENDER, INTEGRATION_SUPABASE, INTEGRATION_TRAVISCI, - INTEGRATION_VERCEL, - INTEGRATION_CODEFRESH + INTEGRATION_VERCEL } from "../variables"; export interface IIntegrationAuth extends Document { diff --git a/backend/src/utils/aes-gcm.ts b/backend/src/utils/aes-gcm.ts index 4457616a6f..21734611b9 100644 --- a/backend/src/utils/aes-gcm.ts +++ b/backend/src/utils/aes-gcm.ts @@ -4,8 +4,6 @@ const ALGORITHM = "aes-256-gcm"; const BLOCK_SIZE_BYTES = 16; export default class AesGCM { - constructor() {} - static encrypt( text: string, secret: string diff --git a/backend/src/utils/auth.ts b/backend/src/utils/auth.ts index aebafa5a30..dccd5b5e4b 100644 --- a/backend/src/utils/auth.ts +++ b/backend/src/utils/auth.ts @@ -4,11 +4,11 @@ import { Types } from "mongoose"; import { AuthData } from "../interfaces/middleware"; import { AuthProvider, + MembershipOrg, + Organization, ServiceAccount, ServiceTokenData, - User, - Organization, - MembershipOrg + User } from "../models"; import { createToken } from "../helpers/auth"; import { @@ -18,8 +18,8 @@ import { getJwtProviderAuthSecret, } from "../config"; import { getSSOConfigHelper } from "../ee/helpers/organizations"; -import { OrganizationNotFoundError, InternalServerError } from "./errors"; -import { MEMBER, INVITED } from "../variables"; +import { InternalServerError, OrganizationNotFoundError } from "./errors"; +import { INVITED, MEMBER } from "../variables"; import { getSiteURL } from "../config"; // eslint-disable-next-line @typescript-eslint/no-var-requires