jbafford/password-strength-bundle
A Symfony bundle for adding password-strength validation to forms and services. It helps enforce configurable strength requirements and gives developers a simple way to encourage safer user passwords without building custom validation logic.
Consider it only when all of the following hold:
Constraint/ConstraintValidator wiring; it will not resolve or autoload in Laravel, Lumen, or Symfony 4+.Look elsewhere when:
Password::min(12)->mixedCase()->numbers()->symbols()->uncompromised() covers this with a maintained, framework-owned dependency and breached-password checking built in. This alone disqualifies it.Bottom line: Do not adopt. Treat as prior art for a one-to-three-day Laravel-native rule.
To executives: This is a small, unmaintained Symfony2 password validator. It is not a candidate for our Laravel stack — installing it would add an orphaned third-party dependency directly inside our authentication path, and it encodes a password model NIST has since moved away from. Laravel already ships this capability, including breached-password checks, and it's maintained by the framework. Recommendation: do not buy or install. Standardize on Laravel's native Password rule. Estimated effort: under one day. Estimated avoided risk: a permanent, unpatched dependency in the one code path attackers care most about.
To engineering: The package is a Symfony2 Constraint + ConstraintValidator pair that scores a plaintext password via character-class heuristics — roughly 50–100 lines of preg_match and strlen, plus translation files, wired through the Symfony kernel. There is no service provider, no publishable config, and no illuminate/* dependency, so composer require will drag in Symfony 2-era components and give us nothing. The equivalent in Laravel is one rule chain: Password::min(12)->mixedCase()->numbers()->symbols()->uncompromised(), centralized via Password::defaults() so registration, reset, and account-change flows share a single policy. If we need richer scoring later (entropy, dictionary rejection, UI meters), spec a thin in-house service around a maintained library like bjeavons/zxcvbn-php rather than resurrecting this bundle. Action: fund a one-day spike to read the source and confirm the algorithm is naive composition counting; if so, close as "reference only," cite it as prior art in the new rule's header, and update the security standards doc. Instrument validation-failure rates after rollout to catch false rejections of strong passphrases, and audit error handlers so no plaintext lands in logs.
How can I help you explore Laravel packages today?