From dffcee52d7ae0723f35bc535f33fe9c11052a069 Mon Sep 17 00:00:00 2001 From: Stijn-Kuijper Date: Tue, 13 Jun 2023 11:52:40 +0200 Subject: [PATCH] feat: cloudflare integration auth page --- frontend/src/pages/integrations/[id].tsx | 5 ++ .../cloudflare-pages/authorize.tsx | 88 +++++++++++++++++++ .../integrations/cloudflare-pages/create.tsx | 0 3 files changed, 93 insertions(+) create mode 100644 frontend/src/pages/integrations/cloudflare-pages/authorize.tsx create mode 100644 frontend/src/pages/integrations/cloudflare-pages/create.tsx diff --git a/frontend/src/pages/integrations/[id].tsx b/frontend/src/pages/integrations/[id].tsx index 435c904f56..48f34532bb 100644 --- a/frontend/src/pages/integrations/[id].tsx +++ b/frontend/src/pages/integrations/[id].tsx @@ -219,6 +219,9 @@ export default function Integrations() { case 'hashicorp-vault': link = `${window.location.origin}/integrations/hashicorp-vault/authorize`; break; + case 'cloudflare-pages': + link = `${window.location.origin}/integrations/cloudflare-pages/authorize`; + break; default: break; } @@ -283,6 +286,8 @@ export default function Integrations() { case 'hashicorp-vault': link = `${window.location.origin}/integrations/hashicorp-vault/create?integrationAuthId=${integrationAuth._id}`; break; + case 'cloudflare-pages': + link = `${window.location.origin}/integrations/cloudflare-pages/create?integrationAutHId=${integrationAuth._id}`; default: break; } diff --git a/frontend/src/pages/integrations/cloudflare-pages/authorize.tsx b/frontend/src/pages/integrations/cloudflare-pages/authorize.tsx new file mode 100644 index 0000000000..71b6059e8f --- /dev/null +++ b/frontend/src/pages/integrations/cloudflare-pages/authorize.tsx @@ -0,0 +1,88 @@ +import { useState } from 'react'; +import { useRouter } from 'next/router'; +import { Card, CardTitle, FormControl, Input, Button } from '../../../components/v2'; +import saveIntegrationAccessToken from '~/pages/api/integrations/saveIntegrationAccessToken'; + +export default function CloudflarePagesIntegrationPage() { + const router = useRouter(); + const [accessKey, setAccessKey] = useState(''); + const [accessKeyErrorText, setAccessKeyErrorText] = useState(''); + const [accountId, setAccountId] = useState(''); + const [accountIdErrorText, setAccountIdErrorText] = useState(''); + const [isLoading, setIsLoading] = useState(false); + + const handleButtonClick = async () => { + try { + setAccessKeyErrorText(''); + setAccountIdErrorText(''); + if (accessKey.length === 0 || accountId.length === 0) { + if (accessKey.length === 0) setAccessKeyErrorText('Access key cannot be blank!'); + if (accountId.length === 0) setAccountIdErrorText('Account ID cannot be blank!'); + return; + } + + setIsLoading(true); + + const integrationAuth = await saveIntegrationAccessToken({ + workspaceId: localStorage.getItem('projectData.id'), + integration: 'cloudflare-pages', + accessId: accessKey, + accessToken: accountId, + url: null, + namespace: null + }); + + setAccessKey(''); + setAccountId(''); + setIsLoading(false); + + router.push(`/integrations/cloudflare-pages/create?integrationAuthId=${integrationAuth._id}`); + } catch (err) { + console.error(err); + } + } + + return ( +
+ + Cloudflare Pages Integration + + setAccessKey(e.target.value)} + /> + + + setAccountId(e.target.value)} + /> + + + +
+ ); +} + +CloudflarePagesIntegrationPage.requireAuth = true; \ No newline at end of file diff --git a/frontend/src/pages/integrations/cloudflare-pages/create.tsx b/frontend/src/pages/integrations/cloudflare-pages/create.tsx new file mode 100644 index 0000000000..e69de29bb2