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

Cms User Bundle Laravel Package

th3mouk/cms-user-bundle

User management bundle for the th3mouk CMS, adding user entities, authentication, and admin integration to PHP applications. A lightweight way to handle user accounts, roles, and access within a CMS-driven project.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit: this is a Symfony bundle, not a Laravel package, and that mismatch is the headline. Despite the "Laravel/PHP package" classification, th3mouk/cms-user-bundle is a renamed fork of sonata-project/user-bundle. Its architecture is Symfony kernel bundles, DI container service definitions, Doctrine mapped superclasses, event listeners, and Sonata Admin Admin classes wired to a FOSUserBundle-style user model. None of that maps onto Laravel's service container, Eloquent, HTTP kernel, or package discovery. There is no Laravel service provider, facade, publishable config, or migration in the Laravel idiom. A TPM should read this first line as: the artifact does not belong to the stack it was surfaced against, and no amount of integration work changes its runtime model.

Integration feasibility: zero on Laravel; plausible only inside a legacy Symfony + Sonata app that already depends on the upstream bundle. On a Laravel codebase, "integrating" would mean bootstrapping Symfony's HttpKernel, EventDispatcher, Form, and Sonata Admin alongside Laravel's own kernel — a parallel framework for the most security-sensitive surface in the product. That is not an integration; it is an architecture change disguised as a dependency. On a legacy Symfony/Sonata app, the bundle is Composer-installable, but its only differentiator from upstream is the package name and whatever local patch set the fork carries. The correct move in that world is to depend on sonata-project/user-bundle directly.

Technical risk: high and asymmetric, concentrated exactly where we cannot absorb mistakes. The signals are unambiguous — 0 stars, 0 dependents, score 0. That is not a package with a user community; it is a personal or single-project fork, probably created to satisfy a composer.json name in one CMS build. The compounding risks:

  • Abandonment: no evidence of maintainers, issue triage, or release cadence. Security patches for the underlying user/auth code will not flow to us.
  • Supply-chain: an unmaintained auth/user-management dependency is a high-severity attack surface — user tables, roles, password handling, admin impersonation.
  • Upstream drift: Symfony has moved 5→6→7 and Sonata Admin is on 4.x; a fork with no releases pins the host to dead majors.
  • Auth is not a place to improvise. Whatever we build on top inherits every weakness underneath, and we will not have the community signal needed to know what those weaknesses are.

Key questions to resolve before any code is written:

  1. Is there actually a Symfony/Sonata application in the portfolio, or was this surfaced by an automated dependency scan against a Laravel repo? If the latter, close it as a false positive and add it to the deny-list.
  2. If a Symfony app exists, why this fork rather than sonata-project/user-bundle? What does the fork actually change? Diff it against upstream at the pinned version.
  3. What are the underlying Symfony and Sonata Admin version constraints, and is the host app still inside upstream security support?
  4. Who maintains the fork, and what is our contingency if it goes dark tomorrow — do we vendor and patch, or do we migrate?
  5. What is the auth/user model in the Laravel app today, and is there any requirement this bundle supposedly satisfies that Laravel's built-in auth + spatie/laravel-permission + Filament/Nova does not?

Integration Approach

Stack fit: mismatch, and it should be recorded as such. The package belongs to the Symfony/Sonata ecosystem. Our Laravel stack has no Sonata Admin, no FOSUserBundle, no Symfony bundle kernel. Forcing coexistence means running two frameworks in one runtime for authentication — a combination no TPM should approve for a revenue-critical path.

Migration path: there is no migration, because there is nothing to migrate. The package was never in our system. The functional need it nominally addresses — admin-managed users, groups, roles, audit — is fully covered by maintained Laravel-native substitutes:

  • Auth scaffolding: Laravel Breeze / Jetstream / Fortify.
  • Roles & permissions: spatie/laravel-permission (large install base, active maintenance, documented upgrade path).
  • Admin panel: Filament or Laravel Nova.
  • Role-change audit: spatie/laravel-activitylog or equivalent.

Treat this as a replacement decision, not an integration project. The substitute stack ships in a normal sprint using tools the team already knows.

Compatibility: not applicable for Laravel. No compatible Laravel version, no reliable PHP constraint, no package auto-discovery. If, and only if, a Symfony/Sonata app is genuinely in scope, compatibility must be verified against the specific Symfony/Sonata majors pinned in that app, and the fork's composer.json diffed against upstream before install.

Sequencing — if a Symfony/Sonata app is in scope:

  1. Confirm the app and its Symfony/Sonata versions; diff the fork against upstream sonata-project/user-bundle.
  2. If the diff is trivial (rename only), replace the dependency with upstream. That is the entire remediation.
  3. If the fork carries real customizations, fork upstream ourselves under an internal namespace with a named owner and a documented patch set, so the maintenance burden is visible and budgeted.
  4. Only then evaluate feature work. Do not let this dependency block any Laravel roadmap item; it is orthogonal.

Sequencing — for the Laravel app (the default path):

  1. Pick the substitute stack (framework auth + spatie/laravel-permission + Filament/Nova) and ship auth, roles, and admin in a normal sprint.
  2. Add th3mouk/cms-user-bundle to the deny-list so it does not resurface in dependency scans.
  3. Record the substitute stack as the sanctioned answer to the underlying need, so future discovery does not reopen the question.

Operational Impact

Maintenance: the dominant cost driver, and it is permanent. A zero-star, zero-dependent fork means we are the maintainers from day one. Every Symfony or Sonata upgrade becomes our patch to write. For a security-sensitive surface (users, roles, admin access), that is a non-amortizing tax with no community to share it. Contrast with spatie/laravel-permission, where upgrades are handled upstream and breaking changes are documented and versioned.

Support: no vendor, no SLA, no active issue backlog. The internal escalation path is "whoever forked it." If that person is external or gone, the answer is nobody. In an incident — say, a privilege-escalation report touching user roles — we would be patching blind against an unmaintained base. For an auth component, that is a board-level risk, not routine tech debt.

Scaling: not the primary concern, but the organizational scaling risk is real. The package is admin-CRUD oriented, and Sonata Admin is not built for high-throughput surfaces anyway. The actual scaling problem is that every engineer who touches it must context-switch into Symfony/Sonata idioms, and that knowledge does not transfer to the rest of the Laravel estate. The team gets slower on the one component nobody should own.

Failure modes to plan for:

  • Silent abandonment: no releases for 18+ months, then a CVE in the underlying user bundle with no patch path.
  • Version lock: pinned to an EOL Symfony major, blocking the host app's own upgrade.
  • Fork divergence: the fork's customizations are undocumented, so "just switch to upstream" turns out to be a multi-week migration.
  • False-positive creep: it reappears in automated dependency reports and consumes TPM/security review cycles repeatedly unless explicitly dispositioned.
  • Shadow adoption: an engineer adds it to a Laravel project because the name says "cms" and it appears in a search; nothing in the package prevents that.

Ramp-up: measured in weeks for a Laravel team, not days. Learning Symfony bundles + Sonata Admin + FOSUserBundle before the first safe change is a multi-week proposition — for a component we should not be running. For a team already on Sonata, ramp-up is a day or two, and the real cost is the ongoing ownership described above.

TPM recommendation: reject / do not adopt. Disposition it as a Symfony/Sonata artifact incorrectly surfaced against a Laravel stack. Record the substitute stack (framework auth + spatie/laravel-permission + Filament/Nova) as the sanctioned answer to the underlying need. If a Symfony/Sonata application genuinely exists, redirect to sonata-project/user-bundle upstream and treat this fork as an internal-maintenance decision requiring a named owner and a budget line. Zero stars, zero dependents, and a score of zero are not incidental metadata here — they are the finding.

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.
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource