diff --git a/package.json b/package.json index b77b4d9..953ad4c 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "@hcaptcha/types": "^1.0.3", "@popperjs/core": "^2.11.8", "bootstrap": "^5.3.2", + "dayjs": "^1.11.10", "nanoevents": "^7.0.1", "simple-keyboard": "^3.7.53" }, diff --git a/src/html/index.html b/src/html/index.html index 4317469..1398fd5 100644 --- a/src/html/index.html +++ b/src/html/index.html @@ -129,6 +129,8 @@


+
+
diff --git a/src/ts/AuthManager.ts b/src/ts/AuthManager.ts index 888da39..89c23fc 100644 --- a/src/ts/AuthManager.ts +++ b/src/ts/AuthManager.ts @@ -1,3 +1,5 @@ +import * as dayjs from 'dayjs'; + export default class AuthManager { apiEndpoint : string; info : AuthServerInformation | null; @@ -67,7 +69,7 @@ export default class AuthManager { }) } - register(username : string, password : string, email : string, captchaToken : string | undefined) : Promise { + register(username : string, password : string, email : string, dateOfBirth : dayjs.Dayjs, captchaToken : string | undefined) : Promise { return new Promise(async (res, rej) => { if (!this.info) throw new Error("Cannot login before fetching API information."); if (!captchaToken && this.info.hcaptcha.required) throw new Error("This API requires a valid hCaptcha token."); @@ -80,6 +82,7 @@ export default class AuthManager { username: username, password: password, email: email, + dateOfBirth: dateOfBirth.format("YYYY-MM-DD"), captchatoken: captchaToken }) }); diff --git a/src/ts/main.ts b/src/ts/main.ts index ebf1148..b972b6d 100644 --- a/src/ts/main.ts +++ b/src/ts/main.ts @@ -14,6 +14,7 @@ import { Unsubscribe } from 'nanoevents'; import { I18nStringKey, TheI18n } from './i18n.js'; import { Format } from './format.js'; import AuthManager from './AuthManager.js'; +import dayjs from 'dayjs'; // Elements const w = window as any; @@ -95,6 +96,7 @@ const elements = { accountRegisterUsername: document.getElementById("accountRegisterUsername") as HTMLInputElement, accountRegisterPassword: document.getElementById("accountRegisterPassword") as HTMLInputElement, accountRegisterConfirmPassword: document.getElementById("accountRegisterConfirmPassword") as HTMLInputElement, + accountRegisterDateOfBirth: document.getElementById("accountRegisterDateOfBirth") as HTMLInputElement, accountVerifyEmailCode: document.getElementById("accountVerifyEmailCode") as HTMLInputElement, accountVerifyEmailPassword: document.getElementById("accountVerifyEmailPassword") as HTMLInputElement, @@ -993,18 +995,20 @@ elements.accountRegisterForm.addEventListener('submit', async (e) => { var username = elements.accountRegisterUsername.value; var password = elements.accountRegisterPassword.value; var email = elements.accountRegisterEmail.value; + var dob = dayjs(elements.accountRegisterDateOfBirth.valueAsDate); if (password !== elements.accountRegisterConfirmPassword.value) { elements.accountModalErrorText.innerHTML = TheI18n.GetString(I18nStringKey.kPasswordsMustMatch); elements.accountModalError.style.display = "block"; return false; } - var result = await auth!.register(username, password, email, hcaptchaToken); + var result = await auth!.register(username, password, email, dob, hcaptchaToken); if (auth!.info!.hcaptcha.required) hcaptcha.reset(hcaptchaID); if (result.success) { elements.accountRegisterUsername.value = ""; elements.accountRegisterEmail.value = ""; elements.accountRegisterPassword.value = ""; elements.accountRegisterConfirmPassword.value = ""; + elements.accountRegisterDateOfBirth.value = ""; if (result.verificationRequired) { accountBeingVerified = result.username; elements.accountVerifyEmailText.innerText = TheI18n.GetString(I18nStringKey.kAccountModal_VerifyText, result.email!);