code-pros / password-policy
Create a password policy and validate strings against it
Installs: 1 830
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: ^7.1 || ^8.0
Requires (Dev)
This package is auto-updated.
Last update: 2025-06-18 22:46:03 UTC
README
Create a Password Policy and validate passwords against it.
Useful for when a user is creating/updating their password.
Installation
Use Composer to manage your dependencies:
composer require code-pros/password-policy
Example
/**
* Setup a password policy
* This policy is from OWASP's security cheat sheet. Look it up for good reading!
*
* Must match 3/4 of the following
* - Lowercase character
* - Uppercase character
* - Special character
* - Digit
* Must match all of the following
* - between 10 and 128 characters
* - no consecutive characters more than twice
*/
$childPolicy = \CodePros\PasswordPolicy\Builder::create()
->addMustRule(new \CodePros\PasswordPolicy\Rules\Characters\Lowercase(1))
->addMustRule(new \CodePros\PasswordPolicy\Rules\Characters\Uppercase(1))
->addMustRule(new \CodePros\PasswordPolicy\Rules\Characters\Digit(1))
->addMustRule(new \CodePros\PasswordPolicy\Rules\Characters\Special(1))
->pctRulesMustPass(75)
->build();
$policy = \CodePros\PasswordPolicy\Builder::create()
->addMustRule(new \CodePros\PasswordPolicy\Rules\Characters\Length(10, 128))
->addMustNotRule(new \CodePros\PasswordPolicy\Rules\ConsecutiveCharacters(3))
->mustPassPolicy($childPolicy)
->build();
/**
* Validate a password
*/
$valid = $policy->validate('user supplied password');
/**
* Get back a list of rules and whether the last validation passed each.
*/
$messages = $policy->getDetailedStatus();
Development
Development Process
- Make your changes.
- Test with PHPUnit.
Build Process
- Choose a new version number according to semver.
- Summarize your changes in CHANGELOG with the new version number.
- Create a git tag with the version number.
- Push the changes and tag.