diff options
| author | LV-426 <lv-426@taproot.org.il> | 2015-04-05 14:35:09 +0300 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2015-04-05 14:57:26 +0300 |
| commit | 08e6b31f308f1402ec18ba5506e3fa94660b5e8f (patch) | |
| tree | fe023e40dda9342346413f0111f79b5d2853706a /src | |
| parent | d9bb3828cf355161f79dd2ceca9c6fc198d98e10 (diff) | |
user_signup: improve error handling, cleanup
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/user_signup.js | 37 | ||||
| -rw-r--r-- | src/server/rz_user.py | 18 |
2 files changed, 32 insertions, 23 deletions
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'] |
