diff --git a/api/src/routes/guilds/#guild_id/templates.ts b/api/src/routes/guilds/#guild_id/templates.ts
index a7613abf..5179e761 100644
--- a/api/src/routes/guilds/#guild_id/templates.ts
+++ b/api/src/routes/guilds/#guild_id/templates.ts
@@ -1,9 +1,8 @@
import { Request, Response, Router } from "express";
-import { Guild, getPermission, Template } from "@fosscord/util";
+import { Guild, Template } from "@fosscord/util";
import { HTTPError } from "lambert-server";
-import { TemplateCreateSchema, TemplateModifySchema } from "../../../schema/Template";
-import { check } from "../../../util/instanceOf";
-import { generateCode } from "../../../util/String";
+import { route } from "@fosscord/api";
+import { generateCode } from "@fosscord/api";
const router: Router = Router();
@@ -24,7 +23,17 @@ const TemplateGuildProjection: (keyof Guild)[] = [
"icon"
];
-router.get("/", async (req: Request, res: Response) => {
+export interface TemplateCreateSchema {
+ name: string;
+ description?: string;
+}
+
+export interface TemplateModifySchema {
+ name: string;
+ description?: string;
+}
+
+router.get("/", route({}), async (req: Request, res: Response) => {
const { guild_id } = req.params;
var templates = await Template.find({ source_guild_id: guild_id });
@@ -32,12 +41,9 @@ router.get("/", async (req: Request, res: Response) => {
return res.json(templates);
});
-router.post("/", check(TemplateCreateSchema), async (req: Request, res: Response) => {
+router.post("/", route({ body: "TemplateCreateSchema", permission: "MANAGE_GUILD" }), async (req: Request, res: Response) => {
const { guild_id } = req.params;
const guild = await Guild.findOneOrFail({ where: { id: guild_id }, select: TemplateGuildProjection });
- const perms = await getPermission(req.user_id, guild_id);
- perms.hasThrow("MANAGE_GUILD");
-
const exists = await Template.findOneOrFail({ id: guild_id }).catch((e) => {});
if (exists) throw new HTTPError("Template already exists", 400);
@@ -54,44 +60,31 @@ router.post("/", check(TemplateCreateSchema), async (req: Request, res: Response
res.json(template);
});
-router.delete("/:code", async (req: Request, res: Response) => {
- const guild_id = req.params.guild_id;
- const { code } = req.params;
-
- const perms = await getPermission(req.user_id, guild_id);
- perms.hasThrow("MANAGE_GUILD");
+router.delete("/:code", route({ permission: "MANAGE_GUILD" }), async (req: Request, res: Response) => {
+ const { code, guild_id } = req.params;
const template = await Template.delete({
- code
+ code,
+ source_guild_id: guild_id
});
res.json(template);
});
-router.put("/:code", async (req: Request, res: Response) => {
- // synchronizes the template
+router.put("/:code", route({ permission: "MANAGE_GUILD" }), async (req: Request, res: Response) => {
const { code, guild_id } = req.params;
-
const guild = await Guild.findOneOrFail({ where: { id: guild_id }, select: TemplateGuildProjection });
- const perms = await getPermission(req.user_id, guild_id);
- perms.hasThrow("MANAGE_GUILD");
-
const template = await new Template({ code, serialized_source_guild: guild }).save();
res.json(template);
});
-router.patch("/:code", check(TemplateModifySchema), async (req: Request, res: Response) => {
- // updates the template description
- const { guild_id } = req.params;
- const { code } = req.params;
+router.patch("/:code", route({ body: "TemplateModifySchema", permission: "MANAGE_GUILD" }), async (req: Request, res: Response) => {
+ const { code, guild_id } = req.params;
const { name, description } = req.body;
- const perms = await getPermission(req.user_id, guild_id);
- perms.hasThrow("MANAGE_GUILD");
-
- const template = await new Template({ code, name: name, description: description }).save();
+ const template = await new Template({ code, name: name, description: description, source_guild_id: guild_id }).save();
res.json(template);
});
|