비밀값 하드코딩 기본값 제거
Deploy / deploy (push) Successful in 37s

- docker-compose: DB_PASSWORD, ACCESS_SECRET, REFRESH_SECRET, ADMIN_USER, ADMIN_PASS를 필수(:?)로 변경 - 누락 시 명확한 에러로 실패
- server.js: 시크릿/관리자 계정의 하드코딩 폴백 제거 (JWT 시크릿 누락 시 기동 중단, 관리자 계정 미설정 시 생성 건너뜀)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-19 16:02:42 +09:00
parent c8dbaf167f
commit 1d21d4b49b
2 changed files with 19 additions and 11 deletions
+13 -5
View File
@@ -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);