Skip to content

Commit a3c10d2

Browse files
fixup! [IMP] password_security: add flag to enable/disable password security policy
1 parent ae570f2 commit a3c10d2

File tree

4 files changed

+31
-34
lines changed

4 files changed

+31
-34
lines changed

password_security/models/res_company.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class ResCompany(models.Model):
1010
_inherit = "res.company"
1111

1212
password_policy_enabled = fields.Boolean(default=False)
13-
13+
1414
password_expiration = fields.Integer(
1515
"Days",
1616
default=60,

password_security/models/res_users.py

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def create(self, vals):
4646
return super(ResUsers, self).create(vals)
4747

4848
def write(self, vals):
49-
if vals.get("password"):
49+
if vals.get("password") and self.env.user.company_id.password_policy_enabled:
5050
self._check_password(vals["password"])
5151
vals["password_write_date"] = fields.Datetime.now()
5252
return super(ResUsers, self).write(vals)
@@ -55,16 +55,17 @@ def write(self, vals):
5555
def get_password_policy(self):
5656
data = super(ResUsers, self).get_password_policy()
5757
company_id = self.env.user.company_id
58-
data.update(
59-
{
60-
"password_lower": company_id.password_lower,
61-
"password_upper": company_id.password_upper,
62-
"password_numeric": company_id.password_numeric,
63-
"password_special": company_id.password_special,
64-
"password_length": company_id.password_length,
65-
"password_estimate": company_id.password_estimate,
66-
}
67-
)
58+
if company_id.password_policy_enabled:
59+
data.update(
60+
{
61+
"password_lower": company_id.password_lower,
62+
"password_upper": company_id.password_upper,
63+
"password_numeric": company_id.password_numeric,
64+
"password_special": company_id.password_special,
65+
"password_length": company_id.password_length,
66+
"password_estimate": company_id.password_estimate,
67+
}
68+
)
6869
return data
6970

7071
def _check_password_policy(self, passwords):
@@ -124,20 +125,21 @@ def _check_password_rules(self, password):
124125
if not password:
125126
return True
126127
company_id = self.company_id
127-
password_regex = [
128-
"^",
129-
"(?=.*?[a-z]){" + str(company_id.password_lower) + ",}",
130-
"(?=.*?[A-Z]){" + str(company_id.password_upper) + ",}",
131-
"(?=.*?\\d){" + str(company_id.password_numeric) + ",}",
132-
r"(?=.*?[\W_]){" + str(company_id.password_special) + ",}",
133-
".{%d,}$" % int(company_id.password_length),
134-
]
135-
if not re.search("".join(password_regex), password):
136-
raise ValidationError(self.password_match_message())
137-
138-
estimation = self.get_estimation(password)
139-
if estimation["score"] < company_id.password_estimate:
140-
raise UserError(estimation["feedback"]["warning"])
128+
if company_id.password_policy_enabled:
129+
password_regex = [
130+
"^",
131+
"(?=.*?[a-z]){" + str(company_id.password_lower) + ",}",
132+
"(?=.*?[A-Z]){" + str(company_id.password_upper) + ",}",
133+
"(?=.*?\\d){" + str(company_id.password_numeric) + ",}",
134+
r"(?=.*?[\W_]){" + str(company_id.password_special) + ",}",
135+
".{%d,}$" % int(company_id.password_length),
136+
]
137+
if not re.search("".join(password_regex), password):
138+
raise ValidationError(self.password_match_message())
139+
140+
estimation = self.get_estimation(password)
141+
if estimation["score"] < company_id.password_estimate:
142+
raise UserError(estimation["feedback"]["warning"])
141143

142144
return True
143145

password_security/tests/test_res_users.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ def setUpClass(cls):
1717
}
1818
cls.password = "asdQWE123$%^"
1919
cls.main_comp = cls.env.ref("base.main_company")
20+
cls.main_comp.password_policy_enabled = True
2021
cls.vals = {
2122
"name": "User",
2223
"login": cls.login,

password_security/views/res_config_settings_views.xml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,11 @@
2626
<div class="mt16">
2727
<span>
2828
Password policy enabled
29-
<field
30-
name="password_policy_enabled"
31-
class="oe_inline"
32-
/>
29+
<field name="password_policy_enabled" class="oe_inline"/>
3330
</span>
3431
</div>
3532
</div>
36-
<div
37-
class="content-group"
38-
attrs="{'invisible': [('password_policy_enabled','=', False)]}"
39-
>
33+
<div class="content-group" attrs="{'invisible': [('password_policy_enabled','=', False)]}">
4034
<div class="mt16">
4135
<span>
4236
Password expires in

0 commit comments

Comments
 (0)