mirror of
https://github.com/codeninjasllc/discourse.git
synced 2025-02-17 12:11:16 -05:00
Improve js username validation so it's done only when necessary
This commit is contained in:
parent
f1d6702de6
commit
fce4c66d93
1 changed files with 24 additions and 13 deletions
|
@ -10,6 +10,7 @@ Discourse.CreateAccountView = Discourse.ModalBodyView.extend({
|
|||
templateName: 'modal/create_account',
|
||||
title: Em.String.i18n('create_account.title'),
|
||||
uniqueUsernameValidation: null,
|
||||
globalNicknameExists: false,
|
||||
complete: false,
|
||||
accountPasswordConfirm: 0,
|
||||
accountChallenge: 0,
|
||||
|
@ -85,21 +86,23 @@ Discourse.CreateAccountView = Discourse.ModalBodyView.extend({
|
|||
}).property('accountEmail'),
|
||||
|
||||
usernameMatch: (function() {
|
||||
if (this.get('emailValidation.failed')) {
|
||||
if (this.shouldCheckUsernameMatch()) {
|
||||
return this.set('uniqueUsernameValidation', Discourse.InputValidation.create({
|
||||
if (this.usernameNeedsToBeValidatedWithEmail()) {
|
||||
if (this.get('emailValidation.failed')) {
|
||||
if (this.shouldCheckUsernameMatch()) {
|
||||
return this.set('uniqueUsernameValidation', Discourse.InputValidation.create({
|
||||
failed: true,
|
||||
reason: Em.String.i18n('user.username.enter_email')
|
||||
}));
|
||||
} else {
|
||||
return this.set('uniqueUsernameValidation', Discourse.InputValidation.create({ failed: true }));
|
||||
}
|
||||
} else if (this.shouldCheckUsernameMatch()) {
|
||||
this.set('uniqueUsernameValidation', Discourse.InputValidation.create({
|
||||
failed: true,
|
||||
reason: Em.String.i18n('user.username.enter_email')
|
||||
reason: Em.String.i18n('user.username.checking')
|
||||
}));
|
||||
} else {
|
||||
return this.set('uniqueUsernameValidation', Discourse.InputValidation.create({ failed: true }));
|
||||
return this.checkUsernameAvailability();
|
||||
}
|
||||
} else if (this.shouldCheckUsernameMatch()) {
|
||||
this.set('uniqueUsernameValidation', Discourse.InputValidation.create({
|
||||
failed: true,
|
||||
reason: Em.String.i18n('user.username.checking')
|
||||
}));
|
||||
return this.checkUsernameAvailability();
|
||||
}
|
||||
}).observes('accountEmail'),
|
||||
|
||||
|
@ -145,8 +148,10 @@ Discourse.CreateAccountView = Discourse.ModalBodyView.extend({
|
|||
var _this = this;
|
||||
if (this.shouldCheckUsernameMatch()) {
|
||||
return Discourse.User.checkUsername(this.get('accountUsername'), this.get('accountEmail')).then(function(result) {
|
||||
_this.set('globalNicknameExists', false);
|
||||
if (result.available) {
|
||||
if (result.global_match) {
|
||||
_this.set('globalNicknameExists', true);
|
||||
return _this.set('uniqueUsernameValidation', Discourse.InputValidation.create({
|
||||
ok: true,
|
||||
reason: Em.String.i18n('user.username.global_match')
|
||||
|
@ -160,6 +165,7 @@ Discourse.CreateAccountView = Discourse.ModalBodyView.extend({
|
|||
} else {
|
||||
if (result.suggestion) {
|
||||
if (result.global_match !== void 0 && result.global_match === false) {
|
||||
_this.set('globalNicknameExists', true);
|
||||
return _this.set('uniqueUsernameValidation', Discourse.InputValidation.create({
|
||||
failed: true,
|
||||
reason: Em.String.i18n('user.username.global_mismatch', result)
|
||||
|
@ -176,9 +182,10 @@ Discourse.CreateAccountView = Discourse.ModalBodyView.extend({
|
|||
reason: result.errors.join(' ')
|
||||
}));
|
||||
} else {
|
||||
_this.set('globalNicknameExists', true);
|
||||
return _this.set('uniqueUsernameValidation', Discourse.InputValidation.create({
|
||||
failed: true,
|
||||
reason: Em.String.i18n('user.username.enter_email', result)
|
||||
reason: Em.String.i18n('user.username.enter_email')
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
@ -197,6 +204,10 @@ Discourse.CreateAccountView = Discourse.ModalBodyView.extend({
|
|||
return basicValidation;
|
||||
}).property('uniqueUsernameValidation', 'basicUsernameValidation'),
|
||||
|
||||
usernameNeedsToBeValidatedWithEmail: function() {
|
||||
return( this.get('globalNicknameExists') || false );
|
||||
},
|
||||
|
||||
// Validate the password
|
||||
passwordValidation: (function() {
|
||||
var password;
|
||||
|
|
Loading…
Reference in a new issue