diff --git a/addons/auth_totp/controllers/home.py b/addons/auth_totp/controllers/home.py index 40e41eefc0e..aaeae55de76 100644 --- a/addons/auth_totp/controllers/home.py +++ b/addons/auth_totp/controllers/home.py @@ -30,8 +30,9 @@ class Home(web_home.Home): cookies = request.httprequest.cookies key = cookies.get(TRUSTED_DEVICE_COOKIE) if key: - checked_credentials = request.env['auth_totp.device']._check_credentials(scope="browser", key=key) - if checked_credentials == user.id: + user_match = request.env['auth_totp.device']._check_credentials_for_uid( + scope="browser", key=key, uid=user.id) + if user_match: request.session.finalize(request.env) return request.redirect(self._login_redirect(request.session.uid, redirect=redirect)) diff --git a/addons/auth_totp/models/auth_totp.py b/addons/auth_totp/models/auth_totp.py index 38ac76df4a4..ac97cd2f5bc 100644 --- a/addons/auth_totp/models/auth_totp.py +++ b/addons/auth_totp/models/auth_totp.py @@ -12,3 +12,8 @@ class AuthTotpDevice(models.Model): _inherit = "res.users.apikeys" _description = "Authentication Device" _auto = False + + def _check_credentials_for_uid(self, *, scope, key, uid): + """Return True if device key matches given `scope` for user ID `uid`""" + assert uid, "uid is required" + return self._check_credentials(scope=scope, key=key) == uid