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

Filament Users Laravel Package

tomatophp/filament-users

Filament Users gives your Filament admin panel complete user management out of the box: CRUD for users, roles and permissions, profile and password editing, avatar uploads, and auth scaffolding. Install it and start managing users in minutes.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

Build vs. buy for admin user management. This is commodity capability, not differentiator. Hand-building the equivalent — user list with search/filter, create/edit forms with password and profile fields, role assignment via Spatie, soft-delete handling, impersonation — is roughly 2–5 developer-days once you include review, edge cases, and QA. Adopting this package compresses first-version delivery to under a day; the real cost shifts from construction to policy configuration and security verification. Frame the purchase as buying a UI module, not buying identity.

A hard release gate that is itself a product decision. The v5.0.3 change is the single most decision-relevant fact here: password reset, bulk delete, roles, and teams actions now consult the Laravel user policy and skip records the policy disallows. Two consequences:

  • Pin ^5.0.3 explicitly. Anything earlier shipped a privilege-escalation path where a user without edit rights could reset another account's password. If any environment ever ran a pre-5.0.3 build, that is a security incident to audit, not a routine upgrade.
  • Absent a registered UserPolicy, the package fails open — any authenticated panel user reaching the resource can reset passwords and change roles. A written, registered policy covering viewAny, view, create, update, delete, restore, forceDelete, and impersonate is an adoption prerequisite, not optional hardening.

Support and RBAC workflow decisions. The filament-shield + filament-impersonate integrations turn a real operational question into a configuration task: can support staff sign in as a customer to reproduce an issue, and under what audit regime? Answer it deliberately — dedicated impersonate ability, blocked for self and super-admins, and logged with impersonator ID, target ID, and timestamp. Note impersonation sits outside the v5.0.3 fix; verify its gate independently.

Internal tooling standardization. Across a portfolio of Laravel/Filament products, this is a plausible shared baseline for user CRUD, roles, and impersonation. Treat it as a platform decision: validate on one product, then promote. Don't declare it a standard off a single integration.

Roadmap reallocation and MVP acceleration. Every day not spent on back-office user screens is a day on differentiating work. Strongest where user admin is not the product — internal ops tools, support consoles, pre-launch MVPs needing a credible admin surface.

Scope clarity for stakeholders. The package is a view layer. Your app retains the User model, auth, guards, tenancy, and policies. It removes the screens, not the identity strategy — and it has no tenant awareness, so multi-tenant scoping is your build.

When to Consider This Package

Adopt when all of the following hold:

  • The panel already runs FilamentPHP 3/4, and the team is fluent in Filament resources, panels, and policies.
  • Spatie Permission is already in use (ideally via filament-shield), and the role guard_name matches the panel's authGuard() — misalignment is the top cause of "role exists but permissions don't work."
  • The users table is conventional (name/email/password, plus avatar/status if used) and you own the User model, which can implement FilamentUser, HasAvatar, and HasRoles.
  • You will commit to writing and registering a UserPolicy before exposing the resource, and to a smoke test that logs in as a limited admin and confirms they cannot reset another's password or escalate roles.
  • You will customize by subclassing the package resource (never editing vendor files), keeping composer update survivable and the code forkable.

Look elsewhere — or budget for a fork — when:

  • The panel isn't Filament, or the team has no policy discipline. The fail-open default makes this a liability in hands that won't write policies.
  • You need multi-tenancy, complex org hierarchies, SSO/SCIM provisioning, or an audit-grade identity system. This is a CRUD accelerator; identity belongs to your app or a dedicated IdP.
  • You already have a UserResource. Route-name and navigation collisions with the package resource are the most common integration failure — plan the migration/removal explicitly.
  • Regulated environment with strict supply-chain rules. Single maintainer, ~91 stars, zero dependents, and a latest-release stamp of 2026-09-14 that warrants provenance verification. Low adoption and bus-factor risk are real: maintain a patch SLA and keep the fork path warm.

Cheap exit, by design. MIT license, subclass-based customization, and no data model of its own mean ripping it out later is bounded work. That lowers the cost of trying it.

How to Pitch It (Stakeholders)

For executives — one paragraph: We can ship back-office user management in under a day instead of roughly a week of engineering, using a mature-pattern MIT-licensed module that plugs into our existing Filament admin panel. It gives us user CRUD, roles and permissions, and support impersonation out of the box, with full localisation. The trade-off is honest: it is a small, single-maintainer package, so we isolate it behind a subclass, pin the version, and treat the security configuration as a required, tested deliverable — not a nice-to-have. Net effect: a week of commodity work removed from the roadmap for roughly a day of setup plus a day of policy and security verification, with a bounded and cheap exit if it disappoints.

For engineering — the asks:

  1. Pin composer require tomatophp/filament-users:^5.0.3. No exceptions; earlier versions have a known privilege-escalation path.
  2. Write and register a UserPolicy before the resource is reachable in any shared environment. Add a CI check that Gate::getPolicyFor(User::class) is not null. Fail-open is the default and it is the headline hazard.
  3. Confirm guard alignment across config/auth.php, the panel's authGuard(), and config/permission.php; run permission:cache-reset after role changes.
  4. Subclass the resource for all customization. No vendor edits. Point the published config at our subclass.
  5. Treat impersonation as a privileged, audited capability: dedicated gate, no self-impersonation, no super-admins, event logged.
  6. Feature-test both policy-present and policy-absent behaviour, plus that disallowed records are skipped, not merely hidden in the UI. Cover custom actions too — they inherit none of the package's policy filtering.

What we are explicitly not buying: an identity strategy, tenancy, or a support contract. Scope the dependency accordingly.

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.
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
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log