, (*1)
A fluent password policy builder library. The package can be used stand-alone or easily added to Laravel., (*2)
Table of Contents
Install
$ composer require joshralph/password-policy
Usage
Policy Builder
$builder = new \PasswordPolicy\PolicyBuilder(new \PasswordPolicy\Policy);
$builder->minLength(6)
->upperCase();
Any of the following methods may be chained on the builder class to build your password policy., (*3)
minLength(length)
length
Type: int, (*4)
Minimum number of characters the password must contain., (*5)
maxLength(length)
length
Type: int, (*6)
Maximum number of characters the password must contain., (*7)
upperCase([min])
min
Type: int, (*8)
Minimum number of upper case characters the password must contain., (*9)
lowerCase([min])
min
Type: int, (*10)
Minimum number of lower case characters the password must contain., (*11)
digits([min])
min
Type: int, (*12)
Minimum number of numeric characters the password must contain., (*13)
specialCharacters([min])
min
Type: int, (*14)
Minimum number of special characters the password must contain., (*15)
doesNotContain(phrases [,phrases])
phrases
Type: string|array, (*16)
Phrases that the password should not contain, (*17)
Example, (*18)
->doesNotContain('password', $firstName, $lastName)
minPassingRules(passesRequired, ruleSet)
passesRequired
Type: int, (*19)
The minimum number of rules in the ruleSet that need to pass, in order for this rule to pass, (*20)
ruleSet
Type: \Closure, (*21)
A closure which is given a new PolicyBuilder instance., (*22)
Example, (*23)
// One of these rules must pass
->minPassingRules(1, function (PolicyBuilder $builder) {
$builder->doesNotContain('password')
->minLength(10);
})
Laravel
If you are a Laravel user, this package can seamlessly integrate with your validators., (*24)
Install Package
Begin by adding the below service provider., (*25)
// config/app.php
'providers' => [
// ...
\PasswordPolicy\Providers\Laravel\PasswordPolicyServiceProvider::class,
],
Define Policies
Within an app service provider (e.g. AppServiceProvider.php) you can start defining password policies., (*26)
// App/Providers/AppServiceProvider.php
// use PasswordPolicy\PolicyBuilder;
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
\PasswordPolicy::define('default', function (PolicyBuilder $builder) {
$builder->minLength(8)
->upperCase(3);
// ...
});
}
You can define as many policies as you require, however it's recommended to stick with 'default' when possible., (*27)
Setup Validation
Once you're policies have been defined, you're ready to start using the policies. A new 'password' validation rule is now available to use., (*28)
// Request class
/**
* Declare validation rules
*
* @return array
*/
public function rules()
{
return [
// ...
'password' => 'required|password'
];
}
The validator will use the 'default' policy by default. To use an alternative policy, add an additional parameter:, (*29)
'password' => 'required|password:admin'