jord-jd/laravel-password-exposed-validation-rule
| Install | |
|---|---|
composer require jord-jd/laravel-password-exposed-validation-rule |
|
| Latest Version: | v6.1.0 |
| PHP: | ^7.4||^8.0 |
| Laravel: | 8 – 13 |
| Older releases: | 5 · 6 · 7 |
| License: | LGPL-3.0-only |
| Last Updated: | Jul 18, 2026 |
| Links: | GitHub · Packagist |
🔒 Laravel Password Exposed Validation Rule
This package provides a Laravel validation rule that checks if a password has been exposed in a data breach. It uses the haveibeenpwned.com passwords API via the jord-jd/password_exposed library.
// composer require jord-jd/laravel-password-exposed-validation-rule
use JordJD\LaravelPasswordExposedValidationRule\PasswordNotExposed;
$request->validate([
'password' => ['required', new PasswordNotExposed()],
]);
Compatibility
- PHP: 7.4+ and 8.x
- Laravel: 8.x through 13.x
Installation
To install, just run the following Composer command.
composer require jord-jd/laravel-password-exposed-validation-rule
Please note that this package requires Laravel 8.0 or above.
Usage
The following code snippet shows an example of how to use the password exposed validation rule.
use JordJD\LaravelPasswordExposedValidationRule\PasswordNotExposed;
$request->validate([
'password' => ['required', new PasswordNotExposed()],
]);
If you wish, you can also set a custom validation message, as shown below.
use JordJD\LaravelPasswordExposedValidationRule\PasswordNotExposed;
$request->validate([
'password' => ['required', (new PasswordNotExposed())->setMessage('This password is not secure.')],
]);
Backward Compatibility
PasswordExposed remains available as a backwards-compatible alias for PasswordNotExposed.
Testing / Mocking
If you need deterministic tests, you can inject a checker directly or use a resolver.
use JordJD\LaravelPasswordExposedValidationRule\PasswordNotExposed;
use JordJD\PasswordExposed\Interfaces\PasswordExposedCheckerInterface;
$fakeChecker = new class implements PasswordExposedCheckerInterface {
// Implement interface methods for your test scenario...
};
PasswordNotExposed::resolvePasswordExposedCheckerUsing(function () use ($fakeChecker) {
return $fakeChecker;
});
Non-string values are left to Laravel's other validation rules, so combine this rule with string when the field must contain text. Objects that implement __toString() are checked normally.
Related Packages
Powerful PHP database abstraction layer (DBAL) with many features for database s...
Laravel Serializable Closure provides an easy and secure way to serialize closur...
Cli error handling for console/command-line PHP applications.
Version History
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| v6.1.0 | ^7.4|| | ^8.0|| | LGPL-3.0-only | |
| v6.0.0 | ^7.4|| | ^8.0|| | LGPL-3.0-only | |
| v5.0.1 | ^7.1|| | ^5.1|| | LGPL-3.0-only | |
| v5.0.0 | ^7.1|| | ^5.1|| | LGPL-3.0-only | |
| v4.0.0 | ^7.1|| | ^5.1|| | LGPL-3.0-only | |
| v2.5.0 | ^7.1|| | ^5.1|| | LGPL-3.0-only | |
| v2.4.0 | ^7.1|| | ^5.1|| | LGPL-3.0-only | |
| v2.3.0 | ^7.1 | ^5.1|| | LGPL-3.0-only | |
| v2.2.0 | ^7.1 | ^5.1|| | LGPL-3.0-only | |
| v2.1.0 | ^7.1 | ^5.1|| | LGPL-3.0-only | |
| v2.0.1 | ^7.1 | ^5.1 | LGPL-3.0-only | |
| v2.0.0 | ^7.1 | ^5.1 | LGPL-3.0-only | |
| v1.2.3 | ^5.1 | LGPL-3.0-only | ||
| v1.2.2 | ^5.1 | LGPL-3.0-only | ||
| v1.2.1 | ^5.1 | LGPL-3.0-only | ||
| v1.2.0 | ^5.1 | LGPL-3.0-only | ||
| v1.1.0 | ^5.1 | LGPL-3.0-only | ||
| v1.0.2 | ^5.1 | LGPL-3.0-only | ||
| v1.0.1 | ^5.1 | LGPL-3.0-only | ||
| v1.0.0 | ^5.1 | LGPL-3.0-only |