summary refs log tree commit diff
diff options
context:
space:
mode:
authorIntevel ツ <59223342+Intevel@users.noreply.github.com>2021-05-08 13:34:36 +0200
committerIntevel ツ <59223342+Intevel@users.noreply.github.com>2021-05-08 13:34:36 +0200
commit614a0bf057a7c7f68029f815b5f474425cb4ab01 (patch)
treec034428d3cf309783e0ff94d6bfc8284ea19b845
parentUpdate members.ts (diff)
downloadserver-614a0bf057a7c7f68029f815b5f474425cb4ab01.tar.xz
Update members.ts
-rw-r--r--src/routes/guilds/#guild_id/members.ts87
1 files changed, 31 insertions, 56 deletions
diff --git a/src/routes/guilds/#guild_id/members.ts b/src/routes/guilds/#guild_id/members.ts

index 8e1ce3a3..5aaf3ec0 100644 --- a/src/routes/guilds/#guild_id/members.ts +++ b/src/routes/guilds/#guild_id/members.ts
@@ -1,5 +1,5 @@ import { Request, Response, Router } from "express"; -import { GuildModel, MemberModel, UserModel, toObject, GuildMemberAddEvent } from "@fosscord/server-util"; +import { GuildModel, MemberModel, UserModel, toObject, GuildMemberAddEvent, getPermission } from "@fosscord/server-util"; import { HTTPError } from "lambert-server"; import { instanceOf, Length } from "../../../util/instanceOf"; import { PublicMemberProjection, addMember, removeMember, addRole, removeRole } from "../../../util/Member"; @@ -37,83 +37,58 @@ router.get("/", async (req: Request, res: Response) => { return res.json(toObject(members)); }); -router.get("/:member", async (req: Request, res: Response) => { - const { guild_id } = req.params; - const user_id = req.params.member; +router.get("/:member_id", async (req: Request, res: Response) => { + const { guild_id, member_id } = req.params; - const member = await MemberModel.findOne({ id: user_id, guild_id }).exec(); + const member = await MemberModel.findOne({ id: member_id, guild_id }).exec(); if (!member) throw new HTTPError("Member not found", 404); - return res.json(member); + return res.json(toObject(member)); }); -router.put("/:member", async (req: Request, res: Response) => { - const { guild_id } = req.params; - const guild = await GuildModel.findOne({ id: guild_id }).exec(); - if (!guild) throw new HTTPError("Guild not found", 404); - - const user_id = req.params.member; - - const user = await UserModel.findOne({ id: user_id }).exec(); - if (!user) throw new HTTPError("User not found", 404); - - await addMember(user_id, guild_id); +router.put("/:member_id", async (req: Request, res: Response) => { + const { guild_id, member_id } = req.params; - // https://discord.com/developers/docs/resources/guild#add-guild-member + await addMember(member_id, guild_id); + res.sendStatus(204) }); -router.delete("/:member", async (req: Request, res: Response) => { - const { guild_id } = req.params; - const guild = await GuildModel.findOne({ id: guild_id }).exec(); - if (!guild) throw new HTTPError("Guild not found", 404); - - const user_id = req.params.member; - - const member = await MemberModel.findOne({ id: user_id, guild_id }).exec(); - if (!member) throw new HTTPError("Member not found", 404); - - await removeMember(user_id, guild_id); +router.delete("/:member_id", async (req: Request, res: Response) => { + const { guild_id, member_id } = req.params; - // https://discord.com/developers/docs/resources/guild#remove-guild-member + await removeMember(member_id, guild_id); + res.sendStatus(204) }); -router.delete("/:member/roles/:role_id", async (req: Request, res: Response) => { +router.delete("/:member_id/roles/:role_id", async (req: Request, res: Response) => { + const { guild_id, role_id, member_id } = req.params; - const { guild_id, role_id } = req.params; - if(!role_id) throw new HTTPError("role_id not defined", 404); + const perms = await getPermission(member_id, guild_id); + perms.hasThrow("MANAGE_ROLES"); - const guild = await GuildModel.findOne({ id: guild_id }).exec(); - if (!guild) throw new HTTPError("Guild not found", 404); - - const user_id = req.params.member; - - const member = await MemberModel.findOne({ id: user_id, guild_id }).exec(); - if (!member) throw new HTTPError("Member not found", 404); - - await removeRole(user_id, guild_id, role_id); - res.status(204); - - // https://discord.com/developers/docs/resources/guild#remove-guild-member-role + await removeRole(member_id, guild_id, role_id); + res.sendStatus(204); }); -router.put("/:member/roles/:role_id", async (req: Request, res: Response) => { +router.put("/:member_id/roles/:role_id", async (req: Request, res: Response) => { + const { guild_id, role_id, member_id } = req.params; - const { guild_id, role_id } = req.params; - if(!role_id) throw new HTTPError("role_id not defined", 404); + const perms = await getPermission(member_id, guild_id); + perms.hasThrow("MANAGE_ROLES"); - const guild = await GuildModel.findOne({ id: guild_id }).exec(); - if (!guild) throw new HTTPError("Guild not found", 404); + await addRole(member_id, guild_id, role_id); + res.sendStatus(204); +}); - const user_id = req.params.member; +router.patch("/:member_id/@me/nick", async (req: Request, res: Response) => { + const { guild_id, member_id } = req.params; - const member = await MemberModel.findOne({ id: user_id, guild_id }).exec(); - if (!member) throw new HTTPError("Member not found", 404); + const perms = await getPermission(member_id, guild_id); + perms.hasThrow("CHANGE_NICKNAME"); - await addRole(user_id, guild_id, role_id); + //await addRole(member_id, guild_id, role_id); res.status(204); - - // https://discord.com/developers/docs/resources/guild#remove-guild-member-role });