summary refs log tree commit diff
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2023-02-02 22:24:56 +1100
committerGitHub <noreply@github.com>2023-02-02 22:24:56 +1100
commit69c55884e5cb3503d4319d2fa32eb0d7e593ee52 (patch)
tree0e9aa763b793d576bf8cffd9a1d114fc6d21e0b6
parentMerge pull request from GHSA-9q7f-pv47-cxp9 (diff)
downloadserver-69c55884e5cb3503d4319d2fa32eb0d7e593ee52.tar.xz
Merge pull request from GHSA-hqqp-gpqw-9w5c
-rw-r--r--assets/schemas.json9
-rw-r--r--src/api/routes/users/@me/settings.ts4
-rw-r--r--src/util/entities/User.ts23
-rw-r--r--src/util/schemas/UserModifySchema.ts4
-rw-r--r--src/util/schemas/UserSettingsSchema.ts2
5 files changed, 20 insertions, 22 deletions
diff --git a/assets/schemas.json b/assets/schemas.json
index f40bcd79..4a6825d1 100644
--- a/assets/schemas.json
+++ b/assets/schemas.json
@@ -8424,7 +8424,9 @@
             },
             "members": {
                 "type": "array",
-                "items": {}
+                "items": {
+                    "type": "string"
+                }
             },
             "thread_member_lists": {
                 "type": "array",
@@ -21846,6 +21848,8 @@
                 "type": "string"
             },
             "discriminator": {
+                "minLength": 4,
+                "maxLength": 4,
                 "type": "string"
             }
         },
@@ -23047,9 +23051,6 @@
     "UserSettingsSchema": {
         "type": "object",
         "properties": {
-            "index": {
-                "type": "string"
-            },
             "afk_timeout": {
                 "type": "integer"
             },
diff --git a/src/api/routes/users/@me/settings.ts b/src/api/routes/users/@me/settings.ts
index c883bb30..cfcedec1 100644
--- a/src/api/routes/users/@me/settings.ts
+++ b/src/api/routes/users/@me/settings.ts
@@ -44,9 +44,9 @@ router.patch(
 
 		user.settings.assign(body);
 
-		user.settings.save();
+		await user.settings.save();
 
-		res.json(user.settings);
+		res.json({ ...user.settings, index: undefined });
 	},
 );
 
diff --git a/src/util/entities/User.ts b/src/util/entities/User.ts
index fa8c7aa7..7b67c2ac 100644
--- a/src/util/entities/User.ts
+++ b/src/util/entities/User.ts
@@ -246,27 +246,20 @@ export class User extends BaseClass {
 
 		if (this.discriminator) {
 			const discrim = Number(this.discriminator);
-			if (this.discriminator.length > 4)
-				throw FieldErrors({
-					discriminator: {
-						message: "Discriminator cannot be more than 4 digits.",
-						code: "DISCRIMINATOR_INVALID",
-					},
-				});
-			if (isNaN(discrim))
-				throw FieldErrors({
-					discriminator: {
-						message: "Discriminator must be a number.",
-						code: "DISCRIMINATOR_INVALID",
-					},
-				});
-			if (discrim <= 0 || discrim >= 10000)
+			if (
+				isNaN(discrim) ||
+				!(typeof discrim == "number") ||
+				!Number.isInteger(discrim) ||
+				discrim <= 0 ||
+				discrim >= 10000
+			)
 				throw FieldErrors({
 					discriminator: {
 						message: "Discriminator must be a number.",
 						code: "DISCRIMINATOR_INVALID",
 					},
 				});
+
 			this.discriminator = discrim.toString().padStart(4, "0");
 		}
 	}
diff --git a/src/util/schemas/UserModifySchema.ts b/src/util/schemas/UserModifySchema.ts
index 2316477e..7851ec22 100644
--- a/src/util/schemas/UserModifySchema.ts
+++ b/src/util/schemas/UserModifySchema.ts
@@ -33,5 +33,9 @@ export interface UserModifySchema {
 	new_password?: string;
 	code?: string;
 	email?: string;
+	/**
+	 * @minLength 4
+	 * @maxLength 4
+	 */
 	discriminator?: string;
 }
diff --git a/src/util/schemas/UserSettingsSchema.ts b/src/util/schemas/UserSettingsSchema.ts
index 5a590b02..f315892e 100644
--- a/src/util/schemas/UserSettingsSchema.ts
+++ b/src/util/schemas/UserSettingsSchema.ts
@@ -18,4 +18,4 @@
 
 import { UserSettings } from "@fosscord/util";
 
-export type UserSettingsSchema = Partial<UserSettings>;
+export type UserSettingsSchema = Omit<Partial<UserSettings>, "index">;