From 1eba13070c9f7b69cf8f35b538bca16b677e3bdd Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Thu, 13 Dec 2012 13:22:17 +0100
Subject: [PATCH 1/9] [FIX] Pass True as parameter to 'email.template'
send_mail method on action_reset_password as it's needed in order to send the
mail (else send_mail returns the msg_id and delegates the send process to
calling method)
bzr revid: vta@openerp.com-20121213122217-sou9gklbqspd4hcx
---
addons/auth_signup/res_users.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/auth_signup/res_users.py b/addons/auth_signup/res_users.py
index 5fd7917f444..4da88315466 100644
--- a/addons/auth_signup/res_users.py
+++ b/addons/auth_signup/res_users.py
@@ -246,7 +246,7 @@ class res_users(osv.Model):
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
From d30d4f4b523a22cf7f560865bb15adc00e938a0f Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Thu, 13 Dec 2012 16:45:13 +0100
Subject: [PATCH 2/9] [IMP] Avoid anonymous 'autologin' if the url contains a
token or a login param
bzr revid: vta@openerp.com-20121213154513-a0eewtxcf9kihfu5
---
addons/portal_anonymous/static/src/js/portal_anonymous.js | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/addons/portal_anonymous/static/src/js/portal_anonymous.js b/addons/portal_anonymous/static/src/js/portal_anonymous.js
index 173e098a7bb..77c35a333a4 100644
--- a/addons/portal_anonymous/static/src/js/portal_anonymous.js
+++ b/addons/portal_anonymous/static/src/js/portal_anonymous.js
@@ -3,8 +3,12 @@ openerp.portal_anonymous = function(instance) {
instance.web.Login.include({
start: function() {
var self = this;
+ console.log($.deparam.querystring());
return $.when(this._super()).then(function() {
var dblist = self.db_list || [];
+ if (!!self.params.token || !!self.params.login) {
+ return false;
+ }
if (!self.session.session_is_valid() && dblist.length === 1) {
self.remember_credentials = false;
// XXX get login/pass from server (via a rpc call) ?
From 0a6417e21e791ba8aa7c7b6a21ed765c42767149 Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Thu, 13 Dec 2012 17:08:28 +0100
Subject: [PATCH 3/9] [FIX] Remove console.log
bzr revid: vta@openerp.com-20121213160828-ko1fwjh2bjtokqay
---
addons/portal_anonymous/static/src/js/portal_anonymous.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/addons/portal_anonymous/static/src/js/portal_anonymous.js b/addons/portal_anonymous/static/src/js/portal_anonymous.js
index 77c35a333a4..df1130706d7 100644
--- a/addons/portal_anonymous/static/src/js/portal_anonymous.js
+++ b/addons/portal_anonymous/static/src/js/portal_anonymous.js
@@ -3,7 +3,6 @@ openerp.portal_anonymous = function(instance) {
instance.web.Login.include({
start: function() {
var self = this;
- console.log($.deparam.querystring());
return $.when(this._super()).then(function() {
var dblist = self.db_list || [];
if (!!self.params.token || !!self.params.login) {
From 56d9ca47c18c57d402d3324d1b767ad902449470 Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Fri, 14 Dec 2012 11:34:51 +0100
Subject: [PATCH 4/9] [FIX] Remove duplicated db param in
_get_signup_url_for_action
bzr revid: vta@openerp.com-20121214103451-xcntno6j770rcegg
---
addons/auth_signup/res_users.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/auth_signup/res_users.py b/addons/auth_signup/res_users.py
index 4da88315466..ba7ad4aa071 100644
--- a/addons/auth_signup/res_users.py
+++ b/addons/auth_signup/res_users.py
@@ -71,7 +71,7 @@ class res_partner(osv.Model):
action_template = "?db=%(db)s#action=%(action)s&token=%(token)s"
params['token'] = urllib.quote(partner.signup_token)
elif partner.user_ids:
- action_template = "?db=%(db)s#action=%(action)s&db=%(db)s&login=%(login)s"
+ action_template = "?db=%(db)s#action=%(action)s&login=%(login)s"
params['login'] = urllib.quote(partner.user_ids[0].login)
if action_template:
if view_type:
From 4c02283a78681cbc54faf87b077b78ad43e6615e Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Fri, 14 Dec 2012 13:20:25 +0100
Subject: [PATCH 5/9] [FIX] Fixed correct handling of url params
bzr revid: vta@openerp.com-20121214122025-iri7g6bdksmo2846
---
addons/portal_anonymous/static/src/js/portal_anonymous.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/addons/portal_anonymous/static/src/js/portal_anonymous.js b/addons/portal_anonymous/static/src/js/portal_anonymous.js
index df1130706d7..036d96c6a3e 100644
--- a/addons/portal_anonymous/static/src/js/portal_anonymous.js
+++ b/addons/portal_anonymous/static/src/js/portal_anonymous.js
@@ -5,7 +5,8 @@ openerp.portal_anonymous = function(instance) {
var self = this;
return $.when(this._super()).then(function() {
var dblist = self.db_list || [];
- if (!!self.params.token || !!self.params.login) {
+ var params = $.deparam($.param.querystring());
+ if (!!params.token || !!params.login) {
return false;
}
if (!self.session.session_is_valid() && dblist.length === 1) {
From 8ed5b437b393dff4213b05ee83b4c118f18ff4c6 Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Mon, 17 Dec 2012 16:04:58 +0100
Subject: [PATCH 6/9] [FIX] Fixed anonymous groups access rights and rules
bzr revid: vta@openerp.com-20121217150458-eorlwiqob8ap75gr
---
addons/portal/security/portal_security.xml | 2 +-
addons/portal_anonymous/security/ir.model.access.csv | 2 --
2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/addons/portal/security/portal_security.xml b/addons/portal/security/portal_security.xml
index 67a6cbaf8bd..b2a76800023 100644
--- a/addons/portal/security/portal_security.xml
+++ b/addons/portal/security/portal_security.xml
@@ -6,7 +6,7 @@
res_partner: read access on my partner
[('user_ids', 'in', user.id)]
-
+
diff --git a/addons/portal_anonymous/security/ir.model.access.csv b/addons/portal_anonymous/security/ir.model.access.csv
index 39f4cdd0f23..a26b600288d 100644
--- a/addons/portal_anonymous/security/ir.model.access.csv
+++ b/addons/portal_anonymous/security/ir.model.access.csv
@@ -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
From c8da4d8f90f9b8ac94e67c32b2e9cc8aa9ae97fb Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Mon, 17 Dec 2012 17:33:57 +0100
Subject: [PATCH 7/9] [FIX] Difference between signup and reset password (1)
bzr revid: vta@openerp.com-20121217163357-zubkzfv6xn1g4sc3
---
addons/auth_signup/res_users.py | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/addons/auth_signup/res_users.py b/addons/auth_signup/res_users.py
index 26291476a12..531475db8e6 100644
--- a/addons/auth_signup/res_users.py
+++ b/addons/auth_signup/res_users.py
@@ -67,6 +67,7 @@ class res_partner(osv.Model):
fragment = {'action': action}
if partner.signup_token:
+ fragment['type'] = partner.signup_type
fragment['token'] = partner.signup_token
elif partner.user_ids:
fragment['db'] = cr.dbname
@@ -91,6 +92,7 @@ class res_partner(osv.Model):
_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 +101,7 @@ class res_partner(osv.Model):
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 +110,7 @@ class res_partner(osv.Model):
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 +184,7 @@ class res_users(osv.Model):
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 +242,7 @@ class res_users(osv.Model):
# 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')
From 822fafe4ca2945e30ef68944b9ad1255273d7c7d Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Tue, 18 Dec 2012 09:19:08 +0100
Subject: [PATCH 8/9] [FIX] Set the login value from params if present in the
querystring
bzr revid: vta@openerp.com-20121218081908-6j0sx1df8jk1dm4u
---
addons/auth_signup/static/src/js/auth_signup.js | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/addons/auth_signup/static/src/js/auth_signup.js b/addons/auth_signup/static/src/js/auth_signup.js
index 1dfcf5fd8f9..943737e89d5 100644
--- a/addons/auth_signup/static/src/js/auth_signup.js
+++ b/addons/auth_signup/static/src/js/auth_signup.js
@@ -43,6 +43,9 @@ openerp.auth_signup = function(instance) {
.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 @@ openerp.auth_signup = function(instance) {
login: login,
password: password,
};
-
+
var self = this,
super_ = this._super;
this.rpc('/auth_signup/signup', params)
From 6116d9ae0e8b3a924aaf01f4e98d6f8dadc57487 Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Tue, 18 Dec 2012 16:32:55 +0100
Subject: [PATCH 9/9] [FIX] fixed anonymous autologin, and autojump to oauth
provider directly
bzr revid: vta@openerp.com-20121218153255-14mwitd6q06bbyor
---
addons/auth_oauth/static/src/js/auth_oauth.js | 11 ++++++++---
addons/auth_signup/res_users.py | 3 +--
.../static/src/js/portal_anonymous.js | 16 ++++++++++------
3 files changed, 19 insertions(+), 11 deletions(-)
diff --git a/addons/auth_oauth/static/src/js/auth_oauth.js b/addons/auth_oauth/static/src/js/auth_oauth.js
index c24dab3d55a..7ee83bd99e9 100644
--- a/addons/auth_oauth/static/src/js/auth_oauth.js
+++ b/addons/auth_oauth/static/src/js/auth_oauth.js
@@ -28,9 +28,14 @@ openerp.auth_oauth = function(instance) {
},
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();
diff --git a/addons/auth_signup/res_users.py b/addons/auth_signup/res_users.py
index 531475db8e6..f50db72d398 100644
--- a/addons/auth_signup/res_users.py
+++ b/addons/auth_signup/res_users.py
@@ -64,10 +64,9 @@ class res_partner(osv.Model):
# 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['type'] = partner.signup_type
fragment['token'] = partner.signup_token
elif partner.user_ids:
fragment['db'] = cr.dbname
diff --git a/addons/portal_anonymous/static/src/js/portal_anonymous.js b/addons/portal_anonymous/static/src/js/portal_anonymous.js
index 1045ff0889d..adaa51948b5 100644
--- a/addons/portal_anonymous/static/src/js/portal_anonymous.js
+++ b/addons/portal_anonymous/static/src/js/portal_anonymous.js
@@ -4,17 +4,13 @@ openerp.portal_anonymous = function(instance) {
start: function() {
var self = this;
return $.when(this._super()).then(function() {
- var dblist = self.db_list || [];
var params = $.deparam($.param.querystring());
- if (!!params.token || !!params.login) {
- return false;
- }
- if (!self.session.session_is_valid() && dblist.length === 1) {
+ var dblist = self.db_list || [];
+ 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');
}
-
});
},
});
@@ -55,6 +51,14 @@ openerp.portal_anonymous = function(instance) {
}
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();
+ },
});
};