From de7a8ce4c1af7271722dd29d029b611ae3be786c Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Sun, 12 Nov 2023 12:08:29 +0100 Subject: [PATCH] Created the PATCH /guild/:guildId route --- api/routes/guilds.ts | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/api/routes/guilds.ts b/api/routes/guilds.ts index 96c7f16..3f816ca 100644 --- a/api/routes/guilds.ts +++ b/api/routes/guilds.ts @@ -1,7 +1,10 @@ import Router, {Response} from 'express'; import {AuthenticatedRequest, hasRank} from "../middlewares/authenticate"; import {Rank} from "../../models/User"; -import {getGuilds} from "../../controller/discord"; +import {canEditGuild, getGuilds} from "../../controller/discord"; +import {validateSchema} from "../../util/validate"; +import {getGuildById} from "../../controller/guild"; +import {patchGuild} from "../validations/guildValidation"; const app = Router(); @@ -16,4 +19,25 @@ app.get("/", hasRank(Rank.USER), async (req: AuthenticatedRequest, res: Response }); }); +app.patch("/:guildId", hasRank(Rank.USER), async (req: AuthenticatedRequest, res: Response) => { + const validationError = validateSchema(patchGuild, req.body); + if (validationError) return res.status(400).json({message: validationError}); + + if (!await canEditGuild(req.user.refreshDate!, req.user.refreshToken, req.user.accessToken, req.params.guildId.toString())) { + res.status(403).json({message: "You are not allowed to edit this guild"}); + return; + } + + const guild = await getGuildById(parseInt(req.params.guildId)); + + if (!guild) { + res.status(404).json({message: "The provided guild is not registered"}) + return; + } + + await guild.update(req.body); + + res.json({message: "The guild has been updated successfully"}); +}); + module.exports = app; \ No newline at end of file