diff --git a/api/src/routes/guilds/#guild_id/vanity-url.ts b/api/src/routes/guilds/#guild_id/vanity-url.ts
index 58940b42..9c0989cc 100644
--- a/api/src/routes/guilds/#guild_id/vanity-url.ts
+++ b/api/src/routes/guilds/#guild_id/vanity-url.ts
@@ -1,35 +1,37 @@
import { Channel, ChannelType, getPermission, Guild, Invite, trimSpecial } from "@fosscord/util";
import { Router, Request, Response } from "express";
-import { HTTPError } from "lambert-server";
-import { check, Length } from "../../../util/instanceOf";
+import { check, Length, route } from "@fosscord/api";
const router = Router();
const InviteRegex = /\W/g;
-router.get("/", async (req: Request, res: Response) => {
+router.get("/", route({ permission: "MANAGE_GUILD" }), async (req: Request, res: Response) => {
const { guild_id } = req.params;
- const permission = await getPermission(req.user_id, guild_id);
- permission.hasThrow("MANAGE_GUILD");
-
const guild = await Guild.findOneOrFail({ where: { id: guild_id }, relations: ["vanity_url"] });
if (!guild.vanity_url) return res.json({ code: null });
return res.json({ code: guild.vanity_url_code, uses: guild.vanity_url.uses });
});
+export interface VanityUrlSchema {
+ /**
+ * @minLength 1
+ * @maxLength 20
+ */
+ code?: string;
+}
+
// TODO: check if guild is elgible for vanity url
-router.patch("/", check({ code: new Length(String, 0, 20) }), async (req: Request, res: Response) => {
+router.patch("/", route({ body: "VanityUrlSchema", permission: "MANAGE_GUILD" }), async (req: Request, res: Response) => {
const { guild_id } = req.params;
- const code = req.body.code.replace(InviteRegex);
+ const body = req.body as VanityUrlSchema;
+ const code = body.code?.replace(InviteRegex, "");
await Invite.findOneOrFail({ code });
const guild = await Guild.findOneOrFail({ id: guild_id });
- const permission = await getPermission(req.user_id, guild_id);
- permission.hasThrow("MANAGE_GUILD");
-
const { id } = await Channel.findOneOrFail({ guild_id, type: ChannelType.GUILD_TEXT });
guild.vanity_url_code = code;
|