diff --git a/backend/src/variables/index.ts b/backend/src/variables/index.ts index 78773e665..362635806 100644 --- a/backend/src/variables/index.ts +++ b/backend/src/variables/index.ts @@ -13,8 +13,10 @@ import { INTEGRATION_OAUTH2, INTEGRATION_HEROKU_TOKEN_URL, INTEGRATION_VERCEL_TOKEN_URL, + INTEGRATION_NETLIFY_TOKEN_URL, INTEGRATION_HEROKU_API_URL, - INTEGRATION_VERCEL_API_URL + INTEGRATION_VERCEL_API_URL, + INTEGRATION_NETLIFY_API_URL } from './integration'; import { OWNER, @@ -65,8 +67,10 @@ export { INTEGRATION_OAUTH2, INTEGRATION_HEROKU_TOKEN_URL, INTEGRATION_VERCEL_TOKEN_URL, + INTEGRATION_NETLIFY_TOKEN_URL, INTEGRATION_HEROKU_API_URL, INTEGRATION_VERCEL_API_URL, + INTEGRATION_NETLIFY_API_URL, EVENT_PUSH_SECRETS, EVENT_PULL_SECRETS, ACTION_PUSH_TO_HEROKU diff --git a/backend/src/variables/integration.ts b/backend/src/variables/integration.ts index 188bead38..da45336fc 100644 --- a/backend/src/variables/integration.ts +++ b/backend/src/variables/integration.ts @@ -14,10 +14,12 @@ const INTEGRATION_OAUTH2 = 'oauth2'; // integration oauth endpoints const INTEGRATION_HEROKU_TOKEN_URL = 'https://id.heroku.com/oauth/token'; const INTEGRATION_VERCEL_TOKEN_URL = 'https://api.vercel.com/v2/oauth/access_token'; +const INTEGRATION_NETLIFY_TOKEN_URL = 'https://app.netlify.com/authorize'; // integration apps endpoints const INTEGRATION_HEROKU_API_URL = 'https://api.heroku.com'; const INTEGRATION_VERCEL_API_URL = 'https://api.vercel.com'; +const INTEGRATION_NETLIFY_API_URL = 'https://api.netlify.com'; export { INTEGRATION_HEROKU, @@ -27,6 +29,8 @@ export { INTEGRATION_OAUTH2, INTEGRATION_HEROKU_TOKEN_URL, INTEGRATION_VERCEL_TOKEN_URL, + INTEGRATION_NETLIFY_TOKEN_URL, INTEGRATION_HEROKU_API_URL, INTEGRATION_VERCEL_API_URL, + INTEGRATION_NETLIFY_API_URL, } \ No newline at end of file diff --git a/frontend/pages/integrations/[id].js b/frontend/pages/integrations/[id].js index 955d50201..864229d72 100644 --- a/frontend/pages/integrations/[id].js +++ b/frontend/pages/integrations/[id].js @@ -125,9 +125,11 @@ export default function Integrations() { window.location = `https://id.heroku.com/oauth/authorize?client_id=${integrationOption.clientId}&response_type=code&scope=write-protected&state=${csrfToken}`; break; case 'Vercel': - console.log('Vercel integration ', integrationOption); window.location = `https://vercel.com/integrations/infisical/new?state=${csrfToken}`; break; + case 'Netlify': + console.log('netlifyyy'); + break; } } diff --git a/frontend/pages/netlify.js b/frontend/pages/netlify.js new file mode 100644 index 000000000..06d6ab32b --- /dev/null +++ b/frontend/pages/netlify.js @@ -0,0 +1,43 @@ +import React, { useEffect } from "react"; +import Head from "next/head"; +import { useRouter } from "next/router"; +const queryString = require("query-string"); +import AuthorizeIntegration from "./api/integrations/authorizeIntegration"; + +export default function Netlify() { + const router = useRouter(); + const parsedUrl = queryString.parse(router.asPath.split("?")[1]); + // modify comment here + + /** + * Here we forward to the default workspace if a user opens this url + */ + // eslint-disable-next-line react-hooks/exhaustive-deps + useEffect(async () => { + if (state === localStorage.getItem('latestCSRFToken')) { + localStorage.removeItem('latestCSRFToken'); + + console.log('Netlify', parsedUrl); + + // await AuthorizeIntegration({ + // workspaceId: localStorage.getItem('projectData.id'), + // code, + // integration: "vercel" + // }); + + // router.push("/integrations/" + localStorage.getItem("projectData.id")); + } + + try { + + } catch (err) { + console.error('Netlify integration error: ', err); + } + + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return
; +} + +Netlify.requireAuth = true; diff --git a/frontend/pages/vercel.js b/frontend/pages/vercel.js index 7005a2590..a674c27d4 100644 --- a/frontend/pages/vercel.js +++ b/frontend/pages/vercel.js @@ -10,21 +10,14 @@ export default function Vercel() { const code = parsedUrl.code; const state = parsedUrl.state - // modify comment here - /** * Here we forward to the default workspace if a user opens this url */ // eslint-disable-next-line react-hooks/exhaustive-deps useEffect(async () => { - console.log('parsedUrl for vercel ', parsedUrl); if (state === localStorage.getItem('latestCSRFToken')) { localStorage.removeItem('latestCSRFToken'); - console.log('integ'); - console.log('code', code); - console.log('state', state); - await AuthorizeIntegration({ workspaceId: localStorage.getItem('projectData.id'), code, @@ -33,10 +26,7 @@ export default function Vercel() { router.push("/integrations/" + localStorage.getItem("projectData.id")); } - // parsedUrl.code - // parsedUrl.configurationId - // parsedUrl.next - // parsedUrl.state + try { } catch (err) { diff --git a/frontend/public/json/cloudIntegrations.json b/frontend/public/json/cloudIntegrations.json index 696be33de..a1679c993 100644 --- a/frontend/public/json/cloudIntegrations.json +++ b/frontend/public/json/cloudIntegrations.json @@ -9,18 +9,18 @@ }, { "name": "Vercel", - "slug": "netlify", - "image": "Netlify", + "slug": "vercel", + "image": "Vercel", "isAvailable": true, "type": "vercel", "clientId": "" }, { - "name": "Digital Ocean", - "slug": "digital-ocean", - "image": "Digital Ocean", - "isAvailable": false, - "type": "", + "name": "Netlify", + "slug": "netlify", + "image": "Netlify", + "isAvailable": true, + "type": "oauth2", "clientId": "" }, {