diff --git a/bin/service/security.py b/bin/service/security.py index 2653328edfd..0bc68eb4006 100644 --- a/bin/service/security.py +++ b/bin/service/security.py @@ -34,13 +34,13 @@ _uid_cache = {} def login(db, login, password): cr = pooler.get_db(db).cursor() - cr.execute('select id from res_users where login=%s and password=%s and active', (login, password)) + cr.execute('select id from res_users where login=%s and password=%s and active', (login.encode('utf-8'), password.encode('utf-8'))) res = cr.fetchone() cr.close() if res: return res[0] else: - raise Exception('Bad username or password') + return False def check_super(passwd): if passwd == tools.config['admin_passwd']: diff --git a/bin/service/web_services.py b/bin/service/web_services.py index 29d7c2da16b..c248f53fece 100644 --- a/bin/service/web_services.py +++ b/bin/service/web_services.py @@ -285,16 +285,11 @@ class common(netsvc.Service): return res def login(self, db, login, password): + res = security.login(db, login, password) logger = netsvc.Logger() - cr = pooler.get_db(db).cursor() -#FIXME: this is a temporary fix for the crash on login/password with non ASCII chars. -#We should fix this in a better way (ie somewhere else) - cr.execute('select id from res_users where login=%s and password=%s', (login.encode('utf-8'), password.encode('utf-8'))) - res = cr.fetchone() msg = res and 'successful login' or 'bad login or password' logger.notifyChannel("web-service", netsvc.LOG_INFO, "%s from '%s' using database '%s'" % (msg, login, db)) - cr.close() - return (res and res[0]) or False + return res or False def about(self): return tools.version_string + _('''