import PasswordInput from "@/common/PasswordInput"; import TransitionWrapper from "@/common/TransitionWrapper"; import Button from "@/components/Button"; import { spcApi } from "@/lib/api"; import { useSettingsStore } from "@/store/optionsStore"; import { useAppStore } from "@/store/store"; import { createInterpolateElement, useState } from "@wordpress/element"; import { __ } from "@wordpress/i18n"; import { Globe } from "lucide-react"; import ManagedSettingNotice from "./ManagedSettingNotice"; import { useConnectionStore } from "./connectionStore"; const ApiTokenForm = () => { const { asyncLocked, lockAsync } = useAppStore(); const { settings, updateSettings, isSettingOverridden } = useSettingsStore(); const storedTokenExists = Boolean(window.SPCDash.settings?.cf_apitoken?.hasValue); const { setErrorMessage } = useConnectionStore(); const [isConnecting, setIsConnecting] = useState(false); const [formData, setFormData] = useState({ apiToken: settings.cf_apitoken as string }) const tokenManaged = isSettingOverridden('cf_apitoken'); const isFormInvalid = (!formData.apiToken) || tokenManaged; const getZoneDomainList = async (e: React.FormEvent) => { setErrorMessage(''); e.preventDefault(); lockAsync(true); setIsConnecting(true); const data = { auth_mode: 'api_token', api_token: formData.apiToken, } const response = await spcApi.cloudflareConnect(data); lockAsync(false); setIsConnecting(false); if (response.success) { updateSettings(response.data.settings, response.data.meta); return; } setErrorMessage(response.message); } return (
{ setFormData({ ...formData, apiToken: e.target.value }); }} />

{__('To get your API token:', 'wp-cloudflare-page-cache')}

  1. {__('Log into your Cloudflare dashboard and navigate to "My Profile" > "API Tokens"', 'wp-cloudflare-page-cache')}
  2. {__('Click "Create Token" and select the "WordPress" template', 'wp-cloudflare-page-cache')}
  3. {createInterpolateElement(__('Add the Zone > Cache Rules > Edit permission', 'wp-cloudflare-page-cache'), { strong: })}
  4. {createInterpolateElement(__('Add the Zone > Transform Rules > Edit permission', 'wp-cloudflare-page-cache'), { strong: })}
  5. {__('Click "Continue to summary", review permissions, and click "Create Token"', 'wp-cloudflare-page-cache')}
  6. {__('Copy the generated token', 'wp-cloudflare-page-cache')}
) } export default ApiTokenForm;