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
... | ... | @@ -7,12 +7,8 @@ |
| 7 | 7 |
/** |
| 8 | 8 |
* 디자인 시스템 테스트 페이지 — 개발 전용. |
| 9 | 9 |
* |
| 10 |
- * 화면 구현은 전부 `@fox/dev-test`가 소유하고 이 라우트는 마운트만 한다. 그래야 `@fox` |
|
| 11 |
- * 폴더를 다른 프로젝트로 복사할 때 테스트 하니스가 함께 따라간다(라우트 한 줄만 추가하면 |
|
| 12 |
- * 된다). 프로덕션 차단은 서버에서 판정해야 하므로 이 파일은 Server Component로 둔다. |
|
| 10 |
+ * 화면 구현은 전부 `@fox/dev-test`가 소유하고 이 라우트는 마운트만 한다. |
|
| 13 | 11 |
*/ |
| 14 | 12 |
export default function DesignSystemTestPage() {
|
| 15 |
- |
|
| 16 |
- |
|
| 17 | 13 |
return <DevTestPage />; |
| 18 | 14 |
} |
--- proxy.ts
+++ proxy.ts
... | ... | @@ -14,28 +14,12 @@ |
| 14 | 14 |
* proxy(`/login`→`/`)와 DAL(`/`→`/login`)이 무한 루프를 이룰 수 있으므로, 그 방향은 |
| 15 | 15 |
* `/login` 페이지의 `getSessionAdmin()` 검증(서명까지 확인)을 통과했을 때만 수행한다. |
| 16 | 16 |
*/ |
| 17 |
-const PUBLIC_PATHS = ['/login']; |
|
| 18 |
- |
|
| 19 |
-/** |
|
| 20 |
- * 개발 환경에서만 인증을 면제하는 경로. 디자인 시스템 테스트 페이지(`/dev-test/design`)는 |
|
| 21 |
- * 개발 전용 라우트이며 프로덕션에서는 페이지 자체가 `notFound()`로 404를 낸다 — 즉 여기서 |
|
| 22 |
- * 열어도 프로덕션 노출 경로가 생기지 않는다. 백엔드나 세션 없이도 토큰·컴포넌트를 확인할 |
|
| 23 |
- * 수 있게 한다. |
|
| 24 |
- * |
|
| 25 |
- * fail-closed 원칙은 유지된다: 이 목록은 개발 빌드에서만 평가되고, 프로덕션 빌드에서는 |
|
| 26 |
- * `PUBLIC_PATHS`만 남는다. |
|
| 27 |
- */ |
|
| 28 |
-const DEV_ONLY_PUBLIC_PATHS = ['/dev-test/design']; |
|
| 17 |
+// 이슈: `/dev-test/design`은 모든 환경에서 세션 없이 열린다(사용자 요청). 실데이터를 그리지 |
|
| 18 |
+// 않고 @fox 컴포넌트만 보여주는 화면이지만, 운영에도 노출되는 경로다. |
|
| 19 |
+const PUBLIC_PATHS = ['/login', '/dev-test/design']; |
|
| 29 | 20 |
|
| 30 | 21 |
function isPublicPath(pathname: string): boolean {
|
| 31 |
- if (PUBLIC_PATHS.includes(pathname)) {
|
|
| 32 |
- return true; |
|
| 33 |
- } |
|
| 34 |
- |
|
| 35 |
- return ( |
|
| 36 |
- process.env.NODE_ENV !== 'production' && |
|
| 37 |
- DEV_ONLY_PUBLIC_PATHS.includes(pathname) |
|
| 38 |
- ); |
|
| 22 |
+ return PUBLIC_PATHS.includes(pathname); |
|
| 39 | 23 |
} |
| 40 | 24 |
|
| 41 | 25 |
export function proxy(request: NextRequest) {
|
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?