diff --git a/Server/controllers/monitorController.js b/Server/controllers/monitorController.js index fb1a0fc78..c883d32bb 100644 --- a/Server/controllers/monitorController.js +++ b/Server/controllers/monitorController.js @@ -161,6 +161,8 @@ const deleteMonitor = async (req, res, next) => { try { const monitor = await req.db.deleteMonitor(req, res, next); + // Delete associated checks and alerts + console.log(monitor); req.jobQueue.deleteJob(monitor); /** @@ -200,13 +202,11 @@ const editMonitor = async (req, res, next) => { try { const editedMonitor = await req.db.editMonitor(req, res); - return res - .status(200) - .json({ - success: true, - msg: successMessages.MONITOR_EDIT, - data: editedMonitor, - }); + return res.status(200).json({ + success: true, + msg: successMessages.MONITOR_EDIT, + data: editedMonitor, + }); } catch (error) { error.service = SERVICE_NAME; next(error); diff --git a/Server/db/MongoDB.js b/Server/db/MongoDB.js index 4f1d0c5a7..fb2d3e6d7 100644 --- a/Server/db/MongoDB.js +++ b/Server/db/MongoDB.js @@ -249,9 +249,12 @@ const deleteMonitor = async (req, res) => { const monitorId = req.params.monitorId; try { const monitor = await Monitor.findByIdAndDelete(monitorId); + deleteChecks(monitorId); + deleteAlertByMonitorId(monitorId); if (!monitor) { throw new Error(errorMessages.DB_FIND_MONTIOR_BY_ID(monitorId)); } + return monitor; } catch (error) { throw error; @@ -319,6 +322,7 @@ const createCheck = async (checkData) => { const getChecks = async (monitorId) => { try { const checks = await Check.find({ monitorId }); + console.log(checks); return checks; } catch (error) { throw error; @@ -467,6 +471,15 @@ const deleteAlert = async (alertId) => { } }; +const deleteAlertByMonitorId = async (monitorId) => { + try { + const result = await Alert.deleteMany({ monitorId }); + return result; + } catch (error) { + throw error; + } +}; + module.exports = { connect, insertUser, @@ -490,4 +503,5 @@ module.exports = { getAlertById, editAlert, deleteAlert, + deleteAlertByMonitorId, }; diff --git a/Server/middleware/verifyOwnership.js b/Server/middleware/verifyOwnership.js index cc7f544f7..950d0a6e4 100644 --- a/Server/middleware/verifyOwnership.js +++ b/Server/middleware/verifyOwnership.js @@ -20,7 +20,7 @@ const verifyOwnership = (Model, paramName) => { // If the userID does not match the document's userID, return a 403 error if (userId.toString() !== doc.userId.toString()) { - console.log("boom"); + console.log(userId.toString(), doc.userId.toString()); const error = new Error(errorMessages.VERIFY_OWNER_UNAUTHORIZED); error.status = 403; throw error; diff --git a/Server/routes/alertRoute.js b/Server/routes/alertRoute.js index be252e8c4..ba30fd117 100644 --- a/Server/routes/alertRoute.js +++ b/Server/routes/alertRoute.js @@ -2,25 +2,42 @@ const router = require("express").Router(); const alertController = require("../controllers/alertController"); const { verifyOwnership } = require("../middleware/verifyOwnership"); const Alert = require("../models/Alert"); +const Monitor = require("../models/Monitor"); // Create alert -router.post("/:monitorId", alertController.createAlert); +router.post( + "/:monitorId", + verifyOwnership(Monitor, "monitorId"), + alertController.createAlert +); // Get all alerts for a user -router.get("/user/:userId", alertController.getAlertsByUserId); +router.get( + "/user/:userId", + verifyOwnership(Monitor, "monitorId"), + alertController.getAlertsByUserId +); // Get all alerts for a monitor -router.get("/monitor/:monitorId", alertController.getAlertsByMonitorId); +router.get( + "/monitor/:monitorId", + verifyOwnership(Monitor, "monitorId"), + alertController.getAlertsByMonitorId +); // Get a single alert -router.get("/:alertId", alertController.getAlertById); +router.get( + "/:alertId", + verifyOwnership(Monitor, "monitorId"), + alertController.getAlertById +); // Edit router.post( "/edit/:alertId", - verifyOwnership(Alert, "alertId"), + verifyOwnership(Monitor, "monitorId"), alertController.editAlert ); //Delete router.post( "/delete/:alertId", - verifyOwnership(Alert, "alertId"), + verifyOwnership(Monitor, "monitorId"), alertController.deleteAlert );