임동욱 임동욱 08-19
feat: 디자인 테스트 페이지를 모든 환경에서 열리게
`/dev-test/design`이 개발 빌드에서만 인증 면제였다(proxy의 DEV_ONLY_PUBLIC_PATHS가
NODE_ENV !== 'production'일 때만 평가됐다). 운영·테스트 환경에서는 세션이 없으면 /login으로
리다이렉트돼 볼 수 없었다.

PUBLIC_PATHS에 넣어 환경 구분을 없앴다. 페이지 쪽에는 이미 프로덕션 차단이 없어 주석만 정리했다.

검증 — 쿠키를 모두 지운 상태에서 /dev-test/design 요청이 200, 리다이렉트 없음. 프로덕션
빌드 산출물에도 라우트가 포함된다.

Co-Authored-By: Claude Opus 5 
@9c43ddb75c48461da28d6729d1311f658600e7fb
app/(public)/(empty)/dev-test/design/page.tsx
--- app/(public)/(empty)/dev-test/design/page.tsx
+++ app/(public)/(empty)/dev-test/design/page.tsx
@@ -7,12 +7,8 @@
 /**
  * 디자인 시스템 테스트 페이지 — 개발 전용.
  *
- * 화면 구현은 전부 `@fox/dev-test`가 소유하고 이 라우트는 마운트만 한다. 그래야 `@fox`
- * 폴더를 다른 프로젝트로 복사할 때 테스트 하니스가 함께 따라간다(라우트 한 줄만 추가하면
- * 된다). 프로덕션 차단은 서버에서 판정해야 하므로 이 파일은 Server Component로 둔다.
+ * 화면 구현은 전부 `@fox/dev-test`가 소유하고 이 라우트는 마운트만 한다.
  */
 export default function DesignSystemTestPage() {
- 
-
   return <DevTestPage />;
 }
proxy.ts
--- proxy.ts
+++ proxy.ts
@@ -14,28 +14,12 @@
  * proxy(`/login`→`/`)와 DAL(`/`→`/login`)이 무한 루프를 이룰 수 있으므로, 그 방향은
  * `/login` 페이지의 `getSessionAdmin()` 검증(서명까지 확인)을 통과했을 때만 수행한다.
  */
-const PUBLIC_PATHS = ['/login'];
-
-/**
- * 개발 환경에서만 인증을 면제하는 경로. 디자인 시스템 테스트 페이지(`/dev-test/design`)는
- * 개발 전용 라우트이며 프로덕션에서는 페이지 자체가 `notFound()`로 404를 낸다 — 즉 여기서
- * 열어도 프로덕션 노출 경로가 생기지 않는다. 백엔드나 세션 없이도 토큰·컴포넌트를 확인할
- * 수 있게 한다.
- *
- * fail-closed 원칙은 유지된다: 이 목록은 개발 빌드에서만 평가되고, 프로덕션 빌드에서는
- * `PUBLIC_PATHS`만 남는다.
- */
-const DEV_ONLY_PUBLIC_PATHS = ['/dev-test/design'];
+// 이슈: `/dev-test/design`은 모든 환경에서 세션 없이 열린다(사용자 요청). 실데이터를 그리지
+// 않고 @fox 컴포넌트만 보여주는 화면이지만, 운영에도 노출되는 경로다.
+const PUBLIC_PATHS = ['/login', '/dev-test/design'];
 
 function isPublicPath(pathname: string): boolean {
-  if (PUBLIC_PATHS.includes(pathname)) {
-    return true;
-  }
-
-  return (
-    process.env.NODE_ENV !== 'production' &&
-    DEV_ONLY_PUBLIC_PATHS.includes(pathname)
-  );
+  return PUBLIC_PATHS.includes(pathname);
 }
 
 export function proxy(request: NextRequest) {
Add a comment
List