summaryrefslogtreecommitdiff
path: root/addons/web/controllers/main.py
diff options
context:
space:
mode:
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):