From 04a4cf4a321ee59054ee6a6973fb6774bfc18218 Mon Sep 17 00:00:00 2001 From: "P. Christeas" Date: Tue, 28 Dec 2010 11:48:31 +0200 Subject: [PATCH] Base_crypt: fix password check, again. bzr revid: p_christ@hol.gr-20101228094831-c8hvqdl34ircxhr3 --- addons/base_crypt/crypt.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/base_crypt/crypt.py b/addons/base_crypt/crypt.py index 8510f336dee..455885534aa 100755 --- a/addons/base_crypt/crypt.py +++ b/addons/base_crypt/crypt.py @@ -174,9 +174,11 @@ def login(db, login, password): # else: # raise Exception('AccessDenied') -def check_creds(db, uid, passwd): - if security._uid_cache.get(db, {}).get(uid) and security._uid_cache.get(db, {}).get(uid) == passwd: +def check(db, uid, passwd): + cached_pass = security._uid_cache.get(db, {}).get(uid) + if (cached_pass is not None) and cached_pass == passwd: return True + cr = pooler.get_db(db).cursor() if passwd not in _salt_cache: cr.execute( 'select login from res_users where id=%s', (uid,) ) @@ -185,7 +187,7 @@ def check_creds(db, uid, passwd): stored_login = stored_login[0] if not login(db,stored_login,passwd): - return False + return security.ExceptionNoTb('AccessDenied') salt = _salt_cache[passwd] cr.execute(' select count(*) from res_users where id=%s and password=%s', (int(uid), encrypt_md5( passwd, salt )) ) res = cr.fetchone()[0] @@ -211,7 +213,7 @@ def access(db, uid, passwd, sec_level, ids): security.login=login #security.check_super=check_super security.access=access -security.check_creds=check_creds +security.check=check class users(osv.osv): _name="res.users"