From 6b6670b15eaf53f524c1fa2db9eac3f1dec37c22 Mon Sep 17 00:00:00 2001 From: TaehyeonPark Date: Tue, 19 Nov 2024 23:41:07 +0900 Subject: [PATCH] Refactor: ts conversion --- src/middlewares/ban.js | 19 ------------------- src/middlewares/ban.ts | 30 ++++++++++++++++++++++++++++++ src/modules/{ban.js => ban.ts} | 21 +++++++++++---------- 3 files changed, 41 insertions(+), 29 deletions(-) delete mode 100644 src/middlewares/ban.js create mode 100644 src/middlewares/ban.ts rename src/modules/{ban.js => ban.ts} (72%) diff --git a/src/middlewares/ban.js b/src/middlewares/ban.js deleted file mode 100644 index f70b9550..00000000 --- a/src/middlewares/ban.js +++ /dev/null @@ -1,19 +0,0 @@ -const { validateServiceBanRecord } = require("../modules/ban"); - -const serviceMapper = new Map([ - ["/rooms/create", "service"], - ["/rooms/join", "service"], -]); - -const banMiddleware = async (req, res, next) => { - const banErrorMessage = await validateServiceBanRecord( - req, - serviceMapper.get(req.originalUrl) - ); - if (banErrorMessage !== undefined) { - return res.status(400).json({ error: banErrorMessage }); - } - next(); -}; - -module.exports = banMiddleware; diff --git a/src/middlewares/ban.ts b/src/middlewares/ban.ts new file mode 100644 index 00000000..f340a093 --- /dev/null +++ b/src/middlewares/ban.ts @@ -0,0 +1,30 @@ +import type { RequestHandler } from "express"; +import { validateServiceBanRecord } from "@/modules/ban"; +import logger from "@/modules/logger"; + +const serviceMapper: Map = new Map([ + ["/rooms/create", "service"], + ["/rooms/join", "service"], +]); + +const banMiddleware: RequestHandler = async (req, res, next) => { + if (req.originalUrl === undefined) { + logger.error( + "Error occured while validateServiceBanRecord: req.originalUrl is undefined" + ); + return res.status(500).json({ + error: + "Error occured while validateServiceBanRecord: req.originalUrl is undefined", + }); + } + const banErrorMessage = await validateServiceBanRecord( + req, + serviceMapper.get(req.originalUrl) || "" + ); + if (banErrorMessage !== undefined) { + return res.status(400).json({ error: banErrorMessage }); + } + next(); +}; + +module.exports = banMiddleware; diff --git a/src/modules/ban.js b/src/modules/ban.ts similarity index 72% rename from src/modules/ban.js rename to src/modules/ban.ts index 4068db78..8bb8b473 100644 --- a/src/modules/ban.js +++ b/src/modules/ban.ts @@ -1,3 +1,5 @@ +import type { Request } from "express"; + const logger = require("./logger"); const { banModel } = require("./stores/mongo"); @@ -5,14 +7,17 @@ const { banModel } = require("./stores/mongo"); * @param {*} req * @param {String} service */ -const validateServiceBanRecord = async (req, service) => { +export const validateServiceBanRecord = async ( + req: Request, + service: string +) => { let banRecord = undefined; try { // 현재 시각이 expireAt 보다 작고, 본인인 경우(ban의 userId가 userId랑 같은 경우) 중 serviceName이 "service"인 record를 모두 가져옴 const bans = await banModel .find({ - userSid: req.session.loginInfo.sid, + userSid: req.session.loginInfo!.sid, expireAt: { $gte: req.timestamp, }, @@ -24,9 +29,7 @@ const validateServiceBanRecord = async (req, service) => { banRecord = bans[0]; } } catch (err) { - logger.error( - "Error occured while validateServiceBanRecord: " + err.message - ); + logger.error(err); return; } if (banRecord !== undefined) { @@ -34,12 +37,10 @@ const validateServiceBanRecord = async (req, service) => { .toISOString() .replace("T", " ") .split(".")[0]; - const banErrorMessage = `${req.originalUrl} : user ${req.userId} (${req.session.loginInfo.sid}) is temporarily restricted from service until ${formattedExpireAt}.`; + const banErrorMessage = `${req.originalUrl} : user ${req.userId} (${ + req.session.loginInfo!.sid + }) is temporarily restricted from service until ${formattedExpireAt}.`; return banErrorMessage; } return; }; - -module.exports = { - validateServiceBanRecord, -};