fix: padroniza nomes de serviços e adiciona campos para Firebase e Appwrite
This commit is contained in:
parent
cedca43851
commit
23dfe6099e
1 changed files with 61 additions and 5 deletions
|
|
@ -141,10 +141,53 @@ export default function SettingsPage() {
|
|||
}
|
||||
|
||||
const schemas: any = {
|
||||
stripe: { label: "Stripe", fields: [{ key: "secretKey", label: "Secret Key", type: "password" }, { key: "webhookSecret", label: "Webhook Secret", type: "password" }] },
|
||||
storage: { label: "S3 Storage", fields: [{ key: "endpoint", label: "Endpoint" }, { key: "bucket", label: "Bucket" }, { key: "accessKey", label: "Access Key" }, { key: "secretKey", label: "Secret Key", type: "password" }] },
|
||||
cloudflare_config: { label: "Cloudflare", fields: [{ key: "apiToken", label: "API Token", type: "password" }, { key: "zoneId", label: "Zone ID" }] },
|
||||
smtp: { label: "SMTP Email", fields: [{ key: "host", label: "Host" }, { key: "port", label: "Port", type: "number" }, { key: "username", label: "Username" }, { key: "password", label: "Password", type: "password" }] },
|
||||
stripe: {
|
||||
label: "Stripe",
|
||||
fields: [
|
||||
{ key: "secretKey", label: "Secret Key", type: "password" },
|
||||
{ key: "webhookSecret", label: "Webhook Secret", type: "password" }
|
||||
]
|
||||
},
|
||||
storage: {
|
||||
label: "S3 Storage (Civo/AWS)",
|
||||
fields: [
|
||||
{ key: "endpoint", label: "Endpoint (ex: https://objectstore...)" },
|
||||
{ key: "bucket", label: "Bucket Name" },
|
||||
{ key: "accessKey", label: "Access Key" },
|
||||
{ key: "secretKey", label: "Secret Key", type: "password" }
|
||||
]
|
||||
},
|
||||
cloudflare_config: {
|
||||
label: "Cloudflare",
|
||||
fields: [
|
||||
{ key: "apiToken", label: "API Token", type: "password" },
|
||||
{ key: "zoneId", label: "Zone ID" }
|
||||
]
|
||||
},
|
||||
smtp: {
|
||||
label: "SMTP Email",
|
||||
fields: [
|
||||
{ key: "host", label: "Host" },
|
||||
{ key: "port", label: "Port", type: "number" },
|
||||
{ key: "username", label: "Username" },
|
||||
{ key: "password", label: "Password", type: "password" },
|
||||
{ key: "fromEmail", label: "Sender Email (From)" }
|
||||
]
|
||||
},
|
||||
fcm_service_account: {
|
||||
label: "Firebase Admin (FCM)",
|
||||
fields: [
|
||||
{ key: "serviceAccountJson", label: "Service Account JSON Content", type: "textarea" }
|
||||
]
|
||||
},
|
||||
appwrite: {
|
||||
label: "Appwrite (Chat & Realtime)",
|
||||
fields: [
|
||||
{ key: "endpoint", label: "API Endpoint" },
|
||||
{ key: "projectId", label: "Project ID" },
|
||||
{ key: "apiKey", label: "API Key (Standard)", type: "password" }
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
const configuredMap = new Map(credentials.map((svc) => [svc.service_name, svc]))
|
||||
|
|
@ -326,7 +369,20 @@ export default function SettingsPage() {
|
|||
{selectedService && schemas[selectedService]?.fields.map((field: any) => (
|
||||
<div key={field.key} className="grid gap-2">
|
||||
<Label>{field.label}</Label>
|
||||
<Input type={field.type || "text"} value={credentialPayload[field.key] || ""} onChange={(e) => setCredentialPayload({ ...credentialPayload, [field.key]: e.target.value })} />
|
||||
{field.type === "textarea" ? (
|
||||
<Textarea
|
||||
value={credentialPayload[field.key] || ""}
|
||||
onChange={(e) => setCredentialPayload({ ...credentialPayload, [field.key]: e.target.value })}
|
||||
className="min-h-[200px] font-mono text-xs"
|
||||
placeholder='{ "type": "service_account", ... }'
|
||||
/>
|
||||
) : (
|
||||
<Input
|
||||
type={field.type || "text"}
|
||||
value={credentialPayload[field.key] || ""}
|
||||
onChange={(e) => setCredentialPayload({ ...credentialPayload, [field.key]: e.target.value })}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in a new issue