diff options
Diffstat (limited to 'addons/web/controllers/main.py')
| -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): |
