summary refs log tree commit diff
path: root/src/util/Member.ts
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-02-22 22:15:12 +0100
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-02-22 22:15:12 +0100
commit01eb91a63e73b3a5501d1570d761502939728ef6 (patch)
tree28456b71d19d19faad393c05bec6757925ccb276 /src/util/Member.ts
parent:construction: [Member] list (diff)
downloadserver-01eb91a63e73b3a5501d1570d761502939728ef6.tar.xz
:bug: fix addMember to respect max guild size
Diffstat (limited to 'src/util/Member.ts')
-rw-r--r--src/util/Member.ts24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/util/Member.ts b/src/util/Member.ts

index 3ef2b903..f3097828 100644 --- a/src/util/Member.ts +++ b/src/util/Member.ts
@@ -9,11 +9,33 @@ import { UserModel, } from "fosscord-server-util"; import { HTTPError } from "lambert-server"; +import Config from "./Config"; import { emitEvent } from "./Event"; import { getPublicUser } from "./User"; +export const PublicMemberProjection = { + id: true, + guild_id: true, + nick: true, + roles: true, + joined_at: true, + pending: true, + deaf: true, + mute: true, + premium_since: true, +}; + export async function addMember(user_id: bigint, guild_id: bigint, cache?: { guild?: Guild }) { - const user = await getPublicUser(user_id); + const user = await getPublicUser(user_id, { guilds: true }); + + const guildSize = user.guilds.length; + // @ts-ignore + user.guilds = undefined; + + const { maxGuilds } = Config.get().limits.user; + if (guildSize >= maxGuilds) { + throw new HTTPError(` You are at the ${maxGuilds} server limit.`, 403); + } const guild = cache?.guild || (await GuildModel.findOne({ id: guild_id }).exec()); const member = {