fix: use Cloudflare runtime env for secrets #73
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "exe-dev-bot/market:fix/runtime-env"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Non-public secrets (
NEWSLETTER_SECRET,SMTP_*,SUPABASE_SERVICE_ROLE_KEY,SITE_URL) were read viaimport.meta.env, which is a Vite build-time construct. Since CI only passesPUBLIC_*vars during build, all secrets wereundefinedat runtime in production.Solution
Move all non-public secrets to Cloudflare runtime env (
locals.runtime.envin Astro,envparameter in worker.ts). Secrets are now read at request time from Cloudflare dashboard bindings.Changes
src/lib/email.ts—sendEmail()accepts SMTP config as a parametersrc/lib/service-client.ts—createSupabaseServiceClient()acceptsserviceRoleKeyas a parametersrc/lib/newsletter-delivery.ts—deliverNewsletters()accepts all secrets via an env objectsrc/worker.ts— Reads secrets from the Workerenvparametersrc/pages/api/newsletter/trigger.ts— Reads secrets fromlocals.runtime.envsrc/pages/newsletter/unsubscribe.astro— Reads secrets fromAstro.locals.runtime.envsrc/env.d.ts— Updated with runtime env typesSecurity verification
After build, confirmed:
dist/_worker.js/as runtime lookups (e.g.runtimeEnv.NEWSLETTER_SECRET) — values resolved at request timedist/_astro/(client-side bundles)PUBLIC_*andPRODvars unchanged (build-time is correct for these)Testing
curl -X POST https://market.kwila.cloud/api/newsletter/trigger -H "Authorization: Bearer <secret>" -H "Origin: https://market.kwila.cloud"/newsletter/unsubscribe?token=...