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

Forgot Password Bundle Laravel Package

imaximius/forgot-password-bundle

A PHP bundle that adds a complete forgot-password flow: request reset links, generate and validate secure tokens, send reset emails, and update passwords. Configurable templates and storage make it easy to integrate into existing applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Headline finding: This is not a Laravel package. The repository (CoopTilleulsForgotPasswordBundle, republished under the imaximius vendor namespace) is a Symfony2 bundle. Its architecture is built around Symfony's Bundle class, DependencyInjection extension, EventDispatcher, Symfony routing (YAML/XML), and — in most versions — Doctrine ORM mappings. None of these primitives have equivalents that Laravel can consume.

Architecture fit — poor. A Symfony bundle's entry point is AcmeBundle::class registered in AppKernel/bundles.php. Laravel's equivalent is a Service Provider with register()/boot(), package auto-discovery via composer.json extra.laravel, and container bindings against Laravel contracts (Illuminate\Contracts\Auth\PasswordBroker, CanResetPassword, Illuminate\Notifications\Notifiable). There is no adapter layer, no bridge package, and no realistic path to "install and configure." Using this from Laravel means rewriting it.

Integration feasibility — low, and the effort is misrepresented by the package name. A faithful port requires re-implementing at minimum:

Symfony artifact Laravel equivalent that must be written
Bundle + DI Extension + Configuration tree Service Provider + config/password_reset.php
Doctrine entity/repository for reset tokens Eloquent model + migration + expiry index
Symfony Mailer / Swiftmailer templates Notification / Mailable
Symfony routing + controllers routes/api.php + controller or actions
Symfony event subscribers Laravel events/listeners
Token generator service Keep or replace with Laravel's PasswordBroker

At that point you have written the feature; the bundle contributed design inspiration only.

Technical risk — high, and concentrated in a security-critical surface. Password reset is a high-severity feature: token entropy, single-use enforcement, TTL and clock handling, account-enumeration-resistant responses, rate limiting, and email-link host validation. Every one of those is a potential vulnerability if inherited from an unmaintained source. The health signals are uniformly negative:

  • 0 stars, 0 dependents — no community validation, no downstream code review, no bug reports as evidence of use.
  • Last release 2021-01-27 — over four years stale; predates modern PHP 8.2/8.3 idioms and current Symfony/Laravel security patches.
  • Vendor namespace mismatch — an imaximius republication of a CoopTilleuls codebase with no stated diff. You cannot tell what was changed or why. That is a supply-chain question you should not have to ask about authentication code.
  • No disclosed CVE history is not reassurance here; it correlates with nobody looking.

Key questions to resolve before any further evaluation:

  1. Is the target application actually Laravel, or is this being evaluated because the requirement is "forgot password" and the search surfaced a PHP package? The answer determines whether this is a port project or a non-starter.
  2. If Symfony is the target, why this fork rather than the upstream coopTilleuls/forgot-password-bundle? What patch does the fork carry, and is that patch still needed?
  3. What PHP and framework version constraints does composer.json declare, and do they resolve against our runtime?
  4. Does the bundle require Doctrine ORM, or does it ship a Doctrine-agnostic storage interface? (Affects port effort materially.)
  5. Who maintains the imaximius namespace, and is there any commitment to security response?
  6. Does our existing auth stack already satisfy this requirement natively?

Integration Approach

Stack fit — none for Laravel. Laravel ships this feature in core: the Illuminate\Auth\Passwords broker, the CanResetPassword contract, Password::sendResetLink() / Password::reset(), the password_reset_tokens table, and signed, expiring notification URLs. It is maintained by the framework team, covered by the security release process, and already installed. Evaluating a third-party Symfony bundle to supply it is a net-negative trade.

Recommended migration path — do not port; replace. If the goal is to reuse the bundle's behavior (configurable token TTL, throttling, email delivery, single-use reset), express those requirements as acceptance criteria against Laravel's native broker and configure them:

  • Token lifetime and throttle → config/auth.php passwords.users.expire / .throttle.
  • Storage → the stock password_reset_tokens migration (add a prune job for expired rows).
  • Delivery → a ResetPassword notification; queue it.
  • Routing → two routes (request link, submit reset) behind throttle middleware.
  • Events → PasswordResetLinkSent / PasswordReset for audit logging.

Estimated effort: hours, versus days-to-weeks for a bundle port with equivalent test coverage.

Compatibility. Expect PHP 7.x-era constraints and Symfony 4/5 APIs from a January 2021 release. Laravel 10/11 run on PHP 8.1+ with stricter typing and no Symfony bundle loader; the package will not autoload into a Laravel app, and composer require will either fail dependency resolution or install dead code.

Sequencing, if the requirement genuinely demands this codebase:

  1. Confirm framework target — resolve question 1 above first; everything downstream branches on it.
  2. Laravel target → run a one-day spike on the native broker against the acceptance criteria. Close the ticket.
  3. Symfony target → evaluate upstream coopTilleuls first; only fall back to this fork if it carries a specific, documented patch we need.
  4. Either target → if any third-party code is retained, vendor it into the repo with a pinned commit, add it to the dependency-review and CVE-scanning pipeline, and assign an internal owner before merge.
  5. Never adopt it as a transitive dependency on the strength of its name alone.

Operational Impact

Maintenance — assume unmaintained. A single namespace, no release in four years, no stars, no dependents. There is no upgrade path to PHP 8.3+, no Symfony 7 support, and no expectation of a security patch. If adopted, it becomes permanently our fork to maintain — including re-reviewing the authentication logic ourselves, which defeats the purpose of using a package.

Support — effectively zero. No maintainer SLA, no issue triage, no documentation beyond the upstream README, no community to escalate to. The escalation path is our own on-call engineer reading unfamiliar Symfony idiom during an incident. For a login-path feature, that is the wrong support model.

Scaling — not the constraint. Password reset is low-volume with bursty peaks (credential-stuffing waves, post-outage retries). The token table grows monotonically and needs a scheduled prune plus an index on created_at/email; unpruned tables degrade quietly over quarters. The real capacity dependency is the mail provider, not this code. The scaling concern that does matter is abuse: without per-account and per-IP throttling, the endpoint becomes a free email-bombing relay and an enumeration oracle.

Failure modes to plan for:

  • Boot failure — unresolvable Symfony classes in a Laravel container; manifests as an app-wide crash, not a scoped feature failure.
  • Enumeration leak — differing responses or timings for known vs. unknown accounts; a security finding, not a bug ticket.
  • Token lifetime drift — TTL computed on one clock, validated on another across load-balanced nodes; users see "link expired" immediately.
  • Non-single-use tokens — replayable reset links if invalidation isn't enforced transactionally.
  • Mail delivery failure — queued notification drops; user is locked out with no signal to support.
  • Silent staleness — no CVE feed watching an abandoned package, so a future disclosure goes unnoticed until exploitation.

Ramp-up — negative value. There is no durable skill to build here. Learning Symfony bundle conventions inside a Laravel team is spent effort with no reuse, and the codebase is too small to justify a knowledge-transfer session. For a Symfony team, wiring the upstream bundle is roughly a day of config and route work — but that team should be evaluating upstream, not this fork.

TPM recommendation: Close as rejected — framework mismatch plus abandonment risk on a security-critical path. Re-scope the requirement against Laravel's native password broker; if a Symfony target surfaces later, re-open against the upstream coopTilleuls package with a maintainer and version-support check.

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.
ippanelcom/laravel-sdk
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus