Validate everything on form submit. Don't use pwd1 where we didn't define it & fix some error codes.

This commit is contained in:
David Baker 2016-01-15 16:17:27 +00:00
parent 02e41450b4
commit ecfdd3593c

View file

@ -65,20 +65,46 @@ module.exports = React.createClass({
onSubmit: function(ev) { onSubmit: function(ev) {
ev.preventDefault(); ev.preventDefault();
var promise = this.props.onRegisterClick({ // validate everything, in reverse order so
username: this.refs.username.value.trim(), // the error that ends up being displayed
password: pwd1, // is the one from the first invalid field.
email: this.refs.email.value.trim() // It's not super ideal that this just calls
}); // onError once for each invalid field.
this.validateField(FIELD_PASSWORD_CONFIRM);
this.validateField(FIELD_PASSWORD);
this.validateField(FIELD_USERNAME);
this.validateField(FIELD_EMAIL);
if (promise) { if (this.allFieldsValid()) {
ev.target.disabled = true; var promise = this.props.onRegisterClick({
promise.finally(function() { username: this.refs.username.value.trim(),
ev.target.disabled = false; password: this.refs.password.value.trim(),
email: this.refs.email.value.trim()
}); });
if (promise) {
ev.target.disabled = true;
promise.finally(function() {
ev.target.disabled = false;
});
}
} }
}, },
/**
* Returns true if all fields were valid last time
* they were validated.
*/
allFieldsValid: function() {
var keys = Object.keys(this.state.fieldValid);
for (var i = 0; i < keys.length; ++i) {
if (this.state.fieldValid[keys[i]] == false) {
return false;
}
}
return true;
},
validateField: function(field_id) { validateField: function(field_id) {
var pwd1 = this.refs.password.value.trim(); var pwd1 = this.refs.password.value.trim();
var pwd2 = this.refs.passwordConfirm.value.trim() var pwd2 = this.refs.passwordConfirm.value.trim()
@ -120,25 +146,18 @@ module.exports = React.createClass({
this.markFieldValid( this.markFieldValid(
field_id, field_id,
false, false,
"RegistrationForm.ERR_PASSWORD_MISSING"
);
}
break;
case FIELD_PASSWORD_CONFIRM:
if (pwd1 == '') {
this.markFieldValid(
field_id, false,
"RegistrationForm.ERR_PASSWORD_MISSING"
);
} else if (pwd1 != pwd2) {
this.markFieldValid(
field_id, false,
"RegistrationForm.ERR_PASSWORD_LENGTH" "RegistrationForm.ERR_PASSWORD_LENGTH"
); );
} else { } else {
this.markFieldValid(field_id, true); this.markFieldValid(field_id, true);
} }
break; break;
case FIELD_PASSWORD_CONFIRM:
this.markFieldValid(
field_id, pwd1 == pwd2,
"RegistrationForm.ERR_PASSWORD_MISMATCH"
);
break;
} }
}, },