summaryrefslogtreecommitdiff
path: root/addons/web/controllers/main.py
diff options
context:
space:
mode:
authorXavier Morel <xmo@odoo.com>2019-06-05 09:06:09 +0000
committerOlivier Dony <odo@odoo.com>2020-08-14 23:06:24 +0000
commit096972de0be5af2bbdf5003904bd31b79f8f4ce1 (patch)
tree12a4c1e6db34be5c41ad10554d345f564aee9f08 /addons/web/controllers/main.py
parent909b64a50bc9d23fec1b36e5a6f11ab3106d893c (diff)
[ADD] core, web: support for partial sessions & MFA
Diffstat (limited to 'addons/web/controllers/main.py')
-rw-r--r--addons/web/controllers/main.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index b2f9b268dea..e3996348043 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -869,7 +869,18 @@ class Home(http.Controller):
return response
def _login_redirect(self, uid, redirect=None):
- return redirect if redirect else '/web'
+ if request.session.uid: # fully logged
+ return redirect or '/web'
+
+ # partial session (MFA)
+ url = request.env(user=uid)['res.users'].browse(uid)._mfa_url()
+ if not redirect:
+ return url
+
+ parsed = werkzeug.urls.url_parse(url)
+ qs = parsed.decode_query()
+ qs['redirect'] = redirect
+ return parsed.replace(query=werkzeug.urls.url_encode(qs)).to_url()
@http.route('/web/login', type='http', auth="none")
def web_login(self, redirect=None, **kw):