🐛 fix addMember to respect max guild size

This commit is contained in:
Flam3rboy 2021-02-22 22:15:12 +01:00
parent 5f142a7402
commit 01eb91a63e
4 changed files with 28 additions and 4 deletions

4
package-lock.json generated
View File

@ -1363,7 +1363,7 @@
},
"node_modules/fosscord-server-util": {
"version": "1.0.0",
"resolved": "git+ssh://git@github.com/fosscord/fosscord-server-util.git#c058020a7ca033077755594e0cb0a0658d10596f",
"resolved": "git+ssh://git@github.com/fosscord/fosscord-server-util.git#92a6c981ce12f4484509d0388cb1fba2a52b55c4",
"license": "ISC",
"dependencies": {
"jsonwebtoken": "^8.5.1",
@ -5077,7 +5077,7 @@
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
},
"fosscord-server-util": {
"version": "git+ssh://git@github.com/fosscord/fosscord-server-util.git#c058020a7ca033077755594e0cb0a0658d10596f",
"version": "git+ssh://git@github.com/fosscord/fosscord-server-util.git#92a6c981ce12f4484509d0388cb1fba2a52b55c4",
"from": "fosscord-server-util@github:fosscord/fosscord-server-util",
"requires": {
"jsonwebtoken": "^8.5.1",

View File

@ -80,3 +80,5 @@ router.delete("/:userid", async (req: Request, res: Response) => {
return res.status(204).send();
});
export default router;

View File

@ -6,7 +6,7 @@ export default {
init() {
return Config.init({ api: DefaultOptions });
},
get() {
get(): DefaultOptions {
return Config.getAll().api;
},
set(val: any) {

View File

@ -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 = {