Skip to content

Commit

Permalink
Refactor: ts conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
TaehyeonPark committed Nov 19, 2024
1 parent d90f28c commit 6b6670b
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 29 deletions.
19 changes: 0 additions & 19 deletions src/middlewares/ban.js

This file was deleted.

30 changes: 30 additions & 0 deletions src/middlewares/ban.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import type { RequestHandler } from "express";
import { validateServiceBanRecord } from "@/modules/ban";
import logger from "@/modules/logger";

const serviceMapper: Map<string, string> = 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;
21 changes: 11 additions & 10 deletions src/modules/ban.js → src/modules/ban.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
import type { Request } from "express";

const logger = require("./logger");
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,
},
Expand All @@ -24,22 +29,18 @@ 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) {
const formattedExpireAt = banRecord.expireAt
.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,
};

0 comments on commit 6b6670b

Please sign in to comment.