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 Laravel Package

amethyst/user

Amethyst User is a Laravel package for managing application users, providing a ready-made foundation for user accounts, profiles, and authentication-related workflows so you can add user handling to your project without building it from scratch.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. amethyst/user is a domain module from the Amethyst CMS ecosystem: a modular, Doctrine-backed layer sitting on top of Laravel. It supplies the User entity, its repository/persistence mapping, and user-management services — not a drop-in authentication scaffold. It fits cleanly only if the target application is already Amethyst-based, or if the team has deliberately adopted Doctrine entity mapping inside Laravel. It does not fit a conventional Eloquent-first Laravel application without an adapter layer, dual-ORM coexistence, and re-implementation of the guard/provider wiring.

Integration feasibility. Low. The package is a leaf in an abandoned module graph: zero stars, zero dependents, no downstream validation, no community troubleshooting trail. Composer constraints almost certainly pin an EOL Laravel branch (5.x/6.x) and PHP 7.x against Doctrine ORM 2.x, and it will carry a hard dependency on amethyst/core for container bindings, module registration, and configuration loading. Any adoption is a fork-and-modernize project, not an install-and-configure task. Budget it as a source-extraction effort, not a dependency addition.

Technical risk. Concentrated in the security-sensitive path. User modules own password hashing parameters, remember-me tokens, password-reset token lifecycle, email verification, and guard/session interaction — all areas where stale code becomes a vulnerability rather than a bug. Secondary risks: tight coupling to Amethyst's container and module bootstrap (making the package non-extractable in isolation), Doctrine proxy/lazy-loading semantics diverging from Eloquent expectations, and no observable CI, release cadence, or maintainer presence to anchor an upgrade decision.

Key questions.

  • What are the exact composer.json constraints for PHP, Laravel/Illuminate, and Doctrine? Is there a version that runs on a currently supported Laravel?
  • What is the transitive closure — does it require amethyst/core, amethyst/auth, or other unmaintained siblings, and are any of those load-bearing?
  • Where does authentication actually live: in this package, in a sibling auth package, or delegated to Laravel's native guards? This determines whether "user" is a data model or the security boundary.
  • Which password hashing algorithm and cost factor are hardcoded, and is rehashing on login supported?
  • Is there any test suite, and does it cover token expiry, credential rotation, and account state transitions?
  • What is the license/attribution obligation for a fork (MIT — permissive, low friction) and is the upstream willing to accept patches?
  • Does the entity model assume a schema shape (soft deletes, roles, multi-tenancy columns) that conflicts with ours?

Score reading. The gap between the 4.15 opportunity score and the 0.40 maturity score is the whole story: the domain model has latent reference value, but the artifact is not production-viable as a dependency. Treat it as reference architecture to mine, not a component to ship.

Integration Approach

Stack fit. Compatible only with Laravel + Doctrine. If the target application is Eloquent-native, adoption forces two persistence paradigms into one codebase — an ongoing tax on every developer who touches the user model. If the target is already Doctrine-based, the fit improves materially, but the Amethyst module conventions still bind you to a framework shell that is itself unmaintained.

Migration path. Three options, in descending preference:

  1. Extract, don't depend. Vendor the entity and service classes into the application's own domain layer, strip the Amethyst container coupling, and reimplement persistence against the existing ORM. Lowest long-term risk, highest upfront effort.
  2. Fork and pin. Fork to an internal namespace, pin the transitive dependency set, and own the upgrade path. Viable only if the upstream composer constraints resolve against a supported framework version today.
  3. Direct install. Not recommended at zero dependents and zero maintainers; the blast radius of an unpatched auth dependency exceeds any time saved.

Compatibility. Establish a version matrix before committing: PHP runtime, framework branch, Doctrine ORM, database driver, and cache driver for Doctrine metadata. Assume nothing is verified — the absence of dependents means no one has published a working combination.

Sequencing. Do not interleave this with feature work.

  1. Audit — read composer.json, map the transitive graph, confirm whether auth is in scope. Timebox: days, not weeks.
  2. Decision gate — extract vs. fork vs. abandon. Abandoning is a legitimate outcome given the 0.40 maturity score.
  3. Isolate — stand the module up in a scratch service, get the entity persisting, and confirm the schema is compatible.
  4. Harden — modern password hashing, token expiry, rate limiting, session fixation defenses.
  5. Integrate — wire in behind an interface that hides the Amethyst provenance, so a future replacement is a swap rather than a rewrite.

Build-vs-adopt. A conventional Laravel application ships a user model, migrations, password reset, and email verification out of the box. The realistic value here is the domain modeling of user state and roles — perhaps two days of design reading — against a multi-week modernization effort. If there is no existing Amethyst investment, the expected value of adoption is negative.

Operational Impact

Maintenance. You inherit the package permanently. Bus factor moves from one to zero the moment you depend on it; there is no upstream to absorb framework upgrades, PHP deprecations, or security patches. Every future Laravel major becomes an internal migration project.

Support. None. No maintainer response, no issue history of substance, no Stack Overflow corpus. Internal engineers become the sole source of truth, and that knowledge is undocumented by definition.

Scaling. Unknown and unbenchmarked. Expect Doctrine hydration and proxy behavior to drive N+1 queries on user-list and role-resolution paths; the user table is a hot row for session and auth lookups. At low volume this is invisible; at volume it becomes a caching and read-replica conversation that the module was never designed for. Multi-tenancy, if needed, is not addressed and will require schema surgery.

Failure modes. The dangerous ones are silent: a misconfigured guard falling through to an unauthenticated state, stale Doctrine metadata cache after an entity change, password hash algorithm drift locking out users on upgrade, reset tokens with no expiry, and dependency rot exposing a known CVE with no patch path. Each of these fails quietly and is discovered in production.

Ramp-up. A mid-level Laravel developer needs roughly two to four weeks to become productive across Doctrine entity mapping and Amethyst's module bootstrap — time spent on framework archaeology rather than product work. Add a dedicated security review before any authentication path ships. Onboarding cost per additional engineer stays elevated for as long as the module is in the codebase, because the conventions are non-idiomatic and undocumented.

Recommendation. Do not adopt as a dependency. Mine it for domain-model reference if user/role structure is still an open design question, and otherwise build on the framework's native auth. The opportunity score reflects latent design value; the maturity score reflects whether that value can be safely operated. It cannot.

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.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource