From 78a2e5d106efb7c78b812acebe6dbd2a86afb942 Mon Sep 17 00:00:00 2001 From: Br0wnHammer Date: Wed, 25 Jun 2025 11:52:38 +0530 Subject: [PATCH] VerifyTemAccess Middleware --- server/controllers/checkController.js | 12 ++++++------ server/db/mongo/modules/checkModule.js | 4 ++-- server/routes/checkRoute.js | 4 +++- server/validation/joi.js | 12 ++++++------ 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/server/controllers/checkController.js b/server/controllers/checkController.js index 0c7b145e8..13fd25694 100755 --- a/server/controllers/checkController.js +++ b/server/controllers/checkController.js @@ -8,9 +8,9 @@ import { deleteChecksParamValidation, deleteChecksByTeamIdParamValidation, updateChecksTTLBodyValidation, - updateCheckStatusBodyValidation, - updateAllChecksStatusBodyValidation, - updateCheckStatusParamValidation, + ackCheckBodyValidation, + ackAllChecksParamValidation, + ackAllChecksBodyValidation, } from "../validation/joi.js"; import jwt from "jsonwebtoken"; import { getTokenFromHeaders } from "../utils/utils.js"; @@ -114,7 +114,7 @@ class CheckController { ackCheck = async (req, res, next) => { try { - await updateCheckStatusBodyValidation.validateAsync(req.body); + await ackCheckBodyValidation.validateAsync(req.body); } catch (error) { next(handleValidationError(error, SERVICE_NAME)); return; @@ -138,8 +138,8 @@ class CheckController { ackAllChecks = async (req, res, next) => { try { - await updateCheckStatusParamValidation.validateAsync(req.params); - await updateAllChecksStatusBodyValidation.validateAsync(req.body); + await ackAllChecksParamValidation.validateAsync(req.params); + await ackAllChecksBodyValidation.validateAsync(req.body); } catch (error) { next(handleValidationError(error, SERVICE_NAME)); return; diff --git a/server/db/mongo/modules/checkModule.js b/server/db/mongo/modules/checkModule.js index 96c07e52e..ca7d02b1c 100755 --- a/server/db/mongo/modules/checkModule.js +++ b/server/db/mongo/modules/checkModule.js @@ -76,7 +76,7 @@ const getChecksByMonitor = async ({ const matchStage = { monitorId: ObjectId.createFromHexString(monitorId), ...(typeof status !== "undefined" && { status }), - ...(typeof ack !== "undefined" && { ack: ack === "true" ? true : false }), + ...(typeof ack !== "undefined" && { ack: ack === "true" }), ...(dateRangeLookup[dateRange] && { createdAt: { $gte: dateRangeLookup[dateRange], @@ -168,7 +168,7 @@ const getChecksByTeam = async ({ const matchStage = { teamId: ObjectId.createFromHexString(teamId), status: status, - ...(typeof ack !== "undefined" && { ack: ack === "true" ? true : false }), + ...(typeof ack !== "undefined" && { ack: ack === "true" }), ...(dateRangeLookup[dateRange] && { createdAt: { $gte: dateRangeLookup[dateRange], diff --git a/server/routes/checkRoute.js b/server/routes/checkRoute.js index 19a03643c..c0be6f92e 100755 --- a/server/routes/checkRoute.js +++ b/server/routes/checkRoute.js @@ -1,7 +1,9 @@ import { Router } from "express"; import { verifyOwnership } from "../middleware/verifyOwnership.js"; +import { verifyTeamAccess } from "../middleware/verifyTeamAccess.js"; import { isAllowed } from "../middleware/isAllowed.js"; import Monitor from "../db/models/Monitor.js"; +import Check from "../db/models/Check.js"; class CheckRoutes { constructor(checkController) { @@ -20,7 +22,7 @@ class CheckRoutes { this.router.get("/:monitorId", this.checkController.getChecksByMonitor); - this.router.put("/:checkId", this.checkController.ackCheck); + this.router.put("/:checkId", verifyTeamAccess(Check, "checkId"), this.checkController.ackCheck); this.router.put("/:path/:monitorId?", this.checkController.ackAllChecks); diff --git a/server/validation/joi.js b/server/validation/joi.js index c3afa51f2..74307a124 100755 --- a/server/validation/joi.js +++ b/server/validation/joi.js @@ -289,16 +289,16 @@ const createCheckBodyValidation = joi.object({ message: joi.string().required(), }); -const updateCheckStatusBodyValidation = joi.object({ +const ackCheckBodyValidation = joi.object({ ack: joi.boolean(), }); -const updateCheckStatusParamValidation = joi.object({ +const ackAllChecksParamValidation = joi.object({ monitorId: joi.string().optional(), path: joi.string().valid("monitor", "team").required(), }); -const updateAllChecksStatusBodyValidation = joi.object({ +const ackAllChecksBodyValidation = joi.object({ ack: joi.boolean(), }); @@ -669,9 +669,9 @@ export { getChecksQueryValidation, getTeamChecksParamValidation, getTeamChecksQueryValidation, - updateCheckStatusBodyValidation, - updateAllChecksStatusBodyValidation, - updateCheckStatusParamValidation, + ackCheckBodyValidation, + ackAllChecksParamValidation, + ackAllChecksBodyValidation, deleteChecksParamValidation, deleteChecksByTeamIdParamValidation, updateChecksTTLBodyValidation,