diff --git a/src/MHServerEmu.WebFrontend/Data/Web/Dashboard/script.js b/src/MHServerEmu.WebFrontend/Data/Web/Dashboard/script.js index 8ae15e4e..f6f4ce55 100644 --- a/src/MHServerEmu.WebFrontend/Data/Web/Dashboard/script.js +++ b/src/MHServerEmu.WebFrontend/Data/Web/Dashboard/script.js @@ -371,11 +371,18 @@ const createAccountTab = { if (this.pendingAccountData != null) return; + email.setCustomValidity(""); confirmPassword.setCustomValidity(""); if (email.reportValidity() == false || playerName.reportValidity() == false || password.reportValidity() == false) return; + if (this.validateEmail(email.value) == false) { + email.setCustomValidity("Invalid email."); + email.reportValidity(); + return; + } + if (password.value != confirmPassword.value) { confirmPassword.setCustomValidity("Your passwords do not match."); confirmPassword.reportValidity(); @@ -400,6 +407,22 @@ const createAccountTab = { this.pendingAccountData = null; }, + validateEmail(email) { + const atIndex = email.indexOf('@'); + if (atIndex == -1) + return false; + + const dotIndex = email.lastIndexOf('.'); + if (dotIndex < atIndex) + return false; + + const topDomainLength = email.length - (dotIndex + 1); + if (topDomainLength < 2) + return false; + + return true; + }, + getAccountOperationResultString(resultCode) { const email = this.pendingAccountData.Email; const playerName = this.pendingAccountData.PlayerName;