File name
Commit message
Commit date
File name
Commit message
Commit date
import 'server-only'
/**
* 환경변수 검증·export 단일 진입점.
*
* 값은 실제로 필요해지는 시점(함수 호출 시)에만 읽고 검증한다 — 모듈 최상단에서 즉시 검증하면
* `force-dynamic` 라우트라도 `next build`의 페이지 데이터 수집 단계에서 이 모듈이 먼저 로드되어
* 운영 배포 전 로컬 빌드가 SESSION_SECRET 미설정만으로 실패할 수 있기 때문이다.
* 대신 각 접근자 함수 자체가 "호출 시점" fail-fast를 보장한다 — 기본값 폴백은 없다.
*/
function readRequiredEnv(key: string): string {
const value = process.env[key];
if (!value) {
throw new Error(
`환경변수 ${key}가 설정되지 않았습니다. 배포 환경에 값을 주입하세요.`
);
}
return value;
}
/** 세션 토큰 서명에 사용하는 HMAC 시크릿. 누락 시 즉시 throw(fail-fast). */
export function getSessionSecret(): string {
return readRequiredEnv('SESSION_SECRET');
}
/**
* 백엔드(edupay-backend) API의 base URL. 서버 전용 — `NEXT_PUBLIC_` 접두를 붙이지 않는다.
* 클라이언트는 백엔드에 직접 요청하지 않고 항상 Server Action → Repository(lib/http/backend-fetch.ts)
* 를 경유하므로 이 값이 브라우저에 노출될 필요가 없다.
*/
export function getApiBaseUrl(): string {
return readRequiredEnv('EDUPAY_API_BASE_URL');
}