치지직 앱으로 연동하고, 연동 확인된 ID만 접속할 수 있도록 수정, 개발용으로는 채널ID를 수동으로 접속할 수 있도록 변경.

최초 추천 고정 배치 추가.
This commit is contained in:
kimyu
2026-09-18 04:09:31 +09:00
parent 6f72824598
commit 73520f9f06
26 changed files with 1272 additions and 162 deletions

46
lib/auth/mode.ts Normal file
View File

@@ -0,0 +1,46 @@
/**
* 개발: 채널 ID 입장 + 치지직 로그인 모두 허용
* 릴리즈(production): 치지직 로그인(세션)으로만 채널 룸 입장
*
* 강제 오버라이드:
* - DRINKMARBLE_ALLOW_CHANNEL_ID_JOIN=true → production에서도 채널 ID 입장 허용
* - DRINKMARBLE_REQUIRE_CHZZK_LOGIN=true → development에서도 로그인 필수
*/
export function allowChannelIdJoin(): boolean {
if (process.env.DRINKMARBLE_REQUIRE_CHZZK_LOGIN === 'true') return false;
if (process.env.DRINKMARBLE_ALLOW_CHANNEL_ID_JOIN === 'true') return true;
return process.env.NODE_ENV !== 'production';
}
export function requireChzzkLoginForChannelRooms(): boolean {
return !allowChannelIdJoin();
}
export function isChzzkOAuthConfigured(): boolean {
return Boolean(
process.env.CHZZK_CLIENT_ID?.trim() &&
process.env.CHZZK_CLIENT_SECRET?.trim() &&
process.env.CHZZK_REDIRECT_URI?.trim(),
);
}
export function getChzzkOAuthConfig() {
const clientId = process.env.CHZZK_CLIENT_ID?.trim() || '';
const clientSecret = process.env.CHZZK_CLIENT_SECRET?.trim() || '';
const redirectUri = process.env.CHZZK_REDIRECT_URI?.trim() || '';
if (!clientId || !clientSecret || !redirectUri) {
throw new Error(
'치지직 OAuth 환경변수(CHZZK_CLIENT_ID, CHZZK_CLIENT_SECRET, CHZZK_REDIRECT_URI)가 필요합니다.',
);
}
return { clientId, clientSecret, redirectUri };
}
export function getAuthSessionSecret(): string {
const explicit = process.env.AUTH_SESSION_SECRET?.trim();
if (explicit) return explicit;
const fallback = process.env.CHZZK_CLIENT_SECRET?.trim();
if (fallback) return fallback;
// 개발 전용 폴백 (production에서는 OAuth 설정이 있어야 함)
return 'drinkmarble-dev-session-secret';
}