Skip to content

Commit d232cf0

Browse files
max3903murtuzasaleh
authored andcommitted
[FIX] auth_totp: Issue OCA#163
1 parent 8c2f204 commit d232cf0

File tree

2 files changed

+19
-34
lines changed

2 files changed

+19
-34
lines changed

Diff for: auth_totp/controllers/main.py

+18-33
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
from odoo import _, http
1111
from odoo.http import Response, request
1212
from odoo.addons.web.controllers.main import Home
13-
from odoo.addons.portal.controllers.portal import CustomerPortal
1413

1514

1615
class JsonSecureCookie(SecureCookie):
@@ -55,12 +54,24 @@ def unquote(cls, value):
5554

5655

5756
class AuthTotp(Home):
57+
5858
@http.route()
5959
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)
6475

6576
def redirect(self, http=None, redirect=None):
6677
if request.session.get('mfa_login_needed'):
@@ -107,8 +118,8 @@ def mfa_login_post(self, *args, **kwargs):
107118
user_model_sudo = request.env['res.users'].sudo()
108119
config_model_sudo = user_model_sudo.env['ir.config_parameter'].sudo()
109120

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)])
112123
if not user:
113124
return http.local_redirect(
114125
'/web/login',
@@ -171,29 +182,3 @@ def mfa_login_post(self, *args, **kwargs):
171182
)
172183

173184
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()

Diff for: auth_totp/views/res_users.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
<label for="mfa_enabled" colspan="3"/>
3535
<field name="mfa_enabled" readonly="0" colspan="5" nolabel="1"/>
3636
<label for="authenticator_ids" colspan="3"/>
37-
<field name="authenticator_ids" widget="many2many_tags" options="{'no_create': True}" colspan="4" readonly="0" nolabel="1"/>
37+
<field name="authenticator_ids" widget="many2many_tags" options="{'no_create': True}" domain="[('user_id', '=', id)]" colspan="4" readonly="0" nolabel="1"/>
3838
<button string="Add New App/Device" type="action" name="%(res_users_authenticator_create_action)d" colspan="1"/>
3939
</group>
4040
</xpath>

0 commit comments

Comments
 (0)