Victor Tabuenca (OpenERP) has proposed merging lp:~openerp-dev/openobject-addons/trunk-improve_signup-vta into lp:openobject-addons.
Requested reviews: OpenERP Core Team (openerp) For more details, see: https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-improve_signup-vta/+merge/139684 Make difference between signup and reset_password links. If there is only one oauth provider jump directly to it. Small improvements: - disallow anonymous "autologin" when token present in query params - effectively send reset password mail (pass True to force_send parameter) -- https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-improve_signup-vta/+merge/139684 Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-addons/trunk-improve_signup-vta.
=== modified file 'auth_oauth/static/src/js/auth_oauth.js' --- auth_oauth/static/src/js/auth_oauth.js 2012-11-28 10:53:42 +0000 +++ auth_oauth/static/src/js/auth_oauth.js 2012-12-18 15:35:25 +0000 @@ -28,9 +28,14 @@ }, on_oauth_loaded: function(result) { this.oauth_providers = result; - this.$('.oe_oauth_provider_login_button').remove(); - var buttons = QWeb.render("auth_oauth.Login.button",{"widget":this}); - this.$(".oe_login_pane form ul").after(buttons); + var params = $.deparam($.param.querystring()); + if (this.oauth_providers.length === 1 && params.type === 'signup') { + this.do_oauth_sign_in(this.oauth_providers[0]); + } else { + this.$('.oe_oauth_provider_login_button').remove(); + var buttons = QWeb.render("auth_oauth.Login.button",{"widget":this}); + this.$(".oe_login_pane form ul").after(buttons); + } }, on_oauth_sign_in: function(ev) { ev.preventDefault(); === modified file 'auth_signup/res_users.py' --- auth_signup/res_users.py 2012-12-14 10:43:29 +0000 +++ auth_signup/res_users.py 2012-12-18 15:35:25 +0000 @@ -64,7 +64,7 @@ # the parameters to encode for the query and fragment part of url query = {'db': cr.dbname} - fragment = {'action': action} + fragment = {'action': action, 'type': partner.signup_type} if partner.signup_token: fragment['token'] = partner.signup_token @@ -91,6 +91,7 @@ _columns = { 'signup_token': fields.char('Signup Token'), + 'signup_type': fields.char('Signup Token Type'), 'signup_expiration': fields.datetime('Signup Expiration'), 'signup_valid': fields.function(_get_signup_valid, type='boolean', string='Signup Token is Valid'), 'signup_url': fields.function(_get_signup_url, type='char', string='Signup URL'), @@ -99,7 +100,7 @@ def action_signup_prepare(self, cr, uid, ids, context=None): return self.signup_prepare(cr, uid, ids, context=context) - def signup_prepare(self, cr, uid, ids, expiration=False, context=None): + def signup_prepare(self, cr, uid, ids, signup_type="signup", expiration=False, context=None): """ generate a new token for the partners with the given validity, if necessary :param expiration: the expiration datetime of the token (string, optional) """ @@ -108,7 +109,7 @@ token = random_token() while self._signup_retrieve_partner(cr, uid, token, context=context): token = random_token() - partner.write({'signup_token': token, 'signup_expiration': expiration}) + partner.write({'signup_token': token, 'signup_type': signup_type, 'signup_expiration': expiration}) return True def _signup_retrieve_partner(self, cr, uid, token, @@ -182,7 +183,7 @@ partner = res_partner._signup_retrieve_partner( cr, uid, token, check_validity=True, raise_exception=True, context=None) # invalidate signup token - partner.write({'signup_token': False, 'signup_expiration': False}) + partner.write({'signup_token': False, 'signup_type': False, 'signup_expiration': False}) partner_user = partner.user_ids and partner.user_ids[0] or False if partner_user: @@ -240,7 +241,7 @@ # prepare reset password signup res_partner = self.pool.get('res.partner') partner_ids = [user.partner_id.id for user in self.browse(cr, uid, ids, context)] - res_partner.signup_prepare(cr, uid, partner_ids, expiration=now(days=+1), context=context) + res_partner.signup_prepare(cr, uid, partner_ids, signup_type="reset", expiration=now(days=+1), context=context) # send email to users with their signup url template = self.pool.get('ir.model.data').get_object(cr, uid, 'auth_signup', 'reset_password_email') @@ -248,7 +249,7 @@ for user in self.browse(cr, uid, ids, context): if not user.email: raise osv.except_osv(_("Cannot send email: user has no email address."), user.name) - self.pool.get('email.template').send_mail(cr, uid, template.id, user.id, context=context) + self.pool.get('email.template').send_mail(cr, uid, template.id, user.id, True, context=context) return True === modified file 'auth_signup/static/src/js/auth_signup.js' --- auth_signup/static/src/js/auth_signup.js 2012-12-04 14:28:31 +0000 +++ auth_signup/static/src/js/auth_signup.js 2012-12-18 15:35:25 +0000 @@ -43,6 +43,9 @@ .fail(self.on_token_failed) }); } + if (self.params.db && self.params.login) { + this.$("form input[name=login]").val(self.params.login); + } // bind reset password link this.$('a.oe_signup_reset_password').click(this.do_reset_password); @@ -130,7 +133,7 @@ login: login, password: password, }; - + var self = this, super_ = this._super; this.rpc('/auth_signup/signup', params) === modified file 'portal/security/portal_security.xml' --- portal/security/portal_security.xml 2012-12-14 08:56:39 +0000 +++ portal/security/portal_security.xml 2012-12-18 15:35:25 +0000 @@ -6,7 +6,7 @@ <field name="name">res_partner: read access on my partner</field> <field name="model_id" ref="base.model_res_partner"/> <field name="domain_force">[('user_ids', 'in', user.id)]</field> - <field name="groups" eval="[(4, ref('group_portal'))]"/> + <field name="groups" eval="[(4, ref('group_portal')), (4, ref('group_anonymous'))]"/> <field name="perm_create" eval="False"/> <field name="perm_unlink" eval="False"/> <field name="perm_write" eval="False"/> === modified file 'portal_anonymous/security/ir.model.access.csv' --- portal_anonymous/security/ir.model.access.csv 2012-12-15 19:15:40 +0000 +++ portal_anonymous/security/ir.model.access.csv 2012-12-18 15:35:25 +0000 @@ -1,5 +1,3 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_mail_message_portal,mail.message.portal,mail.model_mail_message,portal.group_anonymous,1,0,0,0 access_res_partner,res.partner,base.model_res_partner,portal.group_anonymous,1,0,0,0 -access_res_partner_category,res.partner_category,base.model_res_partner_category,portal.group_anonymous,1,0,0,0 -access_res_partner_title,res.partner_title,base.model_res_partner_title,portal.group_anonymous,1,0,0,0 === modified file 'portal_anonymous/static/src/js/portal_anonymous.js' --- portal_anonymous/static/src/js/portal_anonymous.js 2012-12-17 10:14:25 +0000 +++ portal_anonymous/static/src/js/portal_anonymous.js 2012-12-18 15:35:25 +0000 @@ -4,13 +4,13 @@ start: function() { var self = this; return $.when(this._super()).then(function() { + var params = $.deparam($.param.querystring()); var dblist = self.db_list || []; - if (!self.session.session_is_valid() && dblist.length === 1) { + if (!self.session.session_is_valid() && dblist.length === 1 && (!params.token || !params.login)) { self.remember_credentials = false; // XXX get login/pass from server (via a rpc call) ? return self.do_login(dblist[0], 'anonymous', 'anonymous'); } - }); }, }); @@ -51,6 +51,14 @@ } return false; }, + // Avoid browser preloading + show_application: function() { + var params = $.deparam($.param.querystring()); + if (!!params.token || !!params.login) { + return this.show_login(); + } + return this._super(); + }, }); };
_______________________________________________ Mailing list: https://launchpad.net/~openerp-dev-gtk Post to : openerp-dev-gtk@lists.launchpad.net Unsubscribe : https://launchpad.net/~openerp-dev-gtk More help : https://help.launchpad.net/ListHelp