summary refs log tree commit diff
path: root/src/api/routes/users
diff options
context:
space:
mode:
authorChrisChrome <chris@chrischro.me>2026-02-16 14:34:33 -0700
committerChrisChrome <chris@chrischro.me>2026-02-16 14:34:43 -0700
commitc671db293899056b50a3d31c15a15b8f2ca12613 (patch)
tree6cdb84b4b7ec52df34fc3049225599988f523551 /src/api/routes/users
parentGateway: dont block on clearing voice states (diff)
downloadserver-ts-c671db293899056b50a3d31c15a15b8f2ca12613.tar.xz
Fix user self delete not removing settings protos
Diffstat (limited to 'src/api/routes/users')
-rw-r--r--src/api/routes/users/@me/delete.ts9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/api/routes/users/@me/delete.ts b/src/api/routes/users/@me/delete.ts

index 749baf70..9f4fbf92 100644 --- a/src/api/routes/users/@me/delete.ts +++ b/src/api/routes/users/@me/delete.ts
@@ -17,7 +17,7 @@ */ import { route } from "@spacebar/api"; -import { Member, User } from "@spacebar/util"; +import { DiscordApiErrors, Guild, Member, User, UserSettingsProtos } from "@spacebar/util"; import bcrypt from "bcrypt"; import { Request, Response, Router } from "express"; import { HTTPError } from "lambert-server"; @@ -55,7 +55,14 @@ router.post( // TODO: decrement guild member count if (correctpass) { + // Check if the user owns any guilds. + const ownedGuilds = await Guild.findOne({ where: { owner_id: req.user_id } }); + if (ownedGuilds) { + throw new HTTPError("User owns guilds and cannot be deleted", 403); + } + const members = await Member.find({ where: { id: req.user_id } }); + await UserSettingsProtos.delete({ user_id: req.user_id }); await Promise.all([User.delete({ id: req.user_id }), ...members.map((member) => Member.removeFromGuild(member.id, member.guild_id))]); res.sendStatus(204);