fix(webui): handle name already being taken #2530

Merged
Sainan merged 2 commits from webui-taken-fix into main 2025-07-22 07:34:32 -07:00
Showing only changes of commit f11277bc4b - Show all commits

View File

@ -2,7 +2,7 @@ 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 +105,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;