Skip to content

Commit 8ccbc97

Browse files
committed
Merge PR #713 into 16.0
Signed-off-by moylop260
2 parents 00b48ac + f8c4092 commit 8ccbc97

3 files changed

Lines changed: 31 additions & 3 deletions

File tree

password_security/controllers/main.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,13 @@
1717
class PasswordSecurityHome(AuthSignupHome):
1818
def do_signup(self, qcontext):
1919
password = qcontext.get("password")
20-
user = request.env.user
20+
# If 2FA is activated, request.env.user is not updated to the logged-in user
21+
# at this point. In order to do _check_password on the correct user we
22+
# search by login.
23+
user = (
24+
request.env.user.search([("login", "=", qcontext.get("login"))])
25+
or request.env.user
26+
)
2127
user._check_password(password)
2228
return super(PasswordSecurityHome, self).do_signup(qcontext)
2329

password_security/models/res_users.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class ResUsers(models.Model):
1919
_inherit = "res.users"
2020

2121
password_write_date = fields.Datetime(
22-
"Last password update", default=fields.Datetime.now, readonly=True
22+
"Last password update", default=fields.Datetime.now, readonly=True, copy=False
2323
)
2424
password_history_ids = fields.One2many(
2525
string="Password History",

password_security/tests/test_signup.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from unittest import mock
66

7+
from freezegun import freeze_time
78
from requests.exceptions import HTTPError
89

910
from odoo import http
@@ -82,7 +83,8 @@ def test_03_create_user_signup(self):
8283

8384
# Stronger password: no error raised
8485
vals["password"] = "asdQWE12345_3"
85-
login, pwd = self.env["res.users"].signup(vals)
86+
with freeze_time("2020-01-01"):
87+
login, pwd = self.env["res.users"].signup(vals)
8688

8789
# check created user
8890
created_user = self.env["res.users"].search([("login", "=", "test_user")])
@@ -160,3 +162,23 @@ def test_06_web_auth_signup_invalid_render(self):
160162
self.assertEqual(
161163
response.headers["Content-Security-Policy"], "frame-ancestors 'self'"
162164
)
165+
166+
def test_07_cloned_user_password_write_date(self):
167+
"""Users that are cloned should have their password_write_date updated"""
168+
partner = self.env["res.partner"].create({"name": "test partner"})
169+
vals = {
170+
"name": "Test User",
171+
"login": "test_user",
172+
"email": "test_user@odoo.com",
173+
"password": "Test_user_password123$",
174+
"partner_id": partner.id,
175+
}
176+
with freeze_time("2020-01-01"):
177+
self.env["res.users"].signup(vals)
178+
179+
original_user = self.env["res.users"].search([("login", "=", "test_user")])
180+
copied_user = original_user.copy()
181+
182+
self.assertTrue(
183+
copied_user.password_write_date > original_user.password_write_date
184+
)

0 commit comments

Comments
 (0)