From 0d7ca334f111032b1f30d71552466d5fd7b623a4 Mon Sep 17 00:00:00 2001 From: Jared Kipe Date: Wed, 5 Oct 2022 23:07:45 +0000 Subject: [PATCH] [MIG] auth_admin: for 16.0 Not working, partial refactor to new session code. Needs debugged. --- auth_admin/__manifest__.py | 2 +- auth_admin/controllers/main.py | 36 +++++++++++++++++++++++++--------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/auth_admin/__manifest__.py b/auth_admin/__manifest__.py index 1b628cf3..ab95847e 100755 --- a/auth_admin/__manifest__.py +++ b/auth_admin/__manifest__.py @@ -2,7 +2,7 @@ 'name': 'Auth Admin', 'author': 'Hibou Corp. ', 'category': 'Hidden', - 'version': '15.0.1.0.0', + 'version': '16.0.1.0.0', 'description': """ Login as other user diff --git a/auth_admin/controllers/main.py b/auth_admin/controllers/main.py index 5c7b83a9..034e16b2 100755 --- a/auth_admin/controllers/main.py +++ b/auth_admin/controllers/main.py @@ -24,16 +24,34 @@ class AuthAdmin(http.Controller): try: user = check_admin_auth_login(http.request.env, u, e, o, h) - + http.request.session.uid = user.id - http.request.session.login = user.login - http.request.session.password = '' - http.request.session.auth_admin = int(o) - http.request.uid = user.id - uid = http.request.session.authenticate(http.request.session.db, user.login, 'x') - if uid is not False: - http.request.params['login_success'] = True - return http.request.redirect('/my/home') + http.request.session.pre_login = user.login + # http.request.session.pre_uid = pre_uid + + with registry.cursor() as cr: + env = odoo.api.Environment(cr, user.id, {}) + + # if 2FA is disabled we finalize immediately + user = env['res.users'].browse(user.id) + # TODO RFC do we want to allow this mechanism with mfa? + if not user._mfa_url(): + http.request.session.finalize(env) + + if request and request.db == dbname: + # Like update_env(user=request.session.uid) but works when uid is None + request.env = odoo.api.Environment(request.env.cr, http.request.session.uid, http.request.session.context) + request.update_context(**http.request.session.context) + + # http.request.session.uid = user.id + # http.request.session.login = user.login + # http.request.session.password = '' + # http.request.session.auth_admin = int(o) + # http.request.uid = user.id + # uid = http.request.session.authenticate(http.request.session.db, user.login, 'x') + # if uid is not False: + # http.request.params['login_success'] = True + # return http.request.redirect('/my/home') return http.request.redirect('/my/home') except (exceptions.Warning, ) as e: return http.Response(e.message, status=400)