From 1d21d4b49b873cf9515b28956b3f3727d261e736 Mon Sep 17 00:00:00 2001 From: TtiPo Date: Sun, 19 Jul 2026 16:02:42 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B9=84=EB=B0=80=EA=B0=92=20=ED=95=98?= =?UTF-8?q?=EB=93=9C=EC=BD=94=EB=94=A9=20=EA=B8=B0=EB=B3=B8=EA=B0=92=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - docker-compose: DB_PASSWORD, ACCESS_SECRET, REFRESH_SECRET, ADMIN_USER, ADMIN_PASS를 필수(:?)로 변경 - 누락 시 명확한 에러로 실패 - server.js: 시크릿/관리자 계정의 하드코딩 폴백 제거 (JWT 시크릿 누락 시 기동 중단, 관리자 계정 미설정 시 생성 건너뜀) Co-Authored-By: Claude Fable 5 --- backend/server.js | 18 +++++++++++++----- docker-compose.yml | 12 ++++++------ 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/backend/server.js b/backend/server.js index cc1ae5d9..0df21c1b 100644 --- a/backend/server.js +++ b/backend/server.js @@ -20,7 +20,7 @@ const PORT = process.env.PORT || 3000; const sequelize = new Sequelize( process.env.DB_NAME || "report_db", process.env.DB_USER || "postgres", - process.env.DB_PASSWORD || "password", + process.env.DB_PASSWORD, { host: process.env.DB_HOST || "localhost", port: process.env.DB_PORT || 5432, @@ -86,8 +86,12 @@ const swaggerOptions = { const swaggerDocs = swaggerJsdoc(swaggerOptions); app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerDocs)); -const ACCESS_SECRET = process.env.ACCESS_SECRET || "access_secret_123"; -const REFRESH_SECRET = process.env.REFRESH_SECRET || "refresh_secret_123"; +const ACCESS_SECRET = process.env.ACCESS_SECRET; +const REFRESH_SECRET = process.env.REFRESH_SECRET; +if (!ACCESS_SECRET || !REFRESH_SECRET) { + console.error("ACCESS_SECRET / REFRESH_SECRET 환경변수가 필요합니다."); + process.exit(1); +} // OpenAI 추가 const { OpenAI } = require("openai"); @@ -215,8 +219,12 @@ sequelize .then(async () => { console.log("DB Tables Synced..."); // 초기 관리자 계정 생성 (환경 변수 기반) - const adminUser = process.env.ADMIN_USER || "admin"; - const adminPass = process.env.ADMIN_PASS || "admin123!"; + const adminUser = process.env.ADMIN_USER; + const adminPass = process.env.ADMIN_PASS; + if (!adminUser || !adminPass) { + console.log("ADMIN_USER/ADMIN_PASS 미설정 - 관리자 계정 생성을 건너뜁니다."); + return; + } const adminExists = await User.findOne({ where: { username: adminUser } }); const hashedPassword = await bcrypt.hash(adminPass, 10); diff --git a/docker-compose.yml b/docker-compose.yml index 5a3c9dfd..2acee06e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,7 +6,7 @@ services: environment: POSTGRES_DB: ${DB_NAME:-report_db} POSTGRES_USER: ${DB_USER:-postgres} - POSTGRES_PASSWORD: ${DB_PASSWORD:-daoblock12!!} + POSTGRES_PASSWORD: ${DB_PASSWORD:?DB_PASSWORD가 .env에 설정되어야 합니다} ports: - "5442:5432" volumes: @@ -30,12 +30,12 @@ services: - DB_HOST=${DB_HOST:-postgres} - DB_PORT=${DB_PORT:-5432} - DB_USER=${DB_USER:-postgres} - - DB_PASSWORD=${DB_PASSWORD:-daoblock12!!} + - DB_PASSWORD=${DB_PASSWORD:?DB_PASSWORD가 .env에 설정되어야 합니다} - DB_NAME=${DB_NAME:-report_db} - - ACCESS_SECRET=${ACCESS_SECRET:-your_jwt_access_secret_123} - - REFRESH_SECRET=${REFRESH_SECRET:-your_jwt_refresh_secret_123} - - ADMIN_USER=${ADMIN_USER:-kyeongmi} - - ADMIN_PASS=${ADMIN_PASS:-kyeongmi} + - ACCESS_SECRET=${ACCESS_SECRET:?ACCESS_SECRET이 .env에 설정되어야 합니다} + - REFRESH_SECRET=${REFRESH_SECRET:?REFRESH_SECRET이 .env에 설정되어야 합니다} + - ADMIN_USER=${ADMIN_USER:?ADMIN_USER가 .env에 설정되어야 합니다} + - ADMIN_PASS=${ADMIN_PASS:?ADMIN_PASS가 .env에 설정되어야 합니다} - JEMINI_KEY=${JEMINI_KEY} depends_on: postgres: