solution-forest/filament-access-management
Filament Access Management provides a complete roles and permissions UI for Filament admin panels. Manage roles, assign permissions and users, and control access to resources and pages with an easy-to-use interface built on Spatie's permission package.
Architecture fit. Despite the repository's framing ("total different concept"), this is not a new authorization model — it is a presentation and administration layer over spatie/laravel-permission, expressed as Filament resources (roles, permissions, and their assignment to users). The runtime authorization path is unchanged: Laravel gates/policies plus spatie's PermissionRegistrar. That is architecturally good news — the package is additive and non-invasive, it does not own the Gate contract, and removing it leaves the underlying permission tables intact. Product positioning should reflect that: the value delivered is admin ergonomics and self-service RBAC governance, not new access-control capability. Any business case built on "different concept" framing will be oversold on day one.
Integration feasibility. For a greenfield Filament panel, integration is a composer require plus plugin registration in the panel provider, with spatie's migrations published and permissions seeded. Realistic effort: well under a day. For an existing application with hand-rolled gates and policies, the effort is not installation but reconciliation — you temporarily create two sources of truth (code-defined abilities vs. database-defined permissions) and must decide which is authoritative before the UI is exposed to anyone.
Technical risk. Ranked:
teams semantics. Spatie's teams feature scopes permissions per team; whether this plugin's UI is team-aware is a make-or-break question for any multi-tenant product. Silent cross-tenant permission leakage is the failure mode.web/api/sanctum guards require deliberate configuration; mismatches fail silently (permission simply never matches), which is worse than an error.Key questions to resolve before adoption.
teams/multi-tenancy, and how does the UI scope role assignment per tenant?Stack fit. This is only viable if the application already uses (or is adopting) Filament as its admin panel. In a non-Filament Laravel app it delivers nothing — the entire product is the Filament UI. Confirm the four-way version alignment: PHP, Laravel, Filament, and spatie/laravel-permission. That is a matrix, not a single constraint, and it is the most common cause of a failed spike.
Migration path. Do not treat this as a replacement for existing authorization. Recommended sequence:
can: checks. Produce a flat list of abilities.resource.action, grouped by domain) before anyone touches the UI. Hand-edited permission names become permanent debt within weeks.Compatibility. Pin the plugin, Filament, and spatie versions together in composer.json and treat upgrades as a coordinated three-way bump. Add a CI job that runs the panel's admin routes after any dependency update — Filament resource breakage typically surfaces as a 500 on the resource page, not a test failure.
Sequencing.
Maintenance. You inherit three upgrade streams instead of one: Filament, spatie, and this plugin. Filament majors are frequent and breaking; assume one meaningful upgrade project per Filament major and budget it explicitly. With a single maintainer upstream, establish a fork-and-patch contingency now — confirm the MIT license permits it (it does) and that someone on the team can read the resource classes well enough to patch them.
Support. Community-only: GitHub issues, no SLA, no vendor escalation path. Name an internal owner for the permission model — not the plugin, the model. The plugin is replaceable; the taxonomy and the discipline around it are not.
Scaling. The admin UI is control-plane traffic and will never be the bottleneck. The real scaling constraint is spatie's model: permissions are loaded and cached per request, and the teams feature multiplies rows. Practical guidance: keep the total permission count in the low hundreds, group permissions aggressively in the UI so operators aren't scrolling thousands of checkboxes, use Redis for the permission cache, and flush on deploy and after every role mutation. Beyond a few thousand permission rows, expect memory and latency pressure on every authenticated request — not just admin ones.
Failure modes to instrument and document.
Ramp-up. Engineers already fluent in Filament will be productive with the plugin in an afternoon — it is conventional Filament resource code. The genuine ramp-up cost is organizational: teaching ops/support staff that the UI is the only sanctioned path to grant access, and teaching engineers the naming standard and the seeding workflow. Budget a short written runbook covering adding a permission, granting a role, auditing a change, and what to do when access "doesn't work" (check cache, then guard, then team scope — in that order). That runbook will outlive the package.
How can I help you explore Laravel packages today?