diff --git a/customize.dist/credential.js b/customize.dist/credential.js index d1d88bd97..cdbd835c5 100644 --- a/customize.dist/credential.js +++ b/customize.dist/credential.js @@ -8,6 +8,12 @@ define([ Cred.MINIMUM_PASSWORD_LENGTH = typeof(AppConfig.minimumPasswordLength) === 'number'? AppConfig.minimumPasswordLength: 8; + // https://stackoverflow.com/questions/46155/how-to-validate-an-email-address-in-javascript + Cred.isEmail = function (email) { + var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; + return re.test(String(email).toLowerCase()); + }; + Cred.isLongEnoughPassword = function (passwd) { return passwd.length >= Cred.MINIMUM_PASSWORD_LENGTH; }; diff --git a/www/common/translations/messages.json b/www/common/translations/messages.json index a021962f9..5ea3b8cd4 100644 --- a/www/common/translations/messages.json +++ b/www/common/translations/messages.json @@ -436,6 +436,10 @@ "register_cancel": "Go back", "register_warning": "Zero Knowledge means that we can't recover your data if you lose your password.", "register_alreadyRegistered": "This user already exists, do you want to log in?", + "register_emailWarning0": "It looks like you submitted your email as your username.", + "register_emailWarning1": "You can do that if you want, but it won't be sent to our server.", + "register_emailWarning2": "You won't be able to reset your password using your email as you can with many other services.", + "register_emailWarning3": "If you understand and would like to use your email for your username anyway, click OK.", "settings_cat_account": "Account", "settings_cat_drive": "CryptDrive", "settings_cat_cursor": "Cursor", diff --git a/www/register/main.js b/www/register/main.js index d93726f9d..4931efa3b 100644 --- a/www/register/main.js +++ b/www/register/main.js @@ -54,7 +54,9 @@ define([ var registering = false; var test; - $register.click(function () { + var I_REALLY_WANT_TO_USE_MY_EMAIL_FOR_MY_USERNAME = false; + + var registerClick = function () { var uname = $uname.val(); var passwd = $passwd.val(); var confirmPassword = $confirm.val(); @@ -62,6 +64,23 @@ define([ var shouldImport = $checkImport[0].checked; var doesAccept = $checkAcceptTerms[0].checked; + if (Cred.isEmail(uname) && !I_REALLY_WANT_TO_USE_MY_EMAIL_FOR_MY_USERNAME) { + var warning = [ + Messages.register_emailWarning0, + Messages.register_emailWarning1, + Messages.register_emailWarning2, + Messages.register_emailWarning3, + ].join('

'); + + Feedback.send("EMAIL_USERNAME_WARNING", true); + + return void UI.confirm(warning, function (yes) { + if (!yes) { return; } + I_REALLY_WANT_TO_USE_MY_EMAIL_FOR_MY_USERNAME = true; + registerClick(); + }, {}, true); + } + /* basic validation */ if (!Cred.isLongEnoughPassword(passwd)) { var warning = Messages._getKey('register_passwordTooShort', [ @@ -104,7 +123,9 @@ define([ }, }, true); }, 150); - }); + }; + + $register.click(registerClick); var clickRegister = Util.notAgainForAnother(function () { $register.click();