From 2c46e9e8d16ed0d4ad3eae37b89ee45672f1dcc6 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Wed, 17 Oct 2012 13:57:18 +0200 Subject: [PATCH] [FIX] base_crypt: allow empty password to be set on res.users bzr revid: qdp-launchpad@openerp.com-20121017115718-y5wln78yq6097qt6 --- addons/base_crypt/crypt.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/addons/base_crypt/crypt.py b/addons/base_crypt/crypt.py index 81a60a5dd5f..3accc2740e9 100644 --- a/addons/base_crypt/crypt.py +++ b/addons/base_crypt/crypt.py @@ -140,15 +140,18 @@ class users(osv.osv): # Add handlers for 'input_pw' field. def set_pw(self, cr, uid, id, name, value, args, context): - if not value: - raise osv.except_osv(_('Error!'), _("You have to specify a password.")) + if value: + obj = pooler.get_pool(cr.dbname).get('res.users') + if not hasattr(obj, "_salt_cache"): + obj._salt_cache = {} - obj = pooler.get_pool(cr.dbname).get('res.users') - if not hasattr(obj, "_salt_cache"): - obj._salt_cache = {} + salt = obj._salt_cache[id] = gen_salt() + encrypted = encrypt_md5(value, salt) - salt = obj._salt_cache[id] = gen_salt() - encrypted = encrypt_md5(value, salt) + else: + #setting a password to '' is allowed. It can be used to inactivate the classic log-in of the user + #while the access can still be granted by another login method (openid...) + encrypted = '' cr.execute('update res_users set password=%s where id=%s', (encrypted.encode('utf-8'), int(id))) cr.commit()