[IMP] core: add env to various auth methods

Allows accessing various keys, especially whether this is an
interactive login or not.

Also have the xml-rpc `login` delegate to `authenticate` instead of
having its own half-assed implementation.

And remove some dead code: as far as I can tell, Session.authenticate
is never called with a uid.
This commit is contained in:
Xavier Morel
2020-08-14 21:20:47 +00:00
committed by Olivier Dony
parent d21420d87a
commit 950d962d95
8 changed files with 42 additions and 55 deletions
+4 -4
View File
@@ -10,9 +10,9 @@ class Users(models.Model):
_inherit = "res.users"
@classmethod
def _login(cls, db, login, password):
def _login(cls, db, login, password, user_agent_env):
try:
return super(Users, cls)._login(db, login, password)
return super(Users, cls)._login(db, login, password, user_agent_env=user_agent_env)
except AccessDenied as e:
with registry(db).cursor() as cr:
cr.execute("SELECT id FROM res_users WHERE lower(login)=%s", (login,))
@@ -28,9 +28,9 @@ class Users(models.Model):
return Ldap._get_or_create_user(conf, login, entry)
raise e
def _check_credentials(self, password):
def _check_credentials(self, password, env):
try:
super(Users, self)._check_credentials(password)
return super(Users, self)._check_credentials(password, env)
except AccessDenied:
if self.env.user.active:
Ldap = self.env['res.company.ldap']