diff options
| author | Fabien Meghazi <fme@openerp.com> | 2014-01-21 16:20:27 +0100 |
|---|---|---|
| committer | Fabien Meghazi <fme@openerp.com> | 2014-01-21 16:20:27 +0100 |
| commit | fff55213b59d4a3ea260b5975ab2b67506e9480b (patch) | |
| tree | 6103a6e4c2fe2a49c5fcbaf0198c89847fa1fcb9 /addons/auth_signup/static | |
| parent | 1e921cd03d7cdf695347a1d1c50d1100dc6c341f (diff) | |
[IMP] auth_signup converted to server side module
bzr revid: fme@openerp.com-20140121152027-7wch4r7dt2ew0did
Diffstat (limited to 'addons/auth_signup/static')
| -rw-r--r-- | addons/auth_signup/static/src/js/auth_signup.js | 189 | ||||
| -rw-r--r-- | addons/auth_signup/static/src/xml/auth_signup.xml | 39 |
2 files changed, 10 insertions, 218 deletions
diff --git a/addons/auth_signup/static/src/js/auth_signup.js b/addons/auth_signup/static/src/js/auth_signup.js index b5e6f91b139..a317440fd6b 100644 --- a/addons/auth_signup/static/src/js/auth_signup.js +++ b/addons/auth_signup/static/src/js/auth_signup.js @@ -1,188 +1,19 @@ openerp.auth_signup = function(instance) { - instance.auth_signup = instance.auth_signup || {}; - var _t = instance.web._t; - - return; - - instance.web.Login.include({ - start: function() { + openerp.web.LoginForm.include({ + start: function () { var self = this; - this.signup_enabled = false; - this.reset_password_enabled = false; - return this._super().always(function() { - - // Switches the login box to the select mode whith mode == [default|signup|reset] - self.on('change:login_mode', self, function() { - var mode = self.get('login_mode') || 'default'; - self.$('*[data-modes]').each(function() { - var modes = $(this).data('modes').split(/\s+/); - $(this).toggle(modes.indexOf(mode) > -1); - }); - self.$('a.oe_signup_signup:visible').toggle(self.signup_enabled); - self.$('a.oe_signup_reset_password:visible').toggle(self.reset_password_enabled); - }); - - // to switch between the signup and regular login form - self.$('a.oe_signup_signup').click(function(ev) { - self.set('login_mode', 'signup'); + this.$el.on('submit', function () { + var password = self.get_password_field('password'); + var confirm_password = self.get_password_field('confirm_password'); + if (password && confirm_password && (password.value != confirm_password.value)) { + alert("Passwords do not match; please retype them."); return false; - }); - self.$('a.oe_signup_back').click(function(ev) { - self.set('login_mode', 'default'); - delete self.params.token; - return false; - }); - - var dbname = self.selected_db; - - // if there is an error message in params, show it then forget it - if (self.params.error_message) { - self.show_error(self.params.error_message); - delete self.params.error_message; - } - - if (dbname && self.params.login) { - self.$("form input[name=login]").val(self.params.login); - } - - // bind reset password link - self.$('a.oe_signup_reset_password').click(self.do_reset_password); - - if (dbname) { - self.rpc("/auth_signup/get_config", {dbname: dbname}).then(function(result) { - self.signup_enabled = result.signup; - self.reset_password_enabled = result.reset_password; - if (!self.signup_enabled || self.$("form input[name=login]").val()){ - self.set('login_mode', self.params.type || 'default'); - } else { - self.set('login_mode', 'signup'); - } - - // in case of a signup, retrieve the user information from the token - if (self.params.token) { - self.rpc("/auth_signup/retrieve", {dbname: dbname, token: self.params.token}) - .then(self.on_token_loaded, self.on_token_failed); - } - - }); - } else { - // TODO: support multiple database mode - self.set('login_mode', self.params.type || 'default'); } }); }, - - on_token_loaded: function(result) { - // select the right the database - this.selected_db = result.db; - this.on_db_loaded([result.db]); - if (result.token) { - // switch to signup mode, set user name and login - this.set('login_mode', (this.params.type === 'reset' ? 'reset' : 'signup')); - this.$("form input[name=name]").val(result.name).attr("readonly", "readonly"); - if (result.login) { - this.$("form input[name=login]").val(result.login).attr("readonly", "readonly"); - } else { - this.$("form input[name=login]").val(result.email); - } - } else { - // remain in login mode, set login if present - delete this.params.token; - this.set('login_mode', 'default'); - this.$("form input[name=login]").val(result.login || ""); - } - }, - - on_token_failed: function(result, ev) { - if (ev) { - ev.preventDefault(); - } - this.show_error(_t("Invalid signup token")); - delete this.params.db; - delete this.params.token; - this.set('login_mode', 'default'); - }, - - get_params: function(){ - // signup user (or reset password) - var db = this.$("form [name=db]").val(); - var name = this.$("form input[name=name]").val(); - var login = this.$("form input[name=login]").val(); - var password = this.$("form input[name=password]").val(); - var confirm_password = this.$("form input[name=confirm_password]").val(); - if (!db) { - this.do_warn(_t("Login"), _t("No database selected !")); - return false; - } else if (!name) { - this.do_warn(_t("Login"), _t("Please enter a name.")); - return false; - } else if (!login) { - this.do_warn(_t("Login"), _t("Please enter a username.")); - return false; - } else if (!password || !confirm_password) { - this.do_warn(_t("Login"), _t("Please enter a password and confirm it.")); - return false; - } else if (password !== confirm_password) { - this.do_warn(_t("Login"), _t("Passwords do not match; please retype them.")); - return false; - } - var params = { - dbname : db, - token: this.params.token || "", - name: name, - login: login, - password: password, - }; - return params; - }, - - on_submit: function(ev) { - if (ev) { - ev.preventDefault(); - } - var login_mode = this.get('login_mode'); - if (login_mode === 'signup' || login_mode === 'reset') { - var params = this.get_params(); - if (_.isEmpty(params)){ - return false; - } - var self = this, - super_ = this._super; - this.rpc('/auth_signup/signup', params) - .done(function(result) { - if (result.error) { - self.show_error(result.error); - } else { - super_.apply(self, [ev]); - } - }); - } else { - // regular login - this._super(ev); - } - }, - - do_reset_password: function(ev) { - if (ev) { - ev.preventDefault(); - } - var self = this; - var db = this.$("form [name=db]").val(); - var login = this.$("form input[name=login]").val(); - if (!db) { - this.do_warn(_t("Login"), _t("No database selected !")); - return $.Deferred().reject(); - } else if (!login) { - this.do_warn(_t("Login"), _t("Please enter a username or email address.")); - return $.Deferred().reject(); - } - return self.rpc("/auth_signup/reset_password", { dbname: db, login: login }).done(function(result) { - self.show_error(_t("An email has been sent with credentials to reset your password")); - self.set('login_mode', 'default'); - }).fail(function(result, ev) { - ev.preventDefault(); - self.show_error(result.message); - }); + get_password_field: function (field) { + var selector = 'input[name="' + field + '"][type="password"]:visible'; + return this.$(selector)[0]; }, }); }; diff --git a/addons/auth_signup/static/src/xml/auth_signup.xml b/addons/auth_signup/static/src/xml/auth_signup.xml deleted file mode 100644 index 1c41dbed181..00000000000 --- a/addons/auth_signup/static/src/xml/auth_signup.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- vim:fdl=1: ---> -<templates id="template" xml:space="preserve"> - - <t t-extend="Login"> - <t t-jquery="form ul:first li:contains('Username')" t-operation="before"> - <li data-modes="signup reset">Name</li> - <li data-modes="signup reset"><input name="name" type="text"/></li> - </t> - <t t-jquery="form ul:first li:contains('Username')" t-operation="replace"> - <li data-modes="default">Username</li> - <li data-modes="signup reset">Username (Email)</li> - </t> - <t t-jquery="form ul:first li:has(input[name=login], input[name=password]), form ul:first li:contains('Password')"> - this.attr('data-modes', 'default signup reset'); - </t> - <t t-jquery="form ul:first li:has(input[name=password])" t-operation="after"> - <li data-modes="signup reset">Confirm Password</li> - <li data-modes="signup reset"><input name="confirm_password" type="password"/></li> - </t> - <t t-jquery="form ul:first li:has(button[name=submit])" t-operation="replace"> - <li> - <button name="submit"> - <span data-modes="default">Log in</span> - <span data-modes="signup">Sign Up</span> - <span data-modes="reset">Reset password</span> - </button> - <a class="oe_signup_signup" data-modes="default" href="#">Sign Up</a> - <a class="oe_signup_back" data-modes="signup reset" href="#">Back to Login</a> - <a class="oe_signup_reset_password" data-modes="default" href="#">Reset password</a> - </li> - </t> - <t t-jquery=".oe_login_manage_db"> - this.attr('data-modes', 'default'); - </t> - </t> - -</templates> |
