summary refs log tree commit diff
path: root/src/routes/api/v8/guilds/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes/api/v8/guilds/index.ts')
-rw-r--r--src/routes/api/v8/guilds/index.ts40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/routes/api/v8/guilds/index.ts b/src/routes/api/v8/guilds/index.ts

index 39124f3c..85fc0bc9 100644 --- a/src/routes/api/v8/guilds/index.ts +++ b/src/routes/api/v8/guilds/index.ts
@@ -16,6 +16,7 @@ import { BanModel, Ban, GuildBanAddEvent, + GuildBanRemoveEvent, } from "fosscord-server-util"; import { HTTPError } from "lambert-server"; import { check } from "./../../../../util/instanceOf"; @@ -295,4 +296,43 @@ router.post("/:id/bans/:userid", check(BanCreateSchema), async (req: Request, re return res.json(ban).send(); }); +router.delete("/:id/bans/:userid", async (req: Request, res: Response) => { + try { + var guildID = BigInt(req.params.id); + var bannedUserID = BigInt(req.params.userid); + } catch (error) { + throw new HTTPError("Invalid id format", 400); + } + const user = await UserModel.findOne( + { id: bannedUserID }, + "guilds username discriminator id public_flags avatar" + ).exec(); + + if (!user) throw new HTTPError("User not found", 404); + + const guild = await GuildModel.findOne({ id: guildID }).exec(); + + if (!guild) throw new HTTPError("Guild not found", 404); + /*const perms = await getPermission(req.userid, guild.id); + if (!perms.has("BAN_MEMBERS")) { + throw new HTTPError("No permissions", 403); + }*/ + + await BanModel.deleteOne({ + user_id: BigInt(user.id), + guild_id: guild.id, + }).exec(); + + await emitEvent({ + event: "GUILD_BAN_REMOVE", + data: { + guild_id: guild.id, + user: user, + }, + guild_id: guild.id, + } as GuildBanRemoveEvent); + + return res.status(204).send(); +}); + export default router;