diff options
| author | Xavier Morel <xmo@odoo.com> | 2019-06-05 09:06:09 +0000 |
|---|---|---|
| committer | Olivier Dony <odo@odoo.com> | 2020-08-14 23:06:24 +0000 |
| commit | 096972de0be5af2bbdf5003904bd31b79f8f4ce1 (patch) | |
| tree | 12a4c1e6db34be5c41ad10554d345f564aee9f08 /addons/web/controllers | |
| parent | 909b64a50bc9d23fec1b36e5a6f11ab3106d893c (diff) | |
[ADD] core, web: support for partial sessions & MFA
Diffstat (limited to 'addons/web/controllers')
| -rw-r--r-- | addons/web/controllers/main.py | 13 |
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): |
