Begin Netlify integration

This commit is contained in:
Tuan Dang
2022-12-13 15:47:27 -05:00
parent 3e623922b4
commit d86c335671
6 changed files with 63 additions and 20 deletions

View File

@@ -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

View File

@@ -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,
}

View File

@@ -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;
}
}

43
frontend/pages/netlify.js Normal file
View File

@@ -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 <div></div>;
}
Netlify.requireAuth = true;

View File

@@ -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) {

View File

@@ -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": ""
},
{