Skip to content

Commit

Permalink
Merge pull request #384 from sparcs-kaist/#383-events-global-state-cr…
Browse files Browse the repository at this point in the history
…eate-check-period

#383 `/global-state/create` Endpoint에 이벤트 기간에만 접근 가능하도록 변경
  • Loading branch information
kmc7468 authored Sep 20, 2023
2 parents 3501f4a + 7d54a70 commit 72be970
Show file tree
Hide file tree
Showing 8 changed files with 29 additions and 23 deletions.
19 changes: 19 additions & 0 deletions src/lottery/middlewares/timestampValidator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const { eventConfig } = require("../../../loadenv");
const eventPeriod = eventConfig && {
startAt: new Date(eventConfig.startAt),
endAt: new Date(eventConfig.endAt),
};

const timestampValidator = (req, res, next) => {
if (
!eventPeriod ||
req.timestamp >= eventPeriod.endAt ||
req.timestamp < eventPeriod.startAt
) {
return res.status(400).json({ error: "out of date" });
} else {
next();
}
};

module.exports = timestampValidator;
4 changes: 2 additions & 2 deletions src/lottery/routes/docs/quests.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ eventsDocs[`${apiPrefix}/instagram/share-event`] = {
properties: {
result: {
type: "boolean",
description: "성공 여부. 항상 true입니다.",
description: "성공 여부",
example: true,
},
},
Expand All @@ -45,7 +45,7 @@ eventsDocs[`${apiPrefix}/instagram/share-purchase`] = {
required: ["result"],
properties: {
result: {
description: "성공 여부. 항상 true입니다.",
description: "성공 여부",
type: "boolean",
example: true,
},
Expand Down
3 changes: 2 additions & 1 deletion src/lottery/routes/globalState.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ const globalStateSchema = require("./docs/globalStateSchema");

router.get("/", globalStateHandlers.getUserGlobalStateHandler);

// 아래의 Endpoint 접근 시 로그인 필요
// 아래의 Endpoint 접근 시 로그인 및 시각 체크 필요
router.use(require("../../middlewares/auth"));
router.use(require("../middlewares/timestampValidator"));

router.post(
"/create",
Expand Down
3 changes: 2 additions & 1 deletion src/lottery/routes/items.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ const itemsSchema = require("./docs/itemsSchema");

router.get("/list", itemsHandlers.listHandler);

// 아래의 Endpoint 접근 시 로그인 필요
// 아래의 Endpoint 접근 시 로그인 및 시각 체크 필요
router.use(require("../../middlewares/auth"));
router.use(require("../middlewares/timestampValidator"));

router.post(
"/purchase/:itemId",
Expand Down
1 change: 1 addition & 0 deletions src/lottery/routes/quests.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ const router = express.Router();
const quests = require("../services/quests");

router.use(require("../../middlewares/auth"));
router.use(require("../middlewares/timestampValidator"));

router.post("/instagram/share-event", quests.instagramEventShareHandler);
router.post("/instagram/share-purchase", quests.instagramPurchaseShareHandler);
Expand Down
2 changes: 1 addition & 1 deletion src/lottery/services/globalState.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
const { eventStatusModel } = require("../modules/stores/mongo");
const { userModel } = require("../../modules/stores/mongo");
const logger = require("../../modules/logger");
const { isLogin, getLoginInfo } = require("../../modules/auths/login");

const { eventConfig } = require("../../../loadenv");
const { userModel } = require("../../modules/stores/mongo");
const contracts =
eventConfig && require(`../modules/contracts/${eventConfig.mode}`);
const quests = contracts ? Object.values(contracts.quests) : undefined;
Expand Down
12 changes: 0 additions & 12 deletions src/lottery/services/items.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,6 @@ const updateEventStatus = async (
}
);

const { eventConfig } = require("../../../loadenv");
const eventPeriod = eventConfig && {
startAt: new Date(eventConfig.startAt),
endAt: new Date(eventConfig.endAt),
};

const getRandomItem = async (req, depth) => {
if (depth >= 10) {
logger.error(`User ${req.userOid} failed to open random box`);
Expand Down Expand Up @@ -130,12 +124,6 @@ const purchaseHandler = async (req, res) => {
.status(400)
.json({ error: "Items/Purchase : nonexistent eventStatus" });

if (
req.timestamp >= eventPeriod.endAt ||
req.timestamp < eventPeriod.startAt
)
return res.status(400).json({ error: "Items/Purchase : out of date" });

const { itemId } = req.params;
const item = await itemModel.findOne({ _id: itemId }).lean();
if (!item)
Expand Down
8 changes: 2 additions & 6 deletions src/lottery/services/publicNotice.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,6 @@ const {
publicNoticePopulateOption,
} = require("../modules/populates/transactions");

const hideNickname = (nickname) => {
return `${nickname.toString().slice(0, 2)}${"*".repeat(nickname.length - 2)}`;
};

const getRecentPurchaceItemListHandler = async (req, res) => {
try {
const transactions = (
Expand All @@ -22,7 +18,7 @@ const getRecentPurchaceItemListHandler = async (req, res) => {
.lean()
).map(
({ userId, item, comment }) =>
`${hideNickname(userId.nickname)}님께서 ${item.name}을(를) ${
`${userId.nickname}님께서 ${item.name}을(를) ${
comment.startsWith("송편")
? "을(를) 구입하셨습니다."
: comment.startsWith("랜덤 박스")
Expand Down Expand Up @@ -73,7 +69,7 @@ const getTicketLeaderboardHandler = async (req, res) => {
return null;
}
return {
nickname: hideNickname(userInfo.nickname),
nickname: userInfo.nickname,
profileImageUrl: userInfo.profileImageUrl,
ticket1Amount: user.ticket1Amount,
ticket2Amount: user.ticket2Amount,
Expand Down

0 comments on commit 72be970

Please sign in to comment.