Skip to content

Instantly share code, notes, and snippets.

@sagotsky
Last active December 27, 2015 11:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sagotsky/7321750 to your computer and use it in GitHub Desktop.
Save sagotsky/7321750 to your computer and use it in GitHub Desktop.
Fixes password_policy's consecutive constraint
diff --git a/plugins/constraint/consecutive.inc b/plugins/constraint/consecutive.inc
index e6c3c3c..f79b7b1 100644
--- a/plugins/constraint/consecutive.inc
+++ b/plugins/constraint/consecutive.inc
@@ -36,6 +36,6 @@ function password_policy_consecutive_admin_form($form, &$form_state, $constraint
* Admin form callback for consecutive character count constraint.
*/
function password_policy_consecutive_constraint($password, $account, $constraint) {
- $pattern = '/(.)[\1]{' . ($constraint->config['consecutive_char_count'] - 1) . '}/';
+ $pattern = '/(.)\1{' . ($constraint->config['consecutive_char_count'] - 1) . '}/';
return !preg_match($pattern, $password);
}
diff --git a/password_policy.test b/password_policy.test
index 0b68912..78936be 100644
--- a/password_policy.test
+++ b/password_policy.test
@@ -139,12 +139,12 @@ class PasswordPolicyConstraintsTestCase extends PasswordPolicyTestBase {
*/
public function testConsecutiveConstraint() {
$config = array('consecutive' => array(
- 'consecutive_char_count' => 1,
+ 'consecutive_char_count' => 2,
));
$policy = $this->createPolicy($config);
- $this->assertTrue($this->checkPolicy($policy, ''), t('Consecutive character count constraint passes with less than maximum consecutive characters.'), t('Constraint'));
- $this->assertFalse($this->checkPolicy($policy, 'a'), t('Consecutive character count constraint fails with exact maximum consecutive characters.'), t('Constraint'));
- $this->assertFalse($this->checkPolicy($policy, 'aa'), t('Consecutive character count constraint fails with more than maximum consecutive characters.'), t('Constraint'));
+ $this->assertTrue($this->checkPolicy($policy, 'a'), t('Consecutive character count constraint passes with fewer than maximum consecutive characters.'), t('Constraint'));
+ $this->assertFalse($this->checkPolicy($policy, 'aa'), t('Consecutive character count constraint fails with exact maximum consecutive characters.'), t('Constraint'));
+ $this->assertFalse($this->checkPolicy($policy, 'aaa'), t('Consecutive character count constraint fails with more than maximum consecutive characters.'), t('Constraint'));
}
/**
diff --git a/plugins/constraint/consecutive.inc b/plugins/constraint/consecutive.inc
index abc4a5d..6f324f7 100644
--- a/plugins/constraint/consecutive.inc
+++ b/plugins/constraint/consecutive.inc
@@ -36,6 +36,6 @@ function password_policy_consecutive_admin_form($form, &$form_state, $constraint
* Admin form callback for consecutive character count constraint.
*/
function password_policy_consecutive_constraint($password, $account, $constraint) {
- $pattern = '/(.)[\1]{' . ($constraint->config['consecutive_char_count'] - 1) . '}/';
+ $pattern = '/(.)\1{' . ($constraint->config['consecutive_char_count'] - 1) . '}/';
return !preg_match($pattern, $password);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment