diff options
| author | Raphael Collet <rco@openerp.com> | 2012-11-23 16:35:38 +0100 |
|---|---|---|
| committer | Raphael Collet <rco@openerp.com> | 2012-11-23 16:35:38 +0100 |
| commit | 8ea70767451be1a1776e28b559775184d6fabeb2 (patch) | |
| tree | 86d1209b61d04fad6c6839ed0e0b72214558d375 /addons | |
| parent | b5a04899791b048f00a7ac05a71912525e24a333 (diff) | |
[IMP] auth_signup: generalize the signup method in order to allow signup via oauth
bzr revid: rco@openerp.com-20121123153538-cqnuvqjhp4g44sef
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/auth_signup/res_users.py | 49 | ||||
| -rw-r--r-- | addons/auth_signup/static/src/js/auth_signup.js | 1 |
2 files changed, 24 insertions, 26 deletions
diff --git a/addons/auth_signup/res_users.py b/addons/auth_signup/res_users.py index d936cb0f328..69ec45b80e5 100644 --- a/addons/auth_signup/res_users.py +++ b/addons/auth_signup/res_users.py @@ -163,43 +163,39 @@ class res_users(osv.Model): - create a new user (no token), or - create a user for a partner (with token, but no user for partner), or - change the password of a user (with token, and existing user). - :param values: a dictionary with field values + :param values: a dictionary with field values that are written on user :param token: signup token (optional) :return: (dbname, login, password) for the signed up user """ - assert values.get('login') and values.get('password') - result = (cr.dbname, values['login'], values['password']) - if token: # signup with a token: find the corresponding partner id res_partner = self.pool.get('res.partner') - partner = res_partner._signup_retrieve_partner(cr, uid, token, - check_validity=True, raise_exception=True, context=None) + 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}) - if partner.user_ids: - # user exists, modify its password - partner.user_ids[0].write({'password': values['password']}) + + partner_user = partner.user_ids and partner.user_ids[0] or False + if partner_user: + # user exists, modify it according to values + values.pop('login', None) + values.pop('name', None) + partner_user.write(values) + return (cr.dbname, partner_user.login, values.get('password')) else: # user does not exist: sign up invited user - self._signup_create_user(cr, uid, { + values.update({ 'name': partner.name, - 'login': values['login'], - 'password': values['password'], - 'email': values['login'], 'partner_id': partner.id, - }, context=context) - return result - - # sign up an external user - assert values.get('name'), 'Signup: no name given for new user' - self._signup_create_user(cr, uid, { - 'name': values['name'], - 'login': values['login'], - 'password': values['password'], - 'email': values['login'], - }, context=context) - return result + 'email': values.get('email') or values.get('login'), + }) + self._signup_create_user(cr, uid, values, context=context) + else: + # no token, sign up an external user + values['email'] = values.get('email') or values.get('login') + self._signup_create_user(cr, uid, values, context=context) + + return (cr.dbname, values.get('login'), values.get('password')) def _signup_create_user(self, cr, uid, values, context=None): """ create a new user from the template user """ @@ -212,6 +208,9 @@ class res_users(osv.Model): if not safe_eval(ir_config_parameter.get_param(cr, uid, 'auth_signup.allow_uninvited', 'False')): raise SignupError('Signup is not allowed for uninvited users') + assert values.get('login'), "Signup: no login given for new user" + assert values.get('partner_id') or values.get('name'), "Signup: no name or partner given for new user" + # create a copy of the template user (attached to a specific partner_id if given) values['active'] = True return self.copy(cr, uid, template_user_id, values, context=context) diff --git a/addons/auth_signup/static/src/js/auth_signup.js b/addons/auth_signup/static/src/js/auth_signup.js index 9642a15f5c9..962a54f5920 100644 --- a/addons/auth_signup/static/src/js/auth_signup.js +++ b/addons/auth_signup/static/src/js/auth_signup.js @@ -100,7 +100,6 @@ openerp.auth_signup = function(instance) { name: name, login: login, password: password, - //state: $.param(this.params) }; var self = this, |
