From 5e23a2b79c73334ab6ab4dfbcde5e833d19de8c4 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 13 Jun 2025 12:16:52 +0800 Subject: [PATCH 1/5] Remove team and user id --- client/src/Hooks/monitorHooks.js | 4 ++-- client/src/Pages/Infrastructure/Create/index.jsx | 2 -- client/src/Pages/Notifications/create/index.jsx | 2 -- client/src/Pages/PageSpeed/Create/index.jsx | 2 -- client/src/Pages/Settings/index.jsx | 2 +- client/src/Pages/Uptime/Create/index.jsx | 2 -- server/controllers/monitorController.js | 7 ++++++- server/db/mongo/modules/monitorModule.js | 4 ++-- 8 files changed, 11 insertions(+), 14 deletions(-) diff --git a/client/src/Hooks/monitorHooks.js b/client/src/Hooks/monitorHooks.js index 5072b5594..8df0faa3b 100644 --- a/client/src/Hooks/monitorHooks.js +++ b/client/src/Hooks/monitorHooks.js @@ -414,10 +414,10 @@ const useDeleteAllMonitors = () => { const UseDeleteMonitorStats = () => { const { t } = useTranslation(); const [isLoading, setIsLoading] = useState(false); - const deleteMonitorStats = async ({ teamId }) => { + const deleteMonitorStats = async () => { setIsLoading(true); try { - const res = await networkService.deleteChecksByTeamId({ teamId }); + await networkService.deleteChecksByTeamId(); createToast({ body: t("settingsStatsCleared") }); } catch (error) { createToast({ body: t("settingsFailedToClearStats") }); diff --git a/client/src/Pages/Infrastructure/Create/index.jsx b/client/src/Pages/Infrastructure/Create/index.jsx index fa63dd4dc..bcdf09785 100644 --- a/client/src/Pages/Infrastructure/Create/index.jsx +++ b/client/src/Pages/Infrastructure/Create/index.jsx @@ -186,8 +186,6 @@ const CreateInfrastructureMonitor = () => { ...(isCreate ? {} : { _id: monitorId }), ...rest, description: form.name, - teamId: user.teamId, - userId: user._id, type: "hardware", notifications: infrastructureMonitor.notifications, thresholds, diff --git a/client/src/Pages/Notifications/create/index.jsx b/client/src/Pages/Notifications/create/index.jsx index 19335c790..3c17c113c 100644 --- a/client/src/Pages/Notifications/create/index.jsx +++ b/client/src/Pages/Notifications/create/index.jsx @@ -48,8 +48,6 @@ const CreateNotifications = () => { // local state const [notification, setNotification] = useState({ - userId: user._id, - teamId: user.teamId, notificationName: "", address: "", type: NOTIFICATION_TYPES[0]._id, diff --git a/client/src/Pages/PageSpeed/Create/index.jsx b/client/src/Pages/PageSpeed/Create/index.jsx index a138fe0a2..5cc4a1a54 100644 --- a/client/src/Pages/PageSpeed/Create/index.jsx +++ b/client/src/Pages/PageSpeed/Create/index.jsx @@ -86,8 +86,6 @@ const CreatePageSpeed = () => { form = { ...form, description: form.name, - teamId: user.teamId, - userId: user._id, notifications: monitor.notifications, }; diff --git a/client/src/Pages/Settings/index.jsx b/client/src/Pages/Settings/index.jsx index d8bd79551..11e432e17 100644 --- a/client/src/Pages/Settings/index.jsx +++ b/client/src/Pages/Settings/index.jsx @@ -96,7 +96,7 @@ const Settings = () => { } if (name === "deleteStats") { - await deleteMonitorStats({ teamId: user.teamId }); + await deleteMonitorStats(); return; } diff --git a/client/src/Pages/Uptime/Create/index.jsx b/client/src/Pages/Uptime/Create/index.jsx index 184beffe5..c800e295c 100644 --- a/client/src/Pages/Uptime/Create/index.jsx +++ b/client/src/Pages/Uptime/Create/index.jsx @@ -142,8 +142,6 @@ const CreateMonitor = () => { form = { ...form, description: monitor.name || monitor.url, - teamId: user.teamId, - userId: user._id, notifications: monitor.notifications, }; diff --git a/server/controllers/monitorController.js b/server/controllers/monitorController.js index 4262b9818..228eabbb0 100755 --- a/server/controllers/monitorController.js +++ b/server/controllers/monitorController.js @@ -238,7 +238,12 @@ class MonitorController { } try { - const monitor = await this.db.createMonitor(req.body); + const { _id, teamId } = req.user; + const monitor = await this.db.createMonitor({ + body: req.body, + teamId, + userId: _id, + }); // Add monitor to job queue this.jobQueue.addJob(monitor._id, monitor); diff --git a/server/db/mongo/modules/monitorModule.js b/server/db/mongo/modules/monitorModule.js index 700625b73..6c03dcd4c 100755 --- a/server/db/mongo/modules/monitorModule.js +++ b/server/db/mongo/modules/monitorModule.js @@ -665,9 +665,9 @@ const getMonitorsWithChecksByTeamId = async ({ * @returns {Promise} * @throws {Error} */ -const createMonitor = async (body) => { +const createMonitor = async ({ body, teamId, userId }) => { try { - const monitor = new Monitor({ ...body }); + const monitor = new Monitor({ ...body, teamId, userId }); const saved = await monitor.save(); return saved; } catch (error) { From 42372ab111e231edc2e4ff1da893e439e8bf1e7e Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 13 Jun 2025 13:10:56 +0800 Subject: [PATCH 2/5] remove userID and teamID from status page --- client/src/Utils/NetworkService.js | 4 +--- server/controllers/statusPageController.js | 8 +++++++- server/db/mongo/modules/statusPageModule.js | 9 ++++++--- server/validation/joi.js | 2 -- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/client/src/Utils/NetworkService.js b/client/src/Utils/NetworkService.js index f7ebdc3f4..03225c440 100644 --- a/client/src/Utils/NetworkService.js +++ b/client/src/Utils/NetworkService.js @@ -847,11 +847,9 @@ class NetworkService { } async createStatusPage(config) { - const { user, form, isCreate } = config; + const { form, isCreate } = config; const fd = new FormData(); - fd.append("teamId", user.teamId); - fd.append("userId", user._id); fd.append("type", form.type); form.isPublished !== undefined && fd.append("isPublished", form.isPublished); form.companyName && fd.append("companyName", form.companyName); diff --git a/server/controllers/statusPageController.js b/server/controllers/statusPageController.js index eb3e69484..842eb657a 100755 --- a/server/controllers/statusPageController.js +++ b/server/controllers/statusPageController.js @@ -24,7 +24,13 @@ class StatusPageController { } try { - const statusPage = await this.db.createStatusPage(req.body, req.file); + const { _id, teamId } = req.user; + const statusPage = await this.db.createStatusPage({ + statusPageData: req.body, + image: req.file, + userId: _id, + teamId, + }); return res.success({ msg: this.stringService.statusPageCreate, data: statusPage, diff --git a/server/db/mongo/modules/statusPageModule.js b/server/db/mongo/modules/statusPageModule.js index cd985588a..b2f7ef7d6 100755 --- a/server/db/mongo/modules/statusPageModule.js +++ b/server/db/mongo/modules/statusPageModule.js @@ -1,16 +1,19 @@ import StatusPage from "../../models/StatusPage.js"; -import Monitor from "../../models/Monitor.js"; import { NormalizeData } from "../../../utils/dataUtils.js"; import ServiceRegistry from "../../../service/serviceRegistry.js"; import StringService from "../../../service/stringService.js"; const SERVICE_NAME = "statusPageModule"; -const createStatusPage = async (statusPageData, image) => { +const createStatusPage = async ({ statusPageData, image, userId, teamId }) => { const stringService = ServiceRegistry.get(StringService.SERVICE_NAME); try { - const statusPage = new StatusPage({ ...statusPageData }); + const statusPage = new StatusPage({ + ...statusPageData, + userId, + teamId, + }); if (image) { statusPage.logo = { data: image.buffer, diff --git a/server/validation/joi.js b/server/validation/joi.js index 2d1f10d29..e43f6233f 100755 --- a/server/validation/joi.js +++ b/server/validation/joi.js @@ -424,8 +424,6 @@ const getStatusPageQueryValidation = joi.object({ }); const createStatusPageBodyValidation = joi.object({ - userId: joi.string().required(), - teamId: joi.string().required(), type: joi.string().valid("uptime").required(), companyName: joi.string().required(), url: joi From 18ea55111807c18656e9a3d3152e71f2b5765cc2 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 13 Jun 2025 13:11:58 +0800 Subject: [PATCH 3/5] remove user --- .../Pages/StatusPage/Create/Hooks/useCreateStatusPage.jsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/client/src/Pages/StatusPage/Create/Hooks/useCreateStatusPage.jsx b/client/src/Pages/StatusPage/Create/Hooks/useCreateStatusPage.jsx index 8407955a6..a2ac5f55d 100644 --- a/client/src/Pages/StatusPage/Create/Hooks/useCreateStatusPage.jsx +++ b/client/src/Pages/StatusPage/Create/Hooks/useCreateStatusPage.jsx @@ -1,17 +1,14 @@ import { useState } from "react"; import { networkService } from "../../../../main"; -import { useSelector } from "react-redux"; import { createToast } from "../../../../Utils/toastUtils"; const useCreateStatusPage = (isCreate, url) => { - const { user } = useSelector((state) => state.auth); - const [isLoading, setIsLoading] = useState(false); const [networkError, setNetworkError] = useState(false); const createStatusPage = async ({ form }) => { setIsLoading(true); try { - await networkService.createStatusPage({ user, form, isCreate, url }); + await networkService.createStatusPage({ form, isCreate, url }); return true; } catch (error) { setNetworkError(true); From b499b2879cbd4e024c3555eb4712b0a09f986942 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 13 Jun 2025 13:29:03 +0800 Subject: [PATCH 4/5] remove teamId from status pages --- client/src/Pages/Incidents/index.jsx | 2 +- .../StatusPage/StatusPages/Hooks/useStatusPagesFetch.jsx | 4 +--- client/src/Utils/NetworkService.js | 3 +-- server/controllers/statusPageController.js | 2 +- server/routes/statusPageRoute.js | 6 +----- server/validation/joi.js | 2 -- 6 files changed, 5 insertions(+), 14 deletions(-) diff --git a/client/src/Pages/Incidents/index.jsx b/client/src/Pages/Incidents/index.jsx index 80a7db702..011961503 100644 --- a/client/src/Pages/Incidents/index.jsx +++ b/client/src/Pages/Incidents/index.jsx @@ -29,7 +29,7 @@ const Incidents = () => { //Utils const theme = useTheme(); - const [monitors, , isLoading, networkError] = useFetchMonitorsByTeamId(); + const [monitors, , isLoading, networkError] = useFetchMonitorsByTeamId({}); useEffect(() => { const monitorLookup = monitors?.reduce((acc, monitor) => { diff --git a/client/src/Pages/StatusPage/StatusPages/Hooks/useStatusPagesFetch.jsx b/client/src/Pages/StatusPage/StatusPages/Hooks/useStatusPagesFetch.jsx index db7a33396..b236368c8 100644 --- a/client/src/Pages/StatusPage/StatusPages/Hooks/useStatusPagesFetch.jsx +++ b/client/src/Pages/StatusPage/StatusPages/Hooks/useStatusPagesFetch.jsx @@ -13,9 +13,7 @@ const useStatusPagesFetch = () => { useEffect(() => { const fetchStatusPages = async () => { try { - const res = await networkService.getStatusPagesByTeamId({ - teamId: user.teamId, - }); + const res = await networkService.getStatusPagesByTeamId(); setStatusPages(res?.data?.data); } catch (error) { setNetworkError(true); diff --git a/client/src/Utils/NetworkService.js b/client/src/Utils/NetworkService.js index 03225c440..ecde44a9e 100644 --- a/client/src/Utils/NetworkService.js +++ b/client/src/Utils/NetworkService.js @@ -838,8 +838,7 @@ class NetworkService { } async getStatusPagesByTeamId(config) { - const { teamId } = config; - return this.axiosInstance.get(`/status-page/team/${teamId}`, { + return this.axiosInstance.get(`/status-page/team`, { headers: { "Content-Type": "application/json", }, diff --git a/server/controllers/statusPageController.js b/server/controllers/statusPageController.js index 842eb657a..577cf4997 100755 --- a/server/controllers/statusPageController.js +++ b/server/controllers/statusPageController.js @@ -99,7 +99,7 @@ class StatusPageController { getStatusPagesByTeamId = async (req, res, next) => { try { - const teamId = req.params.teamId; + const teamId = req.user.teamId; const statusPages = await this.db.getStatusPagesByTeamId(teamId); return res.success({ diff --git a/server/routes/statusPageRoute.js b/server/routes/statusPageRoute.js index 4e6a4d248..98b3a3433 100755 --- a/server/routes/statusPageRoute.js +++ b/server/routes/statusPageRoute.js @@ -12,11 +12,7 @@ class StatusPageRoutes { initRoutes() { this.router.get("/", this.statusPageController.getStatusPage); - this.router.get( - "/team/:teamId", - verifyJWT, - this.statusPageController.getStatusPagesByTeamId - ); + this.router.get("/team", verifyJWT, this.statusPageController.getStatusPagesByTeamId); this.router.get("/:url", this.statusPageController.getStatusPageByUrl); this.router.post( diff --git a/server/validation/joi.js b/server/validation/joi.js index e43f6233f..60f462280 100755 --- a/server/validation/joi.js +++ b/server/validation/joi.js @@ -165,8 +165,6 @@ const getCertificateParamValidation = joi.object({ const createMonitorBodyValidation = joi.object({ _id: joi.string(), - userId: joi.string().required(), - teamId: joi.string().required(), name: joi.string().required(), description: joi.string().required(), type: joi.string().required(), From ab3f867b5bd7e06652b519031728997720502c3e Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 13 Jun 2025 13:32:55 +0800 Subject: [PATCH 5/5] remove unused redux state --- client/src/Hooks/useNotifications.js | 1 - client/src/Pages/Uptime/Create/index.jsx | 4 ---- 2 files changed, 5 deletions(-) diff --git a/client/src/Hooks/useNotifications.js b/client/src/Hooks/useNotifications.js index b269c5edc..f19b76dde 100644 --- a/client/src/Hooks/useNotifications.js +++ b/client/src/Hooks/useNotifications.js @@ -2,7 +2,6 @@ import { useState, useEffect, useCallback } from "react"; import { createToast } from "../Utils/toastUtils"; import { networkService } from "../main"; import { useNavigate } from "react-router-dom"; -import { useSelector } from "react-redux"; import { useTranslation } from "react-i18next"; import { NOTIFICATION_TYPES } from "../Pages/Notifications/utils"; diff --git a/client/src/Pages/Uptime/Create/index.jsx b/client/src/Pages/Uptime/Create/index.jsx index c800e295c..0dce03889 100644 --- a/client/src/Pages/Uptime/Create/index.jsx +++ b/client/src/Pages/Uptime/Create/index.jsx @@ -18,7 +18,6 @@ import FormControlLabel from "@mui/material/FormControlLabel"; import { useTheme } from "@emotion/react"; import { useNavigate } from "react-router-dom"; import { useState } from "react"; -import { useSelector } from "react-redux"; import { useTranslation } from "react-i18next"; import { monitorValidation } from "../../../Validation/validation"; import { createToast } from "../../../Utils/toastUtils"; @@ -26,9 +25,6 @@ import { useGetNotificationsByTeamId } from "../../../Hooks/useNotifications"; import { useCreateMonitor } from "../../../Hooks/monitorHooks"; const CreateMonitor = () => { - // Redux state - const { user } = useSelector((state) => state.auth); - // Local state const [errors, setErrors] = useState({}); const [https, setHttps] = useState(true);