🐛 fix addMember to respect max guild size
This commit is contained in:
parent
5f142a7402
commit
01eb91a63e
4
package-lock.json
generated
4
package-lock.json
generated
@ -1363,7 +1363,7 @@
|
|||||||
},
|
},
|
||||||
"node_modules/fosscord-server-util": {
|
"node_modules/fosscord-server-util": {
|
||||||
"version": "1.0.0",
|
"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",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"jsonwebtoken": "^8.5.1",
|
"jsonwebtoken": "^8.5.1",
|
||||||
@ -5077,7 +5077,7 @@
|
|||||||
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
|
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
|
||||||
},
|
},
|
||||||
"fosscord-server-util": {
|
"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",
|
"from": "fosscord-server-util@github:fosscord/fosscord-server-util",
|
||||||
"requires": {
|
"requires": {
|
||||||
"jsonwebtoken": "^8.5.1",
|
"jsonwebtoken": "^8.5.1",
|
||||||
|
@ -80,3 +80,5 @@ router.delete("/:userid", async (req: Request, res: Response) => {
|
|||||||
|
|
||||||
return res.status(204).send();
|
return res.status(204).send();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export default router;
|
||||||
|
@ -6,7 +6,7 @@ export default {
|
|||||||
init() {
|
init() {
|
||||||
return Config.init({ api: DefaultOptions });
|
return Config.init({ api: DefaultOptions });
|
||||||
},
|
},
|
||||||
get() {
|
get(): DefaultOptions {
|
||||||
return Config.getAll().api;
|
return Config.getAll().api;
|
||||||
},
|
},
|
||||||
set(val: any) {
|
set(val: any) {
|
||||||
|
@ -9,11 +9,33 @@ import {
|
|||||||
UserModel,
|
UserModel,
|
||||||
} from "fosscord-server-util";
|
} from "fosscord-server-util";
|
||||||
import { HTTPError } from "lambert-server";
|
import { HTTPError } from "lambert-server";
|
||||||
|
import Config from "./Config";
|
||||||
import { emitEvent } from "./Event";
|
import { emitEvent } from "./Event";
|
||||||
import { getPublicUser } from "./User";
|
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 }) {
|
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 guild = cache?.guild || (await GuildModel.findOne({ id: guild_id }).exec());
|
||||||
const member = {
|
const member = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user