roots/wp-password-bcrypt
A WordPress plugin that replaces WordPress’s default password hashing with bcrypt using PHP’s password_hash and password_verify. Existing passwords are rehashed automatically on login, improving security without changing the user experience.
Architecture fit
roots/wp-password-bcrypt is a WordPress plugin, not a Laravel/PHP package in the Composer/library sense. It ships no service provider, no facades, no config publishing, and is not installable via composer require. It works by overriding WordPress's pluggable password functions (wp_hash_password, wp_check_password, wp_set_password) and storing hashes with a $wp$ prefix ahead of the standard bcrypt $2y$ payload.Integration feasibility
wp plugin install / Composer via wpackagist / mu-plugin autoload. Low effort, no application code changes.wp_set_password action, PHP 8.0+ floor, PHP 8.0–8.4 CI matrix, Dependabot, and #[\SensitiveParameter] on $password/$hash.SensitiveParameter change is genuinely valuable: it prevents plaintext passwords and hashes from appearing in stack traces and error logs on PHP 8.2+. This is a security hygiene improvement, not a functional one (the attribute is inert on 8.0/8.1).Technical risk
$wp$ prefix, deactivating the plugin without a migration means WordPress core cannot verify existing credentials — effectively locking out every user. Any decommission plan must include hash re-verification/rehashing on next successful login, not a straight plugin deletion.Key questions
wp_set_password signature change)?Stack fit
wpackagist-plugin/wp-password-bcrypt.Hash facade already provides bcrypt/Argon2id with SensitiveParameter-aware exception handling. If the query is "should our Laravel app adopt this?", the answer is no, and the assessment should be closed.Migration path
1.3.0, not ^1.3) since there will be no 1.3.1. Treat it as a vendored artifact.Compatibility
ArgumentCountError/parameter-mismatch class of bug for callbacks hooked to wp_set_password — relevant if we have custom code on that action (common in password-reset notification and audit-logging plugins).wp_set_password behaves differently per-site vs network.Sequencing
wp_set_password hooks.Maintenance
Support
Scaling
Failure modes
$wp$ prefix means core cannot verify hashes if the plugin is deactivated. Highest-impact failure mode; must be gated behind a tested rehash migration.wp_set_password expecting the pre-6.7 signature. Low likelihood, but worth a smoke test on password-reset flows.SensitiveParameter, but only on PHP 8.2+. On 8.0/8.1 the exposure remains; if that matters, the argument is for pushing to 8.2+ rather than staying on 8.0.Ramp-up
$wp$-prefixed hash in the database know why it is there. Add that to the platform documentation while the context is fresh.Recommendation: Upgrade WordPress properties on PHP >= 8.0 to 1.3.0 as the terminal pinned version, capture the EOL decision and the hash-migration constraint in the platform runbook, and open a follow-up to evaluate a core-native or forked replacement. Reject for any Laravel/non-WordPress PHP estate.
How can I help you explore Laravel packages today?