Skip to content

Commit c1cb3e6

Browse files
authored
Improve Ory env validation errors (#366)
Updates the app env check so AUTH_PROVIDER=ory reports only the Ory-related variables that are actually missing. The required Ory env variable names are defined once and the validator now emits a custom Zod issue with the missing subset. Verified with bun scripts/check-app-env.ts and bunx biome check scripts/check-app-env.ts.
1 parent 2ff9d5b commit c1cb3e6

1 file changed

Lines changed: 22 additions & 18 deletions

File tree

scripts/check-app-env.ts

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,20 @@
11
import { loadEnvConfig } from '@next/env'
2+
import { z } from 'zod'
23
import { clientSchema, serverSchema, validateEnv } from '../src/lib/env'
34

45
const projectDir = process.cwd()
56
loadEnvConfig(projectDir)
67

8+
const oryRequiredEnvVars = [
9+
'AUTH_SECRET',
10+
'ORY_SDK_URL',
11+
'ORY_OAUTH2_CLIENT_ID',
12+
'ORY_OAUTH2_CLIENT_SECRET',
13+
'ORY_OAUTH2_AUDIENCE',
14+
'ORY_PROJECT_API_TOKEN',
15+
'DASHBOARD_API_ADMIN_TOKEN',
16+
] as const
17+
718
const schema = serverSchema
819
.merge(clientSchema)
920
.refine(
@@ -58,25 +69,18 @@ const schema = serverSchema
5869
path: ['PLAIN_API_KEY'],
5970
}
6071
)
61-
.refine(
62-
(data) => {
63-
if (data.AUTH_PROVIDER !== 'ory') return true
72+
.superRefine((data, ctx) => {
73+
if (data.AUTH_PROVIDER !== 'ory') return
6474

65-
return Boolean(
66-
data.AUTH_SECRET &&
67-
data.ORY_SDK_URL &&
68-
data.ORY_OAUTH2_CLIENT_ID &&
69-
data.ORY_OAUTH2_CLIENT_SECRET &&
70-
data.ORY_OAUTH2_AUDIENCE &&
71-
data.ORY_PROJECT_API_TOKEN &&
72-
data.DASHBOARD_API_ADMIN_TOKEN
73-
)
74-
},
75-
{
76-
message:
77-
'AUTH_PROVIDER=ory requires AUTH_SECRET, ORY_SDK_URL, ORY_OAUTH2_CLIENT_ID, ORY_OAUTH2_CLIENT_SECRET, ORY_OAUTH2_AUDIENCE, ORY_PROJECT_API_TOKEN, and DASHBOARD_API_ADMIN_TOKEN',
78-
path: ['AUTH_PROVIDER'],
75+
const missingEnvVars = oryRequiredEnvVars.filter((envVar) => !data[envVar])
76+
77+
if (missingEnvVars.length > 0) {
78+
ctx.addIssue({
79+
code: z.ZodIssueCode.custom,
80+
message: `AUTH_PROVIDER=ory is missing ${missingEnvVars.join(', ')}`,
81+
path: ['AUTH_PROVIDER'],
82+
})
7983
}
80-
)
84+
})
8185

8286
validateEnv(schema)

0 commit comments

Comments
 (0)