summary refs log tree commit diff
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-08-01 22:56:16 +0200
committerGitHub <noreply@github.com>2021-08-01 22:56:16 +0200
commitefe6a2d88a92b4b2a9505991c692d15774a9492f (patch)
tree4f83ed61b241ebf4f9a356b2b3a60a364b18eb77
parentMerge pull request #180 from fosscord/l10n_master (diff)
parent[Channel] Implement type 4 channel and clean the code (diff)
downloadserver-efe6a2d88a92b4b2a9505991c692d15774a9492f.tar.xz
Merge pull request #181 from luth31/master
[Channel] Implement type 4 channel and clean the code
-rw-r--r--src/util/Channel.ts22
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({