Begin Netlify integration

This commit is contained in:
Tuan Dang
2022-12-13 21:12:40 -05:00
parent d86c335671
commit fe17d8459b
7 changed files with 114 additions and 17 deletions
+28 -5
View File
@@ -21,6 +21,8 @@ const {
} = require('../../components/utilities/cryptography/crypto');
const crypto = require("crypto");
import axios from "axios";
export default function Integrations() {
const [integrationAuths, setIntegrationAuths] = useState([]);
const [integrations, setIntegrations] = useState([]);
@@ -115,20 +117,41 @@ export default function Integrations() {
const handleIntegrationOption = async ({ integrationOption }) => {
// TODO: modularize and handle switch by slug
console.log('handle', integrationOption);
// generate CSRF token for OAuth2 code-token exchange integrations
const csrfToken = crypto.randomBytes(16).toString("hex");
localStorage.setItem('latestCSRFToken', csrfToken);
const state = crypto.randomBytes(16).toString("hex");
localStorage.setItem('latestCSRFToken', state);
switch (integrationOption.name) {
case 'Heroku':
// console.log('Heroku integration ', integrationOption);
window.location = `https://id.heroku.com/oauth/authorize?client_id=${integrationOption.clientId}&response_type=code&scope=write-protected&state=${csrfToken}`;
window.location = `https://id.heroku.com/oauth/authorize?client_id=${integrationOption.clientId}&response_type=code&scope=write-protected&state=${state}`;
break;
case 'Vercel':
window.location = `https://vercel.com/integrations/infisical/new?state=${csrfToken}`;
window.location = `https://vercel.com/integrations/infisical/new?state=${state}`;
break;
case 'Netlify':
console.log('netlifyyy');
// window.location = `https://app.netlify.com/authorize?client_id=${integrationOption.clientId}&response_type=token&redirect_uri=${integrationOption.redirectURL}&state=${state}`;
window.location = `https://app.netlify.com/authorize?client_id=${integrationOption.clientId}&response_type=code&redirect_uri=${integrationOption.redirectURL}&state=${state}`;
// const res = await axios.post('https://api.netlify.com/api/v1/oauth/tickets' + '?client_id=' + integrationOption.clientId);
// window.location = `https://app.netlify.com/authorize?client_id=${integrationOption.clientId}&response_type=ticket&redirect_uri=${integrationOption.redirectURL}&state=${state}&ticket=${res.data.id}`;
// `https://app.netlify.com/authorize?response_type=ticket&ticket=${ticket.id}`
try {
// const res = await axios.post('https://api.netlify.com/api/v1/oauth/tickets' + '?client_id=' + integrationOption.clientId);
// console.log('res response', res);
// const res2 = await axios.get('https://api.netlify.com/api/v1/oauth/tickets/' + res.data.id);
// console.log('res2 response', res2);
// console.log('ticket_id', res.data.id);
// // exchange ticket:
// const res3 = await axios.get(`https://api.netlify.com/api/v1/oauth/tickets/${res.data.id}/exchange`);
// console.log('res3 response', res3);
} catch (err) {
console.error('Netlify ', err);
}
break;
}
}