fix(env): allow build fallback for auth secret

This commit is contained in:
Esdras Renan 2025-11-11 16:17:38 -03:00
parent da46fa448b
commit 130ab3bbdc

View file

@ -1,7 +1,7 @@
import { z } from "zod"
const envSchema = z.object({
BETTER_AUTH_SECRET: z.string().min(1, "Missing BETTER_AUTH_SECRET"),
BETTER_AUTH_SECRET: z.string().min(1).optional(),
BETTER_AUTH_URL: z.string().url().optional(),
NEXT_PUBLIC_CONVEX_URL: z.string().url().optional(),
CONVEX_INTERNAL_URL: z.string().url().optional(),
@ -30,8 +30,22 @@ if (!parsed.success) {
throw new Error("Invalid environment configuration")
}
const isBuildPhase = process.env.NEXT_PHASE === "phase-production-build"
function resolveSecret(value: string | undefined, key: string) {
if (value) return value
const fallback = isBuildPhase ? `build-placeholder-${key.toLowerCase()}` : `dev-${key.toLowerCase()}`
if (process.env.NODE_ENV === "production" && !isBuildPhase) {
throw new Error(`${key} must be set in production runtime environment`)
}
if (!isBuildPhase) {
console.warn(`ENV ${key} not set; using fallback value only for development.`)
}
return fallback
}
export const env = {
BETTER_AUTH_SECRET: parsed.data.BETTER_AUTH_SECRET,
BETTER_AUTH_SECRET: resolveSecret(parsed.data.BETTER_AUTH_SECRET, "BETTER_AUTH_SECRET"),
BETTER_AUTH_URL: parsed.data.BETTER_AUTH_URL ?? parsed.data.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000",
NEXT_PUBLIC_CONVEX_URL: parsed.data.NEXT_PUBLIC_CONVEX_URL,
CONVEX_INTERNAL_URL: parsed.data.CONVEX_INTERNAL_URL,