1 files changed, 12 insertions, 10 deletions
diff --git a/src/util/Channel.ts b/src/util/Channel.ts
index 8dfc03bc..4d322812 100644
--- a/src/util/Channel.ts
+++ b/src/util/Channel.ts
@@ -13,11 +13,21 @@ import { emitEvent } from "./Event";
// TODO: DM channel
export async function createChannel(channel: Partial<TextChannel | VoiceChannel>, user_id: string = "0") {
- if (!channel.permission_overwrites) channel.permission_overwrites = [];
+
+ // Always check if user has permission first
+ const permissions = await getPermission(user_id, channel.guild_id);
+ permissions.hasThrow("MANAGE_CHANNELS");
switch (channel.type) {
case ChannelType.GUILD_TEXT:
case ChannelType.GUILD_VOICE:
+ if (channel.parent_id) {
+ const exists = await ChannelModel.findOne({ id: channel.parent_id }, { guild_id: true }).exec();
+ if (!exists) throw new HTTPError("Parent id channel doesn't exist", 400);
+ if (exists.guild_id !== channel.guild_id) throw new HTTPError("The category channel needs to be in the guild");
+ }
+ break;
+ case ChannelType.GUILD_CATEGORY:
break;
case ChannelType.DM:
case ChannelType.GROUP_DM:
@@ -29,15 +39,7 @@ export async function createChannel(channel: Partial<TextChannel | VoiceChannel>
throw new HTTPError("Not yet supported");
}
- const permissions = await getPermission(user_id, channel.guild_id);
- permissions.hasThrow("MANAGE_CHANNELS");
-
- if (channel.parent_id) {
- const exists = await ChannelModel.findOne({ id: channel.parent_id }, { guild_id: true }).exec();
- if (!exists) throw new HTTPError("Parent id channel doesn't exist", 400);
- if (exists.guild_id !== channel.guild_id) throw new HTTPError("The category channel needs to be in the guild");
- }
-
+ if (!channel.permission_overwrites) channel.permission_overwrites = [];
// TODO: auto generate position
channel = await new ChannelModel({
|