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

Fos User Bundle Laravel Package

nmalo/fos-user-bundle

A PHP user bundle inspired by FOSUserBundle, providing user account entities, registration, authentication, and profile management for Symfony-style applications. Helps add configurable user handling and common security workflows to your project.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Headline finding: this is not a Laravel package, and it is not a viable Laravel dependency. nmalo/fos-user-bundle is a fork of FOSUserBundle, a Symfony bundle. The evaluation below treats it as a PHP package, but the framework mismatch is a disqualifying constraint for any Laravel codebase and the primary finding for the assessment.

Architecture fit

  • FOSUserBundle is a Symfony bundle in the classic sense: it registers via config/bundles.php, exposes a fos_user: configuration tree through a Symfony DI extension, and depends on Symfony's HttpKernel, Security, EventDispatcher, Form, Validator, Templating/Twig, and Doctrine\ORM (users are mapped through the FOS\UserBundle\Model\User mapped superclass).
  • Laravel has no bundle system, no DI container compatible with Symfony's compiler passes, and no Doctrine-first persistence layer. Code reuse in a Laravel application is effectively zero — adopting this would mean importing a parallel Symfony security stack (10+ transitive Symfony packages plus doctrine/orm, doctrine/dbal, doctrine/collections) to reimplement functionality Laravel already ships (laravel/fortify, Breeze, Jetstream).
  • Even in a Symfony codebase, this fork is not an architectural fit: FOSUserBundle's upstream was deprecated in favor of Symfony's native user provider plus MakerBundle-generated user classes and symfonycasts/reset-password-bundle. Adopting a fork of a deprecated bundle is a deliberate move onto an end-of-life path.

Integration feasibility: low (Laravel: not feasible without a rewrite)

  • No published integration documentation, changelog, or diff against upstream. The description "Modified Symfony FOSUserBundle" is the entire change surface disclosure.
  • No test suite visibility, no CI badge, no release history to inspect.
  • Realistic effort in Laravel: not an integration task at all — a greenfield auth implementation (2–4 weeks of engineering plus review) that would be inferior to a Fortify/Breeze baseline deliverable in days.

Technical risk (high, concentrated in the security domain)

  • Supply chain: 0 stars, 0 dependents, score 0 means no independent consumption, no downstream bug reports, no community review of the modifications. A single-maintainer, zero-adoption fork of authentication code is an unreviewed code path handling credentials.
  • Upstream abandonment: FOSUserBundle is archived and does not support Symfony 6/7 or current PHP 8.x. Inherited CVEs and PHP deprecations will not be patched upstream, and a 0-star fork gives no signal that the fork author will patch them either.
  • Unauditable delta: "Modified" without a published diff means the fork could contain anything from a trivial template tweak to altered password hashing or reset-token generation. This must be diffed before any other decision.
  • Blast radius: auth code touches password hashing/encoders, password-reset token lifecycle, remember-me cookies, session fixation defenses, and user enumeration behavior. Defects here are silent and are incident-grade, not bug-grade.
  • License: upstream is MIT; the fork must be verified to retain the license and copyright notices, which is a legal-review gate, not a code-review gate.

Key questions to resolve before any further spend

  1. Is the target application actually Laravel, or is this a Symfony codebase mislabeled by the requester? (If Laravel: the answer is no, and the rest is moot.)
  2. What is the exact diff against the last upstream FOSUserBundle tag, and what does it change?
  3. Which Symfony, PHP, and Doctrine versions are declared in composer.json, and do they resolve against a currently supported runtime?
  4. Who maintains the fork, what is their response commitment, and is there any private security-reporting channel?
  5. Are there tests, and do they run in CI?
  6. What drove the fork — a feature need or an abandoned-upstream workaround? (If the former, the feature can almost certainly be built on the native Symfony user provider instead.)
  7. What is the license and attribution status of the modified files?

Integration Approach

Stack fit

  • Laravel target: no fit. The recommended stack is laravel/fortify (headless auth: registration, reset, 2FA) with Breeze or Jetstream for scaffolding, laravel/socialite if social login is required, and Laravel's built-in Hash, RateLimiter, and signed-URL reset flow. This covers the FOSUserBundle feature set (registration, confirmation, login, password reset, profile editing, groups) with first-party, actively patched code.
  • Symfony target: still not this fork. Use symfony/security-bundle with a MakerBundle-generated User entity, symfonycasts/verify-email-bundle, and symfonycasts/reset-password-bundle. If group/role management is genuinely needed, implement it as a domain concern rather than importing a deprecated bundle's model layer.

Migration path

  • From FOSUserBundle (existing Symfony app): treat as a strangler migration, not a swap. Inventory custom event subscribers listening to fos_user.* events, custom form types, and Twig template overrides first — those are the real migration cost. Move to the native user provider behind the same User table so password hashes remain valid, then retire the bundle.
  • Into Laravel: no migration path exists. Reimplement against Fortify; if user records must be shared with a legacy Symfony system, share the database table and preserve the existing password hasher via a custom Hasher implementation, with a rehash-on-login strategy to migrate to bcrypt/argon2id.

Compatibility

  • Verify composer.json constraints against the actual runtime. Expect conflicts: FOSUserBundle-era Symfony packages pin against Symfony 3/4/5 lines and will not co-resolve with Symfony 6/7 or modern doctrine/orm.
  • Twig template overrides and form theme assumptions are the most common silent breakage on minor Symfony upgrades.

Sequencing (with gates)

  1. Day 1 — Framework confirmation. Confirm Laravel vs. Symfony. If Laravel, close the ticket and redirect to Fortify. Gate: scope decision.
  2. Day 1–2 — Fork diff and license review. Diff against upstream tag; read composer.json, LICENSE, and any tests. Gate: security/legal sign-off. Expect this to fail.
  3. Day 3–5 — Alternative spike. Prototype the same feature set on Fortify (Laravel) or native Symfony security (Symfony). This is the comparison baseline the fork must beat.
  4. Week 2 — Decision and ADR. Record the choice and the deprecation/upgrade policy for whichever auth stack is selected.

Operational Impact

Maintenance

  • Effectively unmaintained. Upstream is archived; the fork has no adoption signal. Every future Symfony, PHP, or Doctrine upgrade becomes an in-house patch, and the team owns a security-sensitive fork indefinitely with no upstream to rebase onto.
  • Auth code has the highest patch urgency of any subsystem. An unmaintained auth dependency is a standing on-call liability.

Support

  • No vendor, no SLA, no issue-tracker activity to gauge responsiveness, no security advisory feed. Incident response for a vulnerability in this code is "read the source and patch it ourselves" — which requires a Symfony-fluent engineer available at the moment of the incident.
  • Knowledge concentration risk: whoever performs the fork diff becomes the only person who understands the delta.

Scaling

  • Runtime scaling is not the constraint — auth is I/O-bound and Doctrine-backed user lookups scale conventionally. The scaling problem is organizational: the number of engineers who can safely modify or review this code is one or two, and that does not grow with the team.
  • Multi-tenant or SSO requirements will exceed FOSUserBundle's model quickly and force a re-platform anyway.

Failure modes

  • Silent auth regression after a dependency bump (encoder changes, event-subscriber signature changes) — detected in production, not CI, absent a test suite.
  • Composer resolution dead-end: a transitive constraint blocks a framework security patch; the team is forced into either forking the fork or an emergency migration.
  • Template/theme collision in a host app with its own Twig or Blade layout assumptions.
  • Password hash incompatibility if the fork touched encoders — lockout of the entire user base, unrecoverable without a reset campaign.
  • Unreviewed code path in credential handling from the undisclosed modifications.

Ramp-up

  • Requires Symfony, Doctrine ORM mapping, Twig, and Symfony Security component fluency — none of which a typical Laravel team has. Estimate 2–3 weeks to productive contribution for a strong PHP engineer, versus hours for Laravel's first-party auth stack.
  • For a Laravel team, the ramp-up cost alone exceeds the entire cost of building the equivalent on Fortify.

Recommendation: reject for Laravel on framework grounds; reject for Symfony on maintenance and supply-chain grounds. Spend one day confirming the target framework and diffing the fork, then redirect to laravel/fortify (Laravel) or the native Symfony security stack (Symfony).

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.
unabomber/timezone
delatbabel/contacts
astritzeqiri/g-recaptcha
kevinongko/laravel-genode
developeruz/laravel-analytics
robbiep/afterthedeadline
frankkessler/incontact-laravel-oauth2-rest
jlxh/laravel-userlog
davidmgilo/timetables
qylinfly/role-permission
reflect-digital/conduit
takashato/laravel-vietqr
aitor24/laralang
kraenzle-ritter/entity-relations
dindigital/din-image
pomirleanu/image-colors
sawmainek/laravel-api-generator
delatbabel/jsonresponses
mouhamedfd/permissions-generator
eduplus/qr