diff --git a/package-lock.json b/package-lock.json
index e8d36370..22484238 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -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",
diff --git a/src/routes/api/v8/guilds/#id/bans.ts b/src/routes/api/v8/guilds/#id/bans.ts
index d9494b14..e18a1137 100644
--- a/src/routes/api/v8/guilds/#id/bans.ts
+++ b/src/routes/api/v8/guilds/#id/bans.ts
@@ -80,3 +80,5 @@ router.delete("/:userid", async (req: Request, res: Response) => {
return res.status(204).send();
});
+
+export default router;
diff --git a/src/util/Config.ts b/src/util/Config.ts
index 200ec1b2..cfdb0d1e 100644
--- a/src/util/Config.ts
+++ b/src/util/Config.ts
@@ -6,7 +6,7 @@ export default {
init() {
return Config.init({ api: DefaultOptions });
},
- get() {
+ get(): DefaultOptions {
return Config.getAll().api;
},
set(val: any) {
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 = {
|