summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2015-04-05 14:35:09 +0300
committerLV-426 <lv-426@taproot.org.il>2015-04-05 14:57:26 +0300
commit08e6b31f308f1402ec18ba5506e3fa94660b5e8f (patch)
treefe023e40dda9342346413f0111f79b5d2853706a
parentd9bb3828cf355161f79dd2ceca9c6fc198d98e10 (diff)
user_signup: improve error handling, cleanup
-rw-r--r--res/templates/user_signup.html7
-rw-r--r--src/client/user_signup.js37
-rw-r--r--src/server/rz_user.py18
3 files changed, 33 insertions, 29 deletions
diff --git a/res/templates/user_signup.html b/res/templates/user_signup.html
index 3b0fc4ef..639d0be9 100644
--- a/res/templates/user_signup.html
+++ b/res/templates/user_signup.html
@@ -86,17 +86,12 @@ body {
class="login-input">
</div>
</div>
- <div
- class="signup_form__row"
- id="err_msg_row"
- class="alert alert-error">
- </div>
<div id="signup_form__submit_button_row">
<div
id="signup_form__submit_button" class="login-form_button signup-button"
onclick="signup_form__submit();">Sign Up</div>
</div>
- <div id="signup_form__ajax_response"></div>
+ <div id="signup_form__msg_row"></div>
{% endif %}
</div>
</div>
diff --git a/src/client/user_signup.js b/src/client/user_signup.js
index cb7e4b4f..84e2a2e1 100644
--- a/src/client/user_signup.js
+++ b/src/client/user_signup.js
@@ -3,14 +3,14 @@
function signup_form__submit() {
function validate_data(data) {
- var err_msg_row = $('#err_msg_row'); // reset
- err_msg_row.children().remove();
-
- // FIXME call util.validate...
+ if (data.password_first != data.password_second) { // FIXME call util.validate...
+ throw { message: 'Passwords do not match' };
+ }
+ if (undefined == data.password_first || data.password_first.length < 8) { // FIXME call util.validate...
+ throw { message: 'Password too short - must be at least 8 charachters long' };
+ }
// TODO validate email
-
- err_msg_row.css('display', 'none');
return true;
}
@@ -23,7 +23,14 @@ function signup_form__submit() {
password_second : $('#signup_form__password_second').val(),
};
- if (false == validate_data(form_data)) {
+ var msg_row = $('#signup_form__msg_row');
+ msg_row.children().remove(); // reset possible previous failures
+
+ try { // validate_data();
+ validate_data(form_data);
+ } catch (e) {
+ msg_row.append($('<p>' + e.message +'</p>'));
+ msg_row.show();
return;
}
@@ -31,8 +38,8 @@ function signup_form__submit() {
var post_data = $.extend({}, form_data, {
pw_plaintxt: form_data.password_first // rename field
});
- delete post_data.password_first
- delete post_data.password_second
+ delete post_data.password_first;
+ delete post_data.password_second;
$.ajax({
type : "POST",
@@ -43,14 +50,14 @@ function signup_form__submit() {
dataType : 'json',
contentType : "application/json; charset=utf-8",
success : function(data, status, xhr) {
- var signup_form__ajax_response = $('#signup_form__ajax_response'); // reset
- signup_form__ajax_response.children().remove();
- signup_form__ajax_response.append($(data.response__html));
+ var msg_row = $('#signup_form__msg_row'); // reset
+ msg_row.children().remove();
+ msg_row.append($(xhr.responseJSON.response__html));
},
error : function(xhr, status, err_thrown) {
- var signup_form__ajax_response = $('#signup_form__ajax_response'); // reset
- signup_form__ajax_response.children().remove();
- signup_form__ajax_response.append($(data.response__html));
+ var msg_row = $('#signup_form__msg_row'); // reset
+ msg_row.children().remove();
+ msg_row.append($(xhr.responseJSON.response__html));
}
});
}
diff --git a/src/server/rz_user.py b/src/server/rz_user.py
index 5dadd200..4eac4db3 100644
--- a/src/server/rz_user.py
+++ b/src/server/rz_user.py
@@ -315,19 +315,21 @@ def rest__user_signup():
'pw_plaintxt': r'[A-Za-z0-9]{%d,%d}' % (pw_min_len, 3 * pw_min_len), # avoid symbols
}
- for f_name, regex in field_to_regex_map.items():
- f_val = req_json.get(f_name)
- if None == f_val or 0 == len(f_val):
- e = API_Exception__bad_request('malformed signup request: missing field: %s' % (f_name))
- e.caller_err_msg = 'Missing value: %s' % (f_name.replace('_', ' '))
+ for f_key, regex in field_to_regex_map.items():
+ f_val = req_json.get(f_key)
+ f_name = f_key.replace('_', ' ')
+
+ if None == f_val or 0 == len(f_val): # missing or empty value
+ e = API_Exception__bad_request('malformed signup request: missing field: %s' % (f_key))
+ e.caller_err_msg = 'Missing value: %s' % (f_name)
raise e
- if None == re.match(regex, f_val):
+ if None == re.match(regex, f_val):
e = API_Exception__bad_request('malformed signup request: regex match failure: regex: %s, input: %s' % (regex, f_val))
- if f_name == 'pw_plaintxt': # provide more info on invalid pw case
+ if f_key == 'pw_plaintxt': # provide more info on invalid pw case
e.caller_err_msg = 'Illegal password: use a minimum of %d alphanumeric chars' % (pw_min_len)
else:
- e.caller_err_msg = 'Illegal value: %s' % (f_val)
+ e.caller_err_msg = 'Illegal \'%s\' value: %s' % (f_name, f_val)
raise e
first_name = req_json['first_name']