From 304af514e28e4d6395a6fa6ac83ba2d49c54d5eb Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Tue, 22 Jul 2025 07:34:31 -0700 Subject: [PATCH] fix(webui): handle name already being taken (#2530) Closes #2528 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2530 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com> --- src/services/wsService.ts | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/services/wsService.ts b/src/services/wsService.ts index fb4bbee3..01ebe7aa 100644 --- a/src/services/wsService.ts +++ b/src/services/wsService.ts @@ -2,7 +2,13 @@ import http from "http"; import https from "https"; import ws from "ws"; import { Account } from "@/src/models/loginModel"; -import { createAccount, createNonce, getUsernameFromEmail, isCorrectPassword } from "@/src/services/loginService"; +import { + createAccount, + createNonce, + getUsernameFromEmail, + isCorrectPassword, + isNameTaken +} from "@/src/services/loginService"; import { IDatabaseAccountJson } from "@/src/types/loginTypes"; import { HydratedDocument } from "mongoose"; import { logError } from "@/src/utils/logger"; @@ -105,14 +111,16 @@ const wsOnConnect = (ws: ws, req: http.IncomingMessage): void => { } } else if (data.auth.isRegister) { const name = await getUsernameFromEmail(data.auth.email); - account = await createAccount({ - email: data.auth.email, - password: data.auth.password, - ClientType: "webui", - LastLogin: new Date(), - DisplayName: name, - Nonce: createNonce() - }); + if (!(await isNameTaken(name))) { + account = await createAccount({ + email: data.auth.email, + password: data.auth.password, + ClientType: "webui", + LastLogin: new Date(), + DisplayName: name, + Nonce: createNonce() + }); + } } if (account) { (ws as IWsCustomData).accountId = account.id;