mirror of
https://github.com/hyperdxio/hyperdx
synced 2026-04-21 13:37:15 +00:00
fix: Update Alerts when creating user is deleted (#1148)
This commit is contained in:
parent
deff04f67b
commit
d9b91124d0
3 changed files with 37 additions and 9 deletions
5
.changeset/sweet-boats-study.md
Normal file
5
.changeset/sweet-boats-study.md
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
"@hyperdx/api": patch
|
||||
---
|
||||
|
||||
fix: Update Alerts when creating user is deleted
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
import type { ObjectId } from '@/models';
|
||||
import User from '@/models/user';
|
||||
import mongoose from 'mongoose';
|
||||
|
||||
import type { ObjectId } from '@/models';
|
||||
import Alert from '@/models/alert';
|
||||
import User from '@/models/user';
|
||||
export function findUserByAccessKey(accessKey: string) {
|
||||
return User.findOne({ accessKey });
|
||||
}
|
||||
|
|
@ -24,9 +26,25 @@ export function findUsersByTeam(team: string | ObjectId) {
|
|||
return User.find({ team }).sort({ createdAt: 1 });
|
||||
}
|
||||
|
||||
export function deleteTeamMember(teamId: string | ObjectId, userId: string) {
|
||||
return User.findOneAndDelete({
|
||||
team: teamId,
|
||||
_id: userId,
|
||||
});
|
||||
export async function deleteTeamMember(
|
||||
teamId: string | ObjectId,
|
||||
userIdToDelete: string,
|
||||
userIdRequestingDelete: string | ObjectId,
|
||||
) {
|
||||
const [, deletedUser] = await Promise.all([
|
||||
Alert.updateMany(
|
||||
{ createdBy: new mongoose.Types.ObjectId(userIdToDelete), team: teamId },
|
||||
{
|
||||
$set: {
|
||||
createdBy: new mongoose.Types.ObjectId(userIdRequestingDelete),
|
||||
},
|
||||
},
|
||||
),
|
||||
User.findOneAndDelete({
|
||||
team: teamId,
|
||||
_id: userIdToDelete,
|
||||
}),
|
||||
]);
|
||||
|
||||
return deletedUser;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -283,13 +283,18 @@ router.delete(
|
|||
}),
|
||||
async (req, res, next) => {
|
||||
try {
|
||||
const id = req.params.id;
|
||||
const userIdToDelete = req.params.id;
|
||||
const teamId = req.user?.team;
|
||||
if (teamId == null) {
|
||||
throw new Error(`User ${req.user?._id} not associated with a team`);
|
||||
}
|
||||
|
||||
await deleteTeamMember(teamId, id);
|
||||
const userIdRequestingDelete = req.user?._id;
|
||||
if (!userIdRequestingDelete) {
|
||||
throw new Error(`Requesting user has no id`);
|
||||
}
|
||||
|
||||
await deleteTeamMember(teamId, userIdToDelete, userIdRequestingDelete);
|
||||
|
||||
res.json({ message: 'User deleted' });
|
||||
} catch (e) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue