|
10 | 10 | from odoo import _, http
|
11 | 11 | from odoo.http import Response, request
|
12 | 12 | from odoo.addons.web.controllers.main import Home
|
13 |
| -from odoo.addons.portal.controllers.portal import CustomerPortal |
14 | 13 |
|
15 | 14 |
|
16 | 15 | class JsonSecureCookie(SecureCookie):
|
@@ -55,12 +54,24 @@ def unquote(cls, value):
|
55 | 54 |
|
56 | 55 |
|
57 | 56 | class AuthTotp(Home):
|
| 57 | + |
58 | 58 | @http.route()
|
59 | 59 | def web_login(self, *args, **kwargs):
|
60 |
| - response = super(AuthTotp, self).web_login(*args, **kwargs) |
61 |
| - if request.session.get('mfa_login_needed'): |
62 |
| - return self.redirect(http) |
63 |
| - return response |
| 60 | + if request.params.get('login') and request.params.get('password'): |
| 61 | + User = request.env["res.users"] |
| 62 | + uid = User.sudo().authenticate( |
| 63 | + request.params.get('db'), |
| 64 | + request.params.get('login'), |
| 65 | + request.params.get('password'), |
| 66 | + {} |
| 67 | + ) |
| 68 | + if uid: |
| 69 | + user = User.browse(uid).sudo() |
| 70 | + if user.mfa_enabled: |
| 71 | + return self.redirect(http) |
| 72 | + elif user.has_group("base.group_user"): |
| 73 | + kwargs.update({'redirect': "/web"}) |
| 74 | + return super(AuthTotp, self).web_login(*args, **kwargs) |
64 | 75 |
|
65 | 76 | def redirect(self, http=None, redirect=None):
|
66 | 77 | if request.session.get('mfa_login_needed'):
|
@@ -107,8 +118,8 @@ def mfa_login_post(self, *args, **kwargs):
|
107 | 118 | user_model_sudo = request.env['res.users'].sudo()
|
108 | 119 | config_model_sudo = user_model_sudo.env['ir.config_parameter'].sudo()
|
109 | 120 |
|
110 |
| - user_login = request.session.get('uid') |
111 |
| - user = user_model_sudo.search([('id', '=', user_login)]) |
| 121 | + user_login = request.session.get('login') |
| 122 | + user = user_model_sudo.search([('login', '=', user_login)]) |
112 | 123 | if not user:
|
113 | 124 | return http.local_redirect(
|
114 | 125 | '/web/login',
|
@@ -171,29 +182,3 @@ def mfa_login_post(self, *args, **kwargs):
|
171 | 182 | )
|
172 | 183 |
|
173 | 184 | return response
|
174 |
| - |
175 |
| - @http.route('/web', type='http', auth="none") |
176 |
| - def web_client(self, s_action=None, **kw): |
177 |
| - if request.session.get('mfa_login_needed'): |
178 |
| - request.session.update({ |
179 |
| - 'mfa_login_needed': False, |
180 |
| - 'login': False, |
181 |
| - 'uid': False, |
182 |
| - 'sessions_token': False, |
183 |
| - }) |
184 |
| - return http.local_redirect('/web/login') |
185 |
| - return super(AuthTotp, self).web_client(s_action=s_action) |
186 |
| - |
187 |
| - |
188 |
| -class CustomerPortal(CustomerPortal): |
189 |
| - |
190 |
| - @http.route(['/my', '/my/home'], type='http', auth="user", website=True) |
191 |
| - def home(self, **kw): |
192 |
| - if request.session.get('mfa_login_needed'): |
193 |
| - request.session.update({ |
194 |
| - 'mfa_login_needed': False, |
195 |
| - 'uid': False, |
196 |
| - 'session_token': False, |
197 |
| - }) |
198 |
| - return request.redirect('/web/login') |
199 |
| - return super(CustomerPortal, self).home() |
0 commit comments