Fix user self delete not removing settings protos
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);
|