Skip to content

Commit fceec4e

Browse files
committed
feat: enhance authentication and accounts handling with server-only environment variables
1 parent ae969c0 commit fceec4e

File tree

4 files changed

+26
-6
lines changed

4 files changed

+26
-6
lines changed

apps/web/middlewares/withAuth.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,13 @@ const publicPaths = ["/map/public", "/print"];
1919

2020
export const withAuth: MiddlewareFactory = (next) => {
2121
return async (request: NextRequest, _next) => {
22-
if (process.env.NEXT_PUBLIC_AUTH_DISABLED || !process.env.NEXTAUTH_URL || !process.env.NEXTAUTH_SECRET) {
22+
// Check if auth is disabled using server-only env var (without NEXT_PUBLIC_ prefix)
23+
// IMPORTANT: NEXT_PUBLIC_* vars are inlined at build time and won't work for runtime checks
24+
// in Edge Runtime middleware. Use AUTH_DISABLED (server-only) for runtime configuration.
25+
const authDisabledEnv = process.env.AUTH_DISABLED;
26+
const isAuthDisabled = authDisabledEnv && authDisabledEnv.toLowerCase() === "true";
27+
28+
if (isAuthDisabled || !process.env.NEXTAUTH_URL || !process.env.NEXTAUTH_SECRET) {
2329
return next(request, _next);
2430
}
2531
const { pathname, search, origin, basePath } = request.nextUrl;

apps/web/middlewares/withOrganization.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,25 @@ const publicPaths = ["/map/public"];
1212

1313
export const withOrganization: MiddlewareFactory = (next) => {
1414
return async (request: NextRequest, _next) => {
15-
// Check if auth/accounts are disabled - handle both actual values and unreplaced placeholders
15+
// Check if auth/accounts are disabled using server-only env vars (without NEXT_PUBLIC_ prefix)
16+
// IMPORTANT: NEXT_PUBLIC_* vars are inlined at build time and won't work for runtime checks
17+
// in Edge Runtime middleware. Use AUTH_DISABLED and ACCOUNTS_DISABLED (server-only) for runtime configuration.
18+
const authDisabledEnv = process.env.AUTH_DISABLED;
19+
const accountsDisabledEnv = process.env.ACCOUNTS_DISABLED;
20+
const isAuthDisabled = authDisabledEnv && authDisabledEnv.toLowerCase() === "true";
21+
const isAccountsDisabled = accountsDisabledEnv && accountsDisabledEnv.toLowerCase() === "true";
22+
1623
if (
17-
process.env.NEXT_PUBLIC_AUTH_DISABLED ||
18-
process.env.NEXT_PUBLIC_ACCOUNTS_DISABLED ||
24+
isAuthDisabled ||
25+
isAccountsDisabled ||
1926
!process.env.NEXTAUTH_URL ||
2027
!process.env.NEXTAUTH_SECRET ||
21-
!process.env.NEXT_PUBLIC_ACCOUNTS_API_URL
28+
!process.env.ACCOUNTS_API_URL
2229
) {
2330
return next(request, _next);
2431
}
2532

26-
const USERS_API_BASE_URL = new URL("api/v1/users", process.env.NEXT_PUBLIC_ACCOUNTS_API_URL).href;
33+
const USERS_API_BASE_URL = new URL("api/v1/users", process.env.ACCOUNTS_API_URL).href;
2734

2835
const { pathname, origin, basePath } = request.nextUrl;
2936

compose.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,5 +555,9 @@ services:
555555
NEXT_PUBLIC_SENTRY_DSN: ${NEXT_PUBLIC_SENTRY_DSN}
556556
NEXT_PUBLIC_AUTH_DISABLED: ${NEXT_PUBLIC_AUTH_DISABLED}
557557
NEXT_PUBLIC_ACCOUNTS_DISABLED: ${NEXT_PUBLIC_ACCOUNTS_DISABLED}
558+
# Server-only env vars for Edge Runtime middleware (NEXT_PUBLIC_* are inlined at build time)
559+
AUTH_DISABLED: ${NEXT_PUBLIC_AUTH_DISABLED}
560+
ACCOUNTS_DISABLED: ${NEXT_PUBLIC_ACCOUNTS_DISABLED}
561+
ACCOUNTS_API_URL: ${NEXT_PUBLIC_ACCOUNTS_API_URL}
558562
depends_on:
559563
- core

turbo.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@
5757
"NEXTAUTH_URL",
5858
"NEXT_PUBLIC_AUTH_DISABLED",
5959
"NEXT_PUBLIC_ACCOUNTS_DISABLED",
60+
"AUTH_DISABLED",
61+
"ACCOUNTS_DISABLED",
62+
"ACCOUNTS_API_URL",
6063
"NEXT_PUBLIC_SENTRY_DSN",
6164
"NEXT_RUNTIME",
6265
"NEXTAUTH_SECRET",

0 commit comments

Comments
 (0)