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

User Bundle Laravel Package

imatic/user-bundle

Imatic User Bundle is a Symfony package for adding user accounts to your application. It provides configurable user entities, authentication integration, and reusable services for managing users and access control, helping teams ship account features with minimal setup and consistent structure.

View on GitHub
Deep Wiki
Context7

Getting Started

First, the ecosystem check. Despite the framing, imatic/user-bundle is a Symfony bundle, not a Laravel package. There is no service provider, no config/user-bundle.php to publish, and no facade. If you are in a Laravel codebase, composer require imatic/user-bundle will pull in symfony/* components you will never boot, and nothing will auto-register. Treat this as "read it as reference material or port the domain code," not "install and go."

Where to look first, in order:

  1. composer.json — the require block tells you the supported Symfony major version and whether Doctrine ORM/ODM is mandatory. This single file answers "can I even install this on my stack?"
  2. README.md — for a 2-star bundle this is usually the entire documentation surface. Expect a short install snippet and a config sample, not a tutorial.
  3. The bundle class (conventionally src/ImaticUserBundle.php) plus DependencyInjection/Configuration.php — the config tree is the real API contract. Read it before the README; it is more accurate.
  4. Entity/ or Model/ — a user bundle's value is almost entirely in whether it ships a base User you extend, a MappedSuperclass, or just interfaces.
  5. Resources/config/services.* — reveals the service IDs and whether there is a UserManager abstraction worth injecting.

First use case (Symfony app): register the bundle in config/bundles.php, add an imatic_user: block matching the config tree, point your security.yaml provider at whatever user class the bundle expects, and stand up a single login + password-reset flow. Do not adopt the whole bundle at once — prove the user entity and the firewall provider work together before touching registration or profile editing.

Implementation Patterns

Entity extension over entity replacement. Most Symfony user bundles expect you to create your own App\Entity\User that either extends a bundle base class or implements UserInterface + PasswordAuthenticatedUserInterface while reusing the bundle's traits/fields. Follow that shape rather than fighting it — it keeps your schema in your migrations where you can review it.

Inject the manager, not the repository. If the bundle exposes a user manager service, depend on it in your controllers and form handlers instead of reaching into EntityManager directly. That indirection is the only thing that makes the bundle swappable later, and given the maintenance signals it is worth preserving.

Wire security explicitly. Configure the provider by entity class and set the password hasher for your concrete user class in security.yaml. Do not rely on the bundle to guess; explicit providers: and password_hashers: entries are the difference between a working firewall and a UserNotFoundException at 2am.

Build your own controllers. For a package this small, expect it to ship services and entities but not a complete registration/reset UX. The productive pattern is: bundle handles user persistence and password lifecycle, your app owns routes, forms, validation, and emails. That split also means a future fork or replacement is a service-level swap, not a rewrite.

Porting to Laravel. If you genuinely want the behavior in a Laravel app, translate rather than bridge: take the field set and password-update logic, reimplement as an Eloquent model with Hash::make / Hash::check, and drop the Symfony wiring. There is no supported path to running a Symfony bundle's DI container inside Laravel.

Testing. Write one functional test that authenticates through the real firewall with a fixture user, and unit tests around any manager methods you call. The functional test is what catches config drift when you upgrade Symfony.

Gotchas and Tips

  • Maintenance risk is the headline. Two stars, zero dependents, and a low opportunity score means near-zero community surface. Pin an exact version in composer.json, and assume you may be the maintainer. Fork it if you depend on it for anything auth-adjacent.
  • Symfony version constraints bite silently. Check the symfony/* requirements against your app. A bundle written for 4.4/5.x will often "install" against 6/7 and then fail at container compile time on removed aliases or deprecated method signatures.
  • Own your schema. If the bundle ships migrations or a MappedSuperclass, decide early who owns the table. Mixed ownership is how you get a production migration that drops a column you added.
  • Password hashing era mismatch. Older bundles reference the legacy encoder/salt concepts. Confirm it targets password_hashers and that rehashing on login is handled, or you will carry weak hashes forward indefinitely.
  • User enumeration in reset flow. If the bundle provides a password-request service, verify it returns a generic response for unknown emails. Small bundles frequently skip this.
  • Debugging commands are your friend. bin/console debug:config imatic_user, debug:container --tag=..., and debug:router will resolve most "why isn't my config taking effect" questions faster than reading source.
  • Extension points without forking. Override shipped templates under templates/bundles/ImaticUserBundle/, and use service decoration (App\Service\DecoratingUserManager) to change behavior. Reserve forking for actual bugs.
  • Blast-radius rule. Auth is the one subsystem where an unmaintained dependency is genuinely dangerous. Use this bundle for convenience methods and field scaffolding if it earns its place; keep the login, reset, and role-elevation paths in code you control and can audit.
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.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource