import { Component, createSignal, Show } from 'solid-js'; import { showSuccess, showError } from '@/utils/toast'; import { copyToClipboard } from '@/utils/clipboard'; interface APIOnlySetupProps { onTokenGenerated?: () => void; } export const APIOnlySetup: Component = (props) => { const [isGenerating, setIsGenerating] = createSignal(false); const [token, setToken] = createSignal(null); const [showToken, setShowToken] = createSignal(false); const [copied, setCopied] = createSignal(false); const generateToken = async () => { setIsGenerating(true); try { const response = await fetch('/api/security/regenerate-token', { method: 'POST', credentials: 'include', }); if (!response.ok) { const error = await response.text(); throw new Error(error || 'Failed to generate token'); } const data = await response.json(); setToken(data.token); setShowToken(true); showSuccess("API token generated! Save it now - it won't be shown again."); } catch (error) { showError(`Failed to generate token: ${error}`); } finally { setIsGenerating(false); } }; const handleCopy = async () => { if (!token()) return; const success = await copyToClipboard(token()!); if (success) { setCopied(true); setTimeout(() => setCopied(false), 2000); } else { showError('Failed to copy to clipboard'); } }; return (

Generate an API token for programmatic access. Use it for:

  • Automation scripts and CI/CD pipelines
  • Monitoring integrations
  • Third-party applications

Note: Without password authentication enabled, the UI will remain publicly accessible.

✅ API Token Generated!

Save this token now - it will never be shown again!

{token()}
); };