diff options
author | Struan Donald <struan@exo.org.uk> | 2014-10-03 15:07:08 +0100 |
---|---|---|
committer | Dave Arter <davea@mysociety.org> | 2015-08-28 14:27:15 +0100 |
commit | a69d425c0e5c004145ac1ab70e2f7f9fc329b54c (patch) | |
tree | 8eb7ff0ff7aaa0fce8bc7214ec6e15b694fddbdc /www/js/views/login.js | |
parent | 8fd15b58733c51d7f001f9eac66b7d03830ec0b4 (diff) |
update Android to Cordova 3.6
Required due to security issue
Remove Android directory as no longer required, move src -> www to match
standard layout, update .gitignore to avoid including the standard
platform files, update README based on Steve's zurich one
Diffstat (limited to 'www/js/views/login.js')
-rw-r--r-- | www/js/views/login.js | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/www/js/views/login.js b/www/js/views/login.js new file mode 100644 index 0000000..c0f16ba --- /dev/null +++ b/www/js/views/login.js @@ -0,0 +1,108 @@ +(function (FMS, Backbone, _, $) { + _.extend( FMS, { + LoginView: FMS.FMSView.extend({ + template: 'login', + id: 'login', + next: 'around', + prev: 'around', + + events: { + 'pagehide': 'destroy', + 'pagebeforeshow': 'beforeDisplay', + 'pageshow': 'afterDisplay', + 'vclick #login': 'onClickLogin', + 'submit #signinForm': 'onClickLogin', + 'vclick #logout': 'onClickLogout', + 'vclick .ui-btn-left': 'onClickButtonPrev', + 'vclick .ui-btn-right': 'onClickButtonNext' + }, + + onClickLogin: function(e) { + // prevent form submission from onscreen keyboard + e.preventDefault(); + $('#login').focus(); + if ( this.validate() ) { + var that = this; + $.ajax( { + url: CONFIG.FMS_URL + '/auth/ajax/sign_in', + type: 'POST', + data: { + email: $('#form_email').val(), + password_sign_in: $('#form_password').val(), + remember_me: 1 + }, + dataType: 'json', + timeout: 30000, + success: function( data, status ) { + if ( data.name ) { + that.model.set('password', $('#form_password').val()); + that.model.set('email', $('#form_email').val()); + that.model.set('name', data.name); + that.model.save(); + FMS.isLoggedIn = 1; + that.$('#password_row').hide(); + that.$('#success_row').show(); + } else { + that.validationError('signinForm', FMS.strings.login_details_error); + } + }, + error: function() { + that.validationError('signinForm', FMS.strings.login_error); + } + } ); + } + }, + + onClickLogout: function(e) { + e.preventDefault(); + var that = this; + $.ajax( { + url: CONFIG.FMS_URL + '/auth/ajax/sign_out', + type: 'GET', + dataType: 'json', + timeout: 30000, + success: function( data, status ) { + FMS.isLoggedIn = 0; + that.model.set('password', ''); + that.model.save(); + that.$('#form_email').val(''); + that.$('#form_password').val(''); + that.$('#success_row').hide(); + that.$('#signed_in_row').hide(); + that.$('#password_row').show(); + }, + error: function() { + that.validationError('err', FMS.strings.logout_error); + } + } ); + }, + + validate: function() { + this.clearValidationErrors(); + var isValid = 1; + + if ( !$('#form_password').val() ) { + isValid = 0; + this.validationError('form_password', FMS.validationStrings.password ); + } + + var email = $('#form_email').val(); + if ( !email ) { + isValid = 0; + this.validationError('form_email', FMS.validationStrings.email.required); + // regexp stolen from jquery validate module + } else if ( ! /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(email) ) { + isValid = 0; + this.validationError('form_email', FMS.validationStrings.email.email); + } + + if ( !isValid ) { + // this makes sure the onscreen keyboard is dismissed + $('#login').focus(); + } + + return isValid; + } + }) + }); +})(FMS, Backbone, _, $); |