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 = {
|
const schemas: any = {
|
||||||
stripe: { label: "Stripe", fields: [{ key: "secretKey", label: "Secret Key", type: "password" }, { key: "webhookSecret", label: "Webhook Secret", type: "password" }] },
|
stripe: {
|
||||||
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" }] },
|
label: "Stripe",
|
||||||
cloudflare_config: { label: "Cloudflare", fields: [{ key: "apiToken", label: "API Token", type: "password" }, { key: "zoneId", label: "Zone ID" }] },
|
fields: [
|
||||||
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: "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]))
|
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) => (
|
{selectedService && schemas[selectedService]?.fields.map((field: any) => (
|
||||||
<div key={field.key} className="grid gap-2">
|
<div key={field.key} className="grid gap-2">
|
||||||
<Label>{field.label}</Label>
|
<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>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue