From 8e28f2539c493aab902a9eff190806caca5a9f34 Mon Sep 17 00:00:00 2001
From: TomatoCake <60300461+DEVTomatoCake@users.noreply.github.com>
Date: Sat, 17 Aug 2024 15:39:55 +0200
Subject: [PATCH 1/2] Consistent username length requirement
---
src/api/routes/auth/register.ts | 16 +++++++++++++---
src/util/schemas/RegisterSchema.ts | 7 +++----
src/util/schemas/UserModifySchema.ts | 3 +--
3 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/src/api/routes/auth/register.ts b/src/api/routes/auth/register.ts
index de1cbd3d..ea5de53b 100644
--- a/src/api/routes/auth/register.ts
+++ b/src/api/routes/auth/register.ts
@@ -1,17 +1,17 @@
/*
Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
Copyright (C) 2023 Spacebar and Spacebar Contributors
-
+
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
-
+
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
@@ -287,6 +287,16 @@ router.post(
});
}
+ const { maxUsername } = Config.get().limits.user;
+ if (body.username.length > maxUsername) {
+ throw FieldErrors({
+ username: {
+ code: "USERNAME_INVALID",
+ message: `Username must be less than ${maxUsername} in length`,
+ },
+ });
+ }
+
const user = await User.register({ ...body, req });
if (body.invite) {
diff --git a/src/util/schemas/RegisterSchema.ts b/src/util/schemas/RegisterSchema.ts
index 7b7de9c7..cfee0f02 100644
--- a/src/util/schemas/RegisterSchema.ts
+++ b/src/util/schemas/RegisterSchema.ts
@@ -1,17 +1,17 @@
/*
Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
Copyright (C) 2023 Spacebar and Spacebar Contributors
-
+
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
-
+
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
@@ -19,7 +19,6 @@
export interface RegisterSchema {
/**
* @minLength 2
- * @maxLength 32
*/
username: string;
/**
diff --git a/src/util/schemas/UserModifySchema.ts b/src/util/schemas/UserModifySchema.ts
index 4be6ad43..e4ed1071 100644
--- a/src/util/schemas/UserModifySchema.ts
+++ b/src/util/schemas/UserModifySchema.ts
@@ -18,8 +18,7 @@
export interface UserModifySchema {
/**
- * @minLength 1
- * @maxLength 100
+ * @minLength 2
*/
username?: string;
avatar?: string | null;
From 95bbccb6f723264e514618b18d1af9e3679e0e6d Mon Sep 17 00:00:00 2001
From: TomatoCake <60300461+DEVTomatoCake@users.noreply.github.com>
Date: Sat, 17 Aug 2024 18:24:38 +0200
Subject: [PATCH 2/2] Same error message if username too long
---
src/api/routes/auth/register.ts | 4 ++--
src/api/routes/users/@me/index.ts | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/api/routes/auth/register.ts b/src/api/routes/auth/register.ts
index ea5de53b..62152440 100644
--- a/src/api/routes/auth/register.ts
+++ b/src/api/routes/auth/register.ts
@@ -291,8 +291,8 @@ router.post(
if (body.username.length > maxUsername) {
throw FieldErrors({
username: {
- code: "USERNAME_INVALID",
- message: `Username must be less than ${maxUsername} in length`,
+ code: "BASE_TYPE_BAD_LENGTH",
+ message: `Must be between 2 and ${maxUsername} in length.`,
},
});
}
diff --git a/src/api/routes/users/@me/index.ts b/src/api/routes/users/@me/index.ts
index 5caf0d11..9cd8bfda 100644
--- a/src/api/routes/users/@me/index.ts
+++ b/src/api/routes/users/@me/index.ts
@@ -155,8 +155,8 @@ router.patch(
if (check_username.length > maxUsername) {
throw FieldErrors({
username: {
- code: "USERNAME_INVALID",
- message: `Username must be less than ${maxUsername} in length`,
+ code: "BASE_TYPE_BAD_LENGTH",
+ message: `Must be between 2 and ${maxUsername} in length.`,
},
});
}