Skip to content

Commit 9bdbbc4

Browse files
committed
Merge branch 'dev' of https://github.com/sparcs-kaist/taxi-back into #273-안-읽은-메세지-확인
2 parents 9fbd089 + cffb806 commit 9bdbbc4

32 files changed

+708
-200
lines changed

app.js

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// 모듈 require
22
const express = require("express");
33
const http = require("http");
4-
const { port: httpPort, eventMode } = require("./loadenv");
4+
const { port: httpPort, eventConfig } = require("./loadenv");
55
const logger = require("./src/modules/logger");
66
const { connectDatabase } = require("./src/modules/stores/mongo");
77
const { startSocketServer } = require("./src/modules/socket");
@@ -19,6 +19,9 @@ connectDatabase();
1919
app.use(express.urlencoded({ extended: false }));
2020
app.use(express.json());
2121

22+
// reverse proxy가 설정한 헤더를 신뢰합니다.
23+
app.set("trust proxy", true);
24+
2225
// [Middleware] CORS 설정
2326
app.use(require("./src/middlewares/cors"));
2427

@@ -43,8 +46,11 @@ app.use(require("./src/middlewares/limitRate"));
4346
app.use("/docs", require("./src/routes/docs"));
4447

4548
// 2023 추석 이벤트 전용 라우터입니다.
46-
eventMode &&
47-
app.use(`/events/${eventMode}`, require("./src/lottery").lotteryRouter);
49+
eventConfig &&
50+
app.use(
51+
`/events/${eventConfig.mode}`,
52+
require("./src/lottery").lotteryRouter
53+
);
4854

4955
// [Middleware] 모든 API 요청에 대하여 origin 검증
5056
app.use(require("./src/middlewares/originValidator"));

loadenv.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,10 @@ module.exports = {
3838
slackWebhookUrl: {
3939
report: process.env.SLACK_REPORT_WEBHOOK_URL || "", // optional
4040
},
41-
eventMode: undefined,
41+
eventConfig: (process.env.EVENT_CONFIG &&
42+
JSON.parse(process.env.EVENT_CONFIG)) || {
43+
mode: "2023fall",
44+
startAt: "2023-09-25T00:00:00+09:00",
45+
endAt: "2023-10-10T00:00:00+09:00",
46+
},
4247
};

src/lottery/index.js

+18-10
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,16 @@ const {
66
transactionModel,
77
} = require("./modules/stores/mongo");
88

9-
const { eventMode } = require("../../loadenv");
109
const { buildResource } = require("../modules/adminResource");
10+
const {
11+
addOneItemStockAction,
12+
addFiveItemStockAction,
13+
} = require("./modules/items");
14+
15+
const { eventConfig } = require("../../loadenv");
1116

1217
// [Routes] 기존 docs 라우터의 docs extend
13-
require("./routes/docs")();
18+
eventConfig && require("./routes/docs")();
1419

1520
const lotteryRouter = express.Router();
1621

@@ -22,18 +27,21 @@ lotteryRouter.use("/global-state", require("./routes/globalState"));
2227
lotteryRouter.use("/transactions", require("./routes/transactions"));
2328
lotteryRouter.use("/items", require("./routes/items"));
2429
lotteryRouter.use("/public-notice", require("./routes/publicNotice"));
30+
lotteryRouter.use("/quests", require("./routes/quests"));
2531

26-
const resources = [
27-
eventStatusModel,
28-
questModel,
29-
itemModel,
30-
transactionModel,
31-
].map(buildResource());
32+
const itemResource = buildResource([
33+
addOneItemStockAction,
34+
addFiveItemStockAction,
35+
])(itemModel);
36+
const otherResources = [eventStatusModel, questModel, transactionModel].map(
37+
buildResource()
38+
);
3239

33-
const contracts = eventMode && require(`./modules/contracts/${eventMode}`);
40+
const contracts =
41+
eventConfig && require(`./modules/contracts/${eventConfig.mode}`);
3442

3543
module.exports = {
3644
lotteryRouter,
37-
resources,
45+
resources: [itemResource, ...otherResources],
3846
contracts,
3947
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
const { eventConfig } = require("../../../loadenv");
2+
const eventPeriod = eventConfig && {
3+
startAt: new Date(eventConfig.startAt),
4+
endAt: new Date(eventConfig.endAt),
5+
};
6+
7+
const timestampValidator = (req, res, next) => {
8+
if (
9+
!eventPeriod ||
10+
req.timestamp >= eventPeriod.endAt ||
11+
req.timestamp < eventPeriod.startAt
12+
) {
13+
return res.status(400).json({ error: "out of date" });
14+
} else {
15+
next();
16+
}
17+
};
18+
19+
module.exports = timestampValidator;

0 commit comments

Comments
 (0)