diff --git a/client/src/Pages/Incidents/Components/IncidentTable/index.jsx b/client/src/Pages/Incidents/Components/IncidentTable/index.jsx index bc4872735..cf6fbb49d 100644 --- a/client/src/Pages/Incidents/Components/IncidentTable/index.jsx +++ b/client/src/Pages/Incidents/Components/IncidentTable/index.jsx @@ -24,7 +24,6 @@ const IncidentTable = ({ }) => { //Redux state const uiTimezone = useSelector((state) => state.ui.timezone); - const { user } = useSelector((state) => state.auth); //Local state const [teamId, setTeamId] = useState(undefined); @@ -61,13 +60,13 @@ const IncidentTable = ({ useEffect(() => { if (selectedMonitor === "0") { - setTeamId(user.teamId); + setTeamId("placeholder"); // TODO this isn't needed any longer, fix hook setMonitorId(undefined); } else { setMonitorId(selectedMonitor); setTeamId(undefined); } - }, [selectedMonitor, user.teamId]); + }, [selectedMonitor]); const headers = [ { diff --git a/client/src/Pages/Incidents/index.jsx b/client/src/Pages/Incidents/index.jsx index d01543f8a..80a7db702 100644 --- a/client/src/Pages/Incidents/index.jsx +++ b/client/src/Pages/Incidents/index.jsx @@ -8,7 +8,6 @@ import OptionsHeader from "./Components/OptionsHeader"; //Utils import { useTheme } from "@emotion/react"; import { useFetchMonitorsByTeamId } from "../../Hooks/monitorHooks"; -import { useSelector } from "react-redux"; import { useState, useEffect } from "react"; import NetworkError from "../../Components/GenericFallback/NetworkError"; import { useTranslation } from "react-i18next"; @@ -16,7 +15,6 @@ import { useTranslation } from "react-i18next"; //Constants const Incidents = () => { // Redux state - const { user } = useSelector((state) => state.auth); const { t } = useTranslation(); const BREADCRUMBS = [ @@ -31,9 +29,7 @@ const Incidents = () => { //Utils const theme = useTheme(); - const [monitors, , isLoading, networkError] = useFetchMonitorsByTeamId({ - teamId: user.teamId, - }); + const [monitors, , isLoading, networkError] = useFetchMonitorsByTeamId(); useEffect(() => { const monitorLookup = monitors?.reduce((acc, monitor) => { diff --git a/client/src/Utils/NetworkService.js b/client/src/Utils/NetworkService.js index 1ab56d9ad..f7ebdc3f4 100644 --- a/client/src/Utils/NetworkService.js +++ b/client/src/Utils/NetworkService.js @@ -272,7 +272,7 @@ class NetworkService { * @returns {Promise} The response from the axios DELETE request. */ async deleteChecksByTeamId(config) { - return this.axiosInstance.delete(`/checks/team/${config.teamId}`, { + return this.axiosInstance.delete(`/checks/team`, { headers: { "Content-Type": "application/json", }, @@ -595,7 +595,7 @@ class NetworkService { if (config.page) params.append("page", config.page); if (config.rowsPerPage) params.append("rowsPerPage", config.rowsPerPage); if (config.status !== undefined) params.append("status", config.status); - return this.axiosInstance.get(`/checks/team/${config.teamId}?${params.toString()}`); + return this.axiosInstance.get(`/checks/team?${params.toString()}`); }; /** diff --git a/server/controllers/checkController.js b/server/controllers/checkController.js index 2addd7359..387839beb 100755 --- a/server/controllers/checkController.js +++ b/server/controllers/checkController.js @@ -54,7 +54,18 @@ class CheckController { } try { - const result = await this.db.getChecksByMonitor(req); + const { monitorId } = req.params; + let { type, sortOrder, dateRange, filter, page, rowsPerPage, status } = req.query; + const result = await this.db.getChecksByMonitor({ + monitorId, + type, + sortOrder, + dateRange, + filter, + page, + rowsPerPage, + status, + }); return res.success({ msg: this.stringService.checkGet, @@ -74,8 +85,17 @@ class CheckController { return; } try { - const checkData = await this.db.getChecksByTeam(req); + let { sortOrder, dateRange, filter, page, rowsPerPage } = req.query; + const { teamId } = req.user; + const checkData = await this.db.getChecksByTeam({ + sortOrder, + dateRange, + filter, + page, + rowsPerPage, + teamId, + }); return res.success({ msg: this.stringService.checkGet, data: checkData, @@ -114,7 +134,8 @@ class CheckController { } try { - const deletedCount = await this.db.deleteChecksByTeamId(req.params.teamId); + const { teamId } = req.user; + const deletedCount = await this.db.deleteChecksByTeamId(teamId); return res.success({ msg: this.stringService.checkDelete, @@ -137,9 +158,7 @@ class CheckController { try { // Get user's teamId - const token = getTokenFromHeaders(req.headers); - const { jwtSecret } = this.settingsService.getSettings(); - const { teamId } = jwt.verify(token, jwtSecret); + const { teamId } = req.user; const ttl = parseInt(req.body.ttl, 10) * SECONDS_PER_DAY; await this.db.updateChecksTTL(teamId, ttl); diff --git a/server/db/mongo/modules/checkModule.js b/server/db/mongo/modules/checkModule.js index 8e71dd6eb..f409fd3d2 100755 --- a/server/db/mongo/modules/checkModule.js +++ b/server/db/mongo/modules/checkModule.js @@ -57,10 +57,17 @@ const createChecks = async (checks) => { * @returns {Promise>} * @throws {Error} */ -const getChecksByMonitor = async (req) => { +const getChecksByMonitor = async ({ + monitorId, + type, + sortOrder, + dateRange, + filter, + page, + rowsPerPage, + status, +}) => { try { - const { monitorId } = req.params; - let { type, sortOrder, dateRange, filter, page, rowsPerPage, status } = req.query; status = typeof status !== "undefined" ? false : undefined; page = parseInt(page); rowsPerPage = parseInt(rowsPerPage); @@ -142,12 +149,17 @@ const getChecksByMonitor = async (req) => { } }; -const getChecksByTeam = async (req) => { +const getChecksByTeam = async ({ + sortOrder, + dateRange, + filter, + page, + rowsPerPage, + teamId, +}) => { try { - let { sortOrder, dateRange, filter, page, rowsPerPage } = req.query; page = parseInt(page); rowsPerPage = parseInt(rowsPerPage); - const { teamId } = req.params; const matchStage = { teamId: ObjectId.createFromHexString(teamId), status: false, diff --git a/server/routes/checkRoute.js b/server/routes/checkRoute.js index bab45e4d4..aedca991a 100755 --- a/server/routes/checkRoute.js +++ b/server/routes/checkRoute.js @@ -11,7 +11,15 @@ class CheckRoutes { } initRoutes() { + this.router.get("/team", this.checkController.getChecksByTeam); + this.router.delete( + "/team", + isAllowed(["admin", "superadmin"]), + this.checkController.deleteChecksByTeamId + ); + this.router.get("/:monitorId", this.checkController.getChecksByMonitor); + this.router.post( "/:monitorId", verifyOwnership(Monitor, "monitorId"), @@ -23,14 +31,6 @@ class CheckRoutes { this.checkController.deleteChecks ); - this.router.get("/team/:teamId", this.checkController.getChecksByTeam); - - this.router.delete( - "/team/:teamId", - isAllowed(["admin", "superadmin"]), - this.checkController.deleteChecksByTeamId - ); - this.router.put( "/team/ttl", isAllowed(["admin", "superadmin"]), diff --git a/server/validation/joi.js b/server/validation/joi.js index aba7118d1..2d1f10d29 100755 --- a/server/validation/joi.js +++ b/server/validation/joi.js @@ -301,9 +301,7 @@ const getChecksQueryValidation = joi.object({ status: joi.boolean(), }); -const getTeamChecksParamValidation = joi.object({ - teamId: joi.string().required(), -}); +const getTeamChecksParamValidation = joi.object({}); const getTeamChecksQueryValidation = joi.object({ sortOrder: joi.string().valid("asc", "desc"), @@ -319,9 +317,7 @@ const deleteChecksParamValidation = joi.object({ monitorId: joi.string().required(), }); -const deleteChecksByTeamIdParamValidation = joi.object({ - teamId: joi.string().required(), -}); +const deleteChecksByTeamIdParamValidation = joi.object({}); const updateChecksTTLBodyValidation = joi.object({ ttl: joi.number().required(),