diff --git a/server/controllers/authController.js b/server/controllers/authController.js index d517c50d9..1d8c2af0e 100755 --- a/server/controllers/authController.js +++ b/server/controllers/authController.js @@ -423,13 +423,6 @@ class AuthController { await this.jobQueue.deleteJob(monitor); }) )); - - // 3. Delete team - await this.db.deleteTeam(user.teamId); - // 4. Delete all other team members - await this.db.deleteAllOtherUsers(); - // 5. Delete each monitor - await this.db.deleteMonitorsByUserId(user._id); } // 6. Delete the user by id await this.db.deleteUser(user._id); diff --git a/server/db/models/User.js b/server/db/models/User.js index 74ee1166e..f180cfb86 100755 --- a/server/db/models/User.js +++ b/server/db/models/User.js @@ -1,6 +1,9 @@ import mongoose from "mongoose"; import bcrypt from "bcryptjs"; import logger from "../../utils/logger.js"; +import Monitor from "./Monitor.js"; +import Team from "./Team.js"; +import Notification from "./Notification.js"; const UserSchema = mongoose.Schema( { @@ -74,6 +77,25 @@ UserSchema.pre("findOneAndUpdate", function (next) { next(); }); +UserSchema.pre("findOneAndDelete", async function (next) { + try { + const userToDelete = await this.model.findOne(this.getFilter()); + if (!userToDelete) return next(); + if (userToDelete.role.includes("superadmin")) { + await Team.deleteOne({ _id: userToDelete.teamId }); + await Monitor.deleteMany({ userId: userToDelete._id }); + await this.model.deleteMany({ + teamId: userToDelete.teamId, + _id: { $ne: userToDelete._id }, + }); + await Notification.deleteMany({ teamId: userToDelete.teamId }); + } + next(); + } catch (error) { + next(error); + } +}); + UserSchema.methods.comparePassword = async function (submittedPassword) { const res = await bcrypt.compare(submittedPassword, this.password); return res; diff --git a/server/service/stringService.js b/server/service/stringService.js index 5ee17a5ef..6f9ad8cd8 100755 --- a/server/service/stringService.js +++ b/server/service/stringService.js @@ -444,6 +444,10 @@ class StringService { get verifyOwnerUnauthorized() { return this.translationService.getTranslation("verifyOwnerUnauthorized"); } + + get dbUserNotFound() { + return this.translationService.getTranslation("dbUserNotFound"); + } } export default StringService;