[FIX] crypt and openid

lp bug: https://launchpad.net/bugs/1026784 fixed

bzr revid: api@openerp.com-20121115153056-ayj1do22pllon9ud
This commit is contained in:
Arnaud Pineux 2012-11-15 16:30:56 +01:00
commit 15281138ea
1 changed files with 14 additions and 0 deletions

View File

@ -201,6 +201,20 @@ class users(osv.osv):
# Return early if no one has a login name like that.
return False
# Check if the authentification is made with OpenID. In this case, don't encrypt the password
cr.execute('SELECT id FROM ir_module_module WHERE name = \'auth_openid\' and state = \'installed\'')
if cr.rowcount:
cr.execute( 'SELECT password, id FROM res_users WHERE login=%s AND openid_key = %s AND active',
(login.encode('utf-8'),password.encode('utf-8')))
if cr.rowcount:
# Check if the encrypted password matches against the one in the db.
cr.execute("""UPDATE res_users SET login_date=now() AT TIME ZONE 'UTC' WHERE id=%s AND openid_key=%s AND active RETURNING id""",
(int(id), password.encode('utf-8')))
res = cr.fetchone()
cr.commit()
if res:
return res[0]
stored_pw = self.maybe_encrypt(cr, stored_pw, id)
if not stored_pw: