diff --git a/src/api/routes/experiments.ts b/src/api/routes/experiments.ts
index 0cad7342..24fd3ef1 100644
--- a/src/api/routes/experiments.ts
+++ b/src/api/routes/experiments.ts
@@ -35,7 +35,7 @@ router.get("/", route({}), (req: Request, res: Response) => {
if (uniqueUsernames) {
// hash, revision, bucket, override, population, hash_result, as_mode
// bucket 4 is used by the official client, and enables live checking and suggestions, 3 is only live checking
- data.assignments.push([2476969328, 0, 3, -1, 0, 9267, 0, 0]);
+ data.assignments.push([2476969328, 0, 4, -1, 0, 9267, 0, 0]);
}
res.send(data);
});
diff --git a/src/api/routes/unique-username/username-attempt-unauthed.ts b/src/api/routes/unique-username/username-attempt-unauthed.ts
index a1f63a69..3af1fa88 100644
--- a/src/api/routes/unique-username/username-attempt-unauthed.ts
+++ b/src/api/routes/unique-username/username-attempt-unauthed.ts
@@ -25,7 +25,7 @@ router.post(
}
res.json({
- taken: !User.isUsernameAvailable(body.username),
+ taken: !(await User.isUsernameAvailable(body.username)),
});
},
);
diff --git a/src/api/routes/users/@me/index.ts b/src/api/routes/users/@me/index.ts
index 55d2ce12..5c3cfb29 100644
--- a/src/api/routes/users/@me/index.ts
+++ b/src/api/routes/users/@me/index.ts
@@ -172,7 +172,7 @@ router.patch(
}
// check if username is already taken (pomelo only)
- if (!User.isUsernameAvailable(body.username))
+ if (!(await User.isUsernameAvailable(body.username)))
throw FieldErrors({
username: {
code: "USERNAME_ALREADY_TAKEN",
diff --git a/src/util/entities/User.ts b/src/util/entities/User.ts
index 5ec9862e..07b68b6d 100644
--- a/src/util/entities/User.ts
+++ b/src/util/entities/User.ts
@@ -379,7 +379,7 @@ export class User extends BaseClass {
if (uniqueUsernames) {
// check if there is already an account with this username
- if (!User.isUsernameAvailable(username))
+ if (!(await User.isUsernameAvailable(username)))
throw FieldErrors({
username: {
code: "USERNAME_ALREADY_TAKEN",
@@ -463,11 +463,14 @@ export class User extends BaseClass {
}
static async isUsernameAvailable(username: string) {
- const user = await User.findOne({
- where: { username },
- select: ["id"],
+ // TODO: implement regex check?
+ const count = await User.count({
+ where: {
+ username: username.toLowerCase(),
+ },
});
- return !user;
+
+ return count === 0;
}
}
|