diff --git a/docs/images/integrations-cloudflare-auth.png b/docs/images/integrations-cloudflare-auth.png
new file mode 100644
index 000000000..c714a21cc
Binary files /dev/null and b/docs/images/integrations-cloudflare-auth.png differ
diff --git a/docs/images/integrations-cloudflare-create.png b/docs/images/integrations-cloudflare-create.png
new file mode 100644
index 000000000..d70533719
Binary files /dev/null and b/docs/images/integrations-cloudflare-create.png differ
diff --git a/docs/images/integrations-cloudflare-credentials-1.png b/docs/images/integrations-cloudflare-credentials-1.png
new file mode 100644
index 000000000..4035cfb92
Binary files /dev/null and b/docs/images/integrations-cloudflare-credentials-1.png differ
diff --git a/docs/images/integrations-cloudflare-credentials-2.png b/docs/images/integrations-cloudflare-credentials-2.png
new file mode 100644
index 000000000..c3794bdc9
Binary files /dev/null and b/docs/images/integrations-cloudflare-credentials-2.png differ
diff --git a/docs/images/integrations-cloudflare-credentials-3.png b/docs/images/integrations-cloudflare-credentials-3.png
new file mode 100644
index 000000000..0777fa1f7
Binary files /dev/null and b/docs/images/integrations-cloudflare-credentials-3.png differ
diff --git a/docs/images/integrations-cloudflare-credentials-4.png b/docs/images/integrations-cloudflare-credentials-4.png
new file mode 100644
index 000000000..957305ec7
Binary files /dev/null and b/docs/images/integrations-cloudflare-credentials-4.png differ
diff --git a/docs/images/integrations-cloudflare.png b/docs/images/integrations-cloudflare.png
new file mode 100644
index 000000000..69aefe6a4
Binary files /dev/null and b/docs/images/integrations-cloudflare.png differ
diff --git a/docs/integrations/cloud/checkly.mdx b/docs/integrations/cloud/checkly.mdx
index 54b2e7ac5..90c0850d3 100644
--- a/docs/integrations/cloud/checkly.mdx
+++ b/docs/integrations/cloud/checkly.mdx
@@ -31,7 +31,7 @@ Press on the Checkly tile and input your Checkly API Key to grant Infisical acce
## Start integration
-Select which Infisical environment secrets you want to sync to Checkly press create integration to start syncing secrets.
+Select which Infisical environment secrets you want to sync to Checkly and press create integration to start syncing secrets.

-
\ No newline at end of file
+
diff --git a/docs/integrations/cloud/cloudflare-pages.mdx b/docs/integrations/cloud/cloudflare-pages.mdx
new file mode 100644
index 000000000..4a95a006a
--- /dev/null
+++ b/docs/integrations/cloud/cloudflare-pages.mdx
@@ -0,0 +1,44 @@
+---
+title: "Cloudflare Pages"
+description: "How to sync secrets from Infisical to Cloudflare Pages"
+---
+
+Prerequisites:
+
+- Set up and add envars to [Infisical Cloud](https://app.infisical.com)
+
+## Navigate to your project's integrations tab
+
+
+
+## Authorize Infisical for Cloudflare Pages
+
+Obtain a Cloudflare [API token](https://dash.cloudflare.com/profile/api-tokens) and [Account ID](https://developers.cloudflare.com/fundamentals/get-started/basic-tasks/find-account-and-zone-ids/):
+
+1. Create a new [API token](https://dash.cloudflare.com/profile/api-tokens) in My Profile > API Tokens
+
+
+
+
+
+2. Copy your [Account ID](https://developers.cloudflare.com/fundamentals/get-started/basic-tasks/find-account-and-zone-ids/) from Account > Workers & Pages > Overview
+
+
+
+Press on the Cloudflare Pages tile and input your Cloudflare API token and account ID to grant Infisical access to your Cloudflare Pages.
+
+
+
+
+ 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 Cloudflare and press create integration to start syncing secrets.
+
+
+
diff --git a/docs/integrations/overview.mdx b/docs/integrations/overview.mdx
index 79db492ea..352863eda 100644
--- a/docs/integrations/overview.mdx
+++ b/docs/integrations/overview.mdx
@@ -7,43 +7,44 @@ Integrations allow environment variables to be synced from Infisical into your l
Missing an integration? [Throw in a request](https://github.com/Infisical/infisical/issues).
-| Integration | Type | Status |
-| -------------------------------------------------------------- | --------- | ----------- |
-| [Docker](/integrations/platforms/docker) | Platform | Available |
-| [Docker-Compose](/integrations/platforms/docker-compose) | Platform | Available |
-| [Kubernetes](/integrations/platforms/kubernetes) | Platform | Available |
-| [Terraform](/integrations/frameworks/terraform) | Infrastructure as code | Available |
-| [PM2](/integrations/platforms/pm2) | Platform | Available |
-| [Heroku](/integrations/cloud/heroku) | Cloud | Available |
-| [Vercel](/integrations/cloud/vercel) | Cloud | Available |
-| [Netlify](/integrations/cloud/netlify) | Cloud | Available |
-| [Render](/integrations/cloud/render) | Cloud | Available |
-| [Railway](/integrations/cloud/railway) | Cloud | Available |
-| [Fly.io](/integrations/cloud/flyio) | Cloud | Available |
-| [Supabase](/integrations/cloud/supabase) | Cloud | Available |
-| [Checkly](/integrations/cloud/checkly) | Cloud | Available |
-| [HashiCorp Vault](/integrations/cloud/hashicorp-vault) | Cloud | Available |
-| [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 |
-| [GitHub Actions](/integrations/cicd/githubactions) | CI/CD | Available |
-| [GitLab](/integrations/cicd/gitlab) | CI/CD | Available |
-| [CircleCI](/integrations/cicd/circleci) | CI/CD | Available |
-| [Travis CI](/integrations/cicd/travisci) | CI/CD | Available |
-| [React](/integrations/frameworks/react) | Framework | Available |
-| [Vue](/integrations/frameworks/vue) | Framework | Available |
-| [Express](/integrations/frameworks/express) | Framework | Available |
-| [Next.js](/integrations/frameworks/nextjs) | Framework | Available |
-| [NestJS](/integrations/frameworks/nestjs) | Framework | Available |
-| [SvelteKit](/integrations/frameworks/sveltekit) | Framework | Available |
-| [Nuxt](/integrations/frameworks/nuxt) | Framework | Available |
-| [Gatsby](/integrations/frameworks/gatsby) | Framework | Available |
-| [Remix](/integrations/frameworks/remix) | Framework | Available |
-| [Vite](/integrations/frameworks/vite) | Framework | Available |
-| [Fiber](/integrations/frameworks/fiber) | Framework | Available |
-| [Django](/integrations/frameworks/django) | Framework | Available |
-| [Flask](/integrations/frameworks/flask) | Framework | Available |
-| [Laravel](/integrations/frameworks/laravel) | Framework | Available |
-| [Ruby on Rails](/integrations/frameworks/rails) | Framework | Available |
-| GCP Secret Manager | Cloud | Coming soon |
-| Jenkins | CI/CD | Coming soon |
+| Integration | Type | Status |
+| -------------------------------------------------------------- | ---------------------- | ----------- |
+| [Docker](/integrations/platforms/docker) | Platform | Available |
+| [Docker-Compose](/integrations/platforms/docker-compose) | Platform | Available |
+| [Kubernetes](/integrations/platforms/kubernetes) | Platform | Available |
+| [Terraform](/integrations/frameworks/terraform) | Infrastructure as code | Available |
+| [PM2](/integrations/platforms/pm2) | Platform | Available |
+| [Heroku](/integrations/cloud/heroku) | Cloud | Available |
+| [Vercel](/integrations/cloud/vercel) | Cloud | Available |
+| [Netlify](/integrations/cloud/netlify) | Cloud | Available |
+| [Render](/integrations/cloud/render) | Cloud | Available |
+| [Railway](/integrations/cloud/railway) | Cloud | Available |
+| [Fly.io](/integrations/cloud/flyio) | Cloud | Available |
+| [Supabase](/integrations/cloud/supabase) | Cloud | Available |
+| [Cloudflare Pages](/integrations/cloud/cloudflare-pages) | Cloud | Available |
+| [Checkly](/integrations/cloud/checkly) | Cloud | Available |
+| [HashiCorp Vault](/integrations/cloud/hashicorp-vault) | Cloud | Available |
+| [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 |
+| [GitHub Actions](/integrations/cicd/githubactions) | CI/CD | Available |
+| [GitLab](/integrations/cicd/gitlab) | CI/CD | Available |
+| [CircleCI](/integrations/cicd/circleci) | CI/CD | Available |
+| [Travis CI](/integrations/cicd/travisci) | CI/CD | Available |
+| [React](/integrations/frameworks/react) | Framework | Available |
+| [Vue](/integrations/frameworks/vue) | Framework | Available |
+| [Express](/integrations/frameworks/express) | Framework | Available |
+| [Next.js](/integrations/frameworks/nextjs) | Framework | Available |
+| [NestJS](/integrations/frameworks/nestjs) | Framework | Available |
+| [SvelteKit](/integrations/frameworks/sveltekit) | Framework | Available |
+| [Nuxt](/integrations/frameworks/nuxt) | Framework | Available |
+| [Gatsby](/integrations/frameworks/gatsby) | Framework | Available |
+| [Remix](/integrations/frameworks/remix) | Framework | Available |
+| [Vite](/integrations/frameworks/vite) | Framework | Available |
+| [Fiber](/integrations/frameworks/fiber) | Framework | Available |
+| [Django](/integrations/frameworks/django) | Framework | Available |
+| [Flask](/integrations/frameworks/flask) | Framework | Available |
+| [Laravel](/integrations/frameworks/laravel) | Framework | Available |
+| [Ruby on Rails](/integrations/frameworks/rails) | Framework | Available |
+| GCP Secret Manager | Cloud | Coming soon |
+| Jenkins | CI/CD | Coming soon |
diff --git a/docs/mint.json b/docs/mint.json
index 458ff795c..d687af107 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -196,6 +196,7 @@
"integrations/cloud/railway",
"integrations/cloud/flyio",
"integrations/cloud/supabase",
+ "integrations/cloud/cloudflare-pages",
"integrations/cloud/checkly",
"integrations/cloud/hashicorp-vault",
"integrations/cloud/azure-key-vault",
diff --git a/frontend/src/pages/integrations/[id].tsx b/frontend/src/pages/integrations/[id].tsx
index 795efebce..54a29a5c4 100644
--- a/frontend/src/pages/integrations/[id].tsx
+++ b/frontend/src/pages/integrations/[id].tsx
@@ -220,7 +220,7 @@ export default function Integrations() {
case "hashicorp-vault":
link = `${window.location.origin}/integrations/hashicorp-vault/authorize`;
break;
- case 'cloudflare-pages':
+ case "cloudflare-pages":
link = `${window.location.origin}/integrations/cloudflare-pages/authorize`;
break;
default:
@@ -287,8 +287,9 @@ export default function Integrations() {
case "hashicorp-vault":
link = `${window.location.origin}/integrations/hashicorp-vault/create?integrationAuthId=${integrationAuth._id}`;
break;
- case 'cloudflare-pages':
+ case "cloudflare-pages":
link = `${window.location.origin}/integrations/cloudflare-pages/create?integrationAuthId=${integrationAuth._id}`;
+ break;
default:
break;
}
diff --git a/frontend/src/pages/integrations/cloudflare-pages/authorize.tsx b/frontend/src/pages/integrations/cloudflare-pages/authorize.tsx
index f4990fdc4..6e4b134d1 100644
--- a/frontend/src/pages/integrations/cloudflare-pages/authorize.tsx
+++ b/frontend/src/pages/integrations/cloudflare-pages/authorize.tsx
@@ -1,39 +1,40 @@
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";
+
+import { Button,Card, CardTitle, FormControl, Input } from "../../../components/v2";
+import saveIntegrationAccessToken from "../../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 [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('');
+ setAccessKeyErrorText("");
+ setAccountIdErrorText("");
if (accessKey.length === 0 || accountId.length === 0) {
- if (accessKey.length === 0) setAccessKeyErrorText('API token cannot be blank!');
- if (accountId.length === 0) setAccountIdErrorText('Account ID cannot be blank!');
+ if (accessKey.length === 0) setAccessKeyErrorText("API token 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',
+ workspaceId: localStorage.getItem("projectData.id"),
+ integration: "cloudflare-pages",
accessId: accountId,
accessToken: accessKey,
url: null,
namespace: null
});
- setAccessKey('');
- setAccountId('');
+ setAccessKey("");
+ setAccountId("");
setIsLoading(false);
router.push(`/integrations/cloudflare-pages/create?integrationAuthId=${integrationAuth._id}`);
@@ -49,7 +50,7 @@ export default function CloudflarePagesIntegrationPage() {