fix(env): allow build fallback for auth secret
This commit is contained in:
parent
da46fa448b
commit
130ab3bbdc
1 changed files with 16 additions and 2 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
import { z } from "zod"
|
import { z } from "zod"
|
||||||
|
|
||||||
const envSchema = z.object({
|
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(),
|
BETTER_AUTH_URL: z.string().url().optional(),
|
||||||
NEXT_PUBLIC_CONVEX_URL: z.string().url().optional(),
|
NEXT_PUBLIC_CONVEX_URL: z.string().url().optional(),
|
||||||
CONVEX_INTERNAL_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")
|
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 = {
|
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",
|
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,
|
NEXT_PUBLIC_CONVEX_URL: parsed.data.NEXT_PUBLIC_CONVEX_URL,
|
||||||
CONVEX_INTERNAL_URL: parsed.data.CONVEX_INTERNAL_URL,
|
CONVEX_INTERNAL_URL: parsed.data.CONVEX_INTERNAL_URL,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue