Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Oc Pwnedpasswords Plugin Laravel Package

luketowers/oc-pwnedpasswords-plugin

An October CMS plugin that checks passwords against the Pwned Passwords (Have I Been Pwned) database to block known-compromised credentials. Adds validation to backend and frontend forms, helping keep accounts secure with minimal setup.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • The package is an October CMS plugin that is being repositioned as a Winter CMS plugin (Winter.PwnedPasswords), not a standalone Laravel validation package. It integrates through the CMS plugin lifecycle (plugin registration, Plugin.php, settings/migrations), so adoption is only viable if the host application is on Winter CMS (or a compatible October fork).
  • The Winter vendor namespace places it alongside first-party Winter packages. That is architecturally consistent with the platform but signals that October CMS 1.x support is effectively a non-goal going forward.
  • Functionally unchanged in this release: still a password-breach check (k-anonymity range query against HaveIBeenPwned) exposed as a validation rule. No new validation features, configuration surface, or performance work.

Integration feasibility

  • Mechanically simple: a composer require winter/wn-pwnedpasswords-plugin plus removal of the legacy package. No schema changes are described.
  • The blocker is that this is a pure breaking rename with no compatibility shim — no class alias, no metapackage, no transitional release. Consumers cannot run old and new side by side.
  • Every reference to LukeTowers\PwnedPasswords in application code, custom extensions, or another plugin's $require / composer.json dependency declaration must be updated in the same change window.

Technical risk

  • High, concentrated in upgrade mechanics. A CMS plugin rename breaks boot, not just a feature: any plugin declaring LukeTowers.PwnedPasswords as a dependency will fail resolution, potentially taking the whole CMS boot down rather than degrading one form.
  • Silent failure surface. class not found / autoload errors from stale cached plugin metadata are a likely first-symptom; these are cheap to fix but expensive to diagnose in production if cache-clear is not part of the runbook.
  • No deprecation runway. Because the rename sat unreleased on main, v1.1.2 → v2.0.0 is a cliff. There is no 1.2/1.3 release warning consumers, and no alias class to soften it.
  • Ecosystem viability bet. Committing to the Winter namespace means committing to Winter CMS as the maintained platform. Teams still on October CMS must treat this as a fork decision, not a version bump.

Key questions

  1. Is there a backwards-compatibility alias or a replace/provide entry for the old Composer package, or is the old name formally abandoned on Packagist?
  2. What are the minimum Winter CMS, PHP, and Laravel versions for v2.0.0, and are they raised relative to v1.1.2?
  3. Is luketowers/oc-pwnedpasswords-plugin still receiving security fixes, and if so for how long?
  4. Does the plugin identifier change affect persisted settings/migrations, or is state keyed in a way that survives the rename?
  5. When the HIBP API is unreachable or rate-limited, does validation fail open or closed, and is there a cache/TTL to bound outbound calls?

Integration Approach

Stack fit

  • Fits cleanly only on a Laravel-backed Winter CMS install. It is not a drop-in Validator::extend package for a generic Laravel app; there is no evidence of a framework-only usage path.
  • For October CMS shops, this release is the forcing function for a platform decision: stay on unmaintained 1.x naming, or migrate the CMS.

Migration path

  1. Pin luketowers/oc-pwnedpasswords-plugin:v1.1.2 as the explicit current state and freeze automatic updates.
  2. Inventory all references: composer.json requirements, other plugins' $require arrays, LukeTowers\PwnedPasswords namespace usage in custom code, CI configs, and any deployment scripts.
  3. Apply the swap in a single atomic change set — Composer package name, namespace imports, and plugin dependency declarations together. A partial change is worse than no change.
  4. Add composer clear-cache / CMS cache-clear and a plugin refresh step to the deploy runbook.
  5. Verify password validation still fires on the target forms post-deploy (integration test, not just a green build).

Compatibility

  • Hard cutover: old and new packages cannot coexist, and there is no dual-namespace release window. Rollback means reverting Composer and clearing caches, since stale plugin metadata can persist.
  • Third-party plugins that hard-depend on the old identifier are the primary compatibility landmine and are outside your control.

Sequencing

  • Do the reference audit and dependency-graph check before touching composer.json; the audit result determines whether this is a one-hour change or a multi-plugin coordination effort.
  • Land the rename behind a staging deploy with a full boot test, not a unit-test-only gate — the failure mode is CMS boot, not business logic.
  • Only after a clean staging cycle should the version constraint move to ^2.0, and it should move with a pinned lockfile commit.

Operational Impact

Maintenance

  • Net positive if the project is going to Winter anyway: first-party namespace implies ongoing maintenance by the Winter team rather than a single-maintainer community plugin.
  • Net negative if you stay on October: you inherit an unmaintained dependency with a public breach-checking surface.

Support

  • Support channels, documentation, and issue tracking shift from October's community venues to Winter's. Update internal runbooks and on-call references accordingly — the first responder on a 2 a.m. validation failure should not be searching the wrong forum.
  • Vendor rename means old issue history and Stack Overflow answers reference the deprecated namespace; expect documentation drift during ramp-up.

Scaling

  • The dependency is an outbound HTTPS call to the HIBP range API per validation. That is a latency and rate-limit consideration on high-volume registration or password-reset endpoints, independent of this release.
  • Confirm response caching is enabled and sized appropriately; without it, traffic spikes translate directly into third-party API pressure and tail latency on auth flows.

Failure modes

  • Boot failure from unresolved LukeTowers.PwnedPasswords dependencies in sibling plugins — highest severity, blast radius is the whole site.
  • Autoload/class-not-found from cached plugin metadata post-deploy — high frequency, low severity, resolved by cache clear.
  • HIBP API unavailability or rate-limiting — behavior (fail open vs. closed) is unknown and should be established before relying on this for compliance-driven password policy.
  • Rollback residue — reverting Composer without clearing caches can leave the app in a half-migrated state.

Ramp-up

  • Low for engineers already fluent in Winter CMS plugin conventions; the change is mechanical once the reference inventory exists.
  • Medium for October-only teams, where the cost is not the rename but the platform evaluation it forces.
  • Allocate a short spike to answer the five key questions above before committing engineering time to the upgrade; the answers materially change whether this is a maintenance task or an architecture decision.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels