feat(dev): VITE_ENABLE_DEV_ROUTES 로 비-로컬호스트에서도 /dev/*·/test 허용

스테이징/IP 서버 빌드에서 디버그 라우트를 켤 수 있게 env flag 추가.
운영 빌드는 false 로 유지.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Mina Choi 2026-05-20 11:59:32 +09:00
parent 7fb1831c91
commit e04e8af798
2 changed files with 14 additions and 2 deletions

View File

@ -5,3 +5,7 @@ VITE_API_BASE_URL=http://localhost:8001
# 백엔드 API 키 — 모든 요청에 x-api-key 헤더로 전송 # 백엔드 API 키 — 모든 요청에 x-api-key 헤더로 전송
VITE_API_KEY= VITE_API_KEY=
# 'true' 로 설정 시 비-로컬호스트 환경(스테이징/IP 서버 등)에서도 /dev/* 와 /test 라우트 허용
# 운영(production) 에는 절대 'true' 로 두지 말 것
VITE_ENABLE_DEV_ROUTES=false

View File

@ -1,7 +1,11 @@
/** /**
* DevOnly — `/dev/*` 라우트 가드. * DevOnly — `/dev/*` 라우트 가드.
* *
* `window.location.hostname` 이 로컬호스트 계열이 아닐 경우 루트로 리다이렉트. * 허용 조건:
* - 빌드 시 `VITE_ENABLE_DEV_ROUTES=true` 가 설정된 경우, 또는
* - `window.location.hostname` 이 로컬호스트 계열인 경우.
* 그 외에는 루트로 리다이렉트.
*
* 클라이언트 사이드 가드라 보안 의미보다는 "운영 도메인에서 실수로 노출되는 것 방지" 용도. * 클라이언트 사이드 가드라 보안 의미보다는 "운영 도메인에서 실수로 노출되는 것 방지" 용도.
* 진짜 차단이 필요하면 서버/CDN 레벨에서 경로를 막아야 한다. * 진짜 차단이 필요하면 서버/CDN 레벨에서 경로를 막아야 한다.
*/ */
@ -20,8 +24,12 @@ function isLocalHost(): boolean {
return LOCAL_HOSTNAMES.has(window.location.hostname); return LOCAL_HOSTNAMES.has(window.location.hostname);
} }
function isDevRoutesEnabled(): boolean {
return import.meta.env.VITE_ENABLE_DEV_ROUTES === 'true';
}
export default function DevOnly() { export default function DevOnly() {
if (!isLocalHost()) { if (!isDevRoutesEnabled() && !isLocalHost()) {
return <Navigate to="/" replace />; return <Navigate to="/" replace />;
} }
return <Outlet />; return <Outlet />;