customergauge/password

4.0.0 2020-12-22 10:25 UTC

This package is auto-updated.

Last update: 2024-12-07 16:47:42 UTC


README

Build Status Code Coverage Scrutinizer Code Quality

Password Strength Library 🔒

This library is used to validade the strength of a password. It's composed by a set of Rules that can be used individualy or aggregated by a rule chain.

Installation

composer require customergauge/password

Usage

Single Rule

use Customergauge\Password\Rule\Lowercase;
use Customergauge\Password\Exception\InvalidPassword;

$validate = new Lowercase;
$password = "UPPERCASE";

try {
    $validate($password);
} catch (InvalidPassword $e) {
    echo $e->getMessage();
}

// output: Password should have at least 1 lowercase character(s) but 0 found.

Rule Chain

use Customergauge\Password\Rule\Lowercase;
use Customergauge\Password\Rule\Uppercase;
use Customergauge\Password\Rule\Length;
use Customergauge\Password\RuleChain;
use Customergauge\Password\Exception\InvalidPassword;

$validate = new RuleChain(
  new Lowercase(2),
  new Uppercase(2),
  new Length(10),
  new Digit(3)
);

$password = "ABcd00efgh";

try {
    $validate($password);
} catch (InvalidPassword $e) {
    echo $e->getMessage();
}

// output: Password should have at least 3 digit character(s) but 2 found.

Persist Rule Chain

Use PersistRuleChain class when you want to continue the execution even if a rule throws an InvalidPassword exception.

use Customergauge\Password\Rule\Lowercase;
use Customergauge\Password\Rule\Uppercase;
use Customergauge\Password\Rule\Length;
use Customergauge\Password\RuleChain;
use Customergauge\Password\Exception\InvalidPassword;

$validate = new PersistRuleChain(
  new Lowercase(2),
  new Uppercase(2),
  new Length(10),
  new Digit(3)
);

$password = "ABcd00efgh";

if ($validate($password)) {
    echo "valid";
} else {
    echo "invalid";
    // It is possible to get all exceptions using $validate->exceptions();
}

// output: invalid

Contributing

Contributions are always welcome, please have a look at our issues to see if there's something you could help with.

License

Password Strength Library is licensed under LGPLv3 license.