waguilar33/filament-guardian
Filament Guardian is a Laravel/Filament plugin for managing roles and permissions in your admin panel. It offers a clean UI to assign roles, define permissions, and protect resources, making authorization simple and maintainable.
Assessment basis: v1.14.0 is a security patch for a privilege-escalation path in a Laravel role/permission administration package (Role resource with a Users relation manager, Attach:Role / Detach:Role abilities, and a super-admin role that participates in a Gate::before bypass — i.e. Spatie laravel-permission conventions with a Filament-style admin UI). No prior assessment exists; this is the baseline.
Severity and recommendation: Treat as a high-priority security release. The pre-patch behavior allowed any principal holding Attach:Role to self-attach to super-admin and obtain a full Gate bypass (horizontal-to-vertical escalation to unrestricted authorization), and any principal holding Detach:Role to strip every super admin (denial of administration / lockout). Both are reachable from the shipped UI with no special tooling. Recommend a target patch window measured in days, not sprints.
Architecture fit
super-admin role for non-super-admins, overriding whatever RolePolicy returns. That is defense-in-depth at the UI boundary, not enforcement in the authorization core.RolePolicy. Two sources of truth for the same decision is a durable maintenance cost.super-admin role is now a protected system object with package-owned semantics. Any local customization (renaming, additional protected roles, multi-tenant variants) diverges from upstream behavior.Integration feasibility
composer.lock.super-admin will fail. That is the fix working; those assertions should be inverted, not deleted.Technical risk
super-admin string determines whether renamed or localized installs are actually protected. If literal, teams with Super Admin, translated names, or per-tenant super-admin roles may receive no protection while believing they are patched.Key questions
super-admin role name configurable, and does the guard honor renamed/localized installs? What happens with multiple protected roles?Stack fit
Gate::before super-admin bypass stays, RolePolicy continues to govern every other role.Migration path
Attach:Role or Detach:Role, and identify which humans rely on the Users tab to manage super-admin membership. This list is both the blast radius and the communications list.^1.14, update the lockfile, clear and rebuild config and permission caches, and run the suite.super-admin, and a super admin still can.Compatibility
Sequencing
composer show.Maintenance
super-admin is package-owned and only super admins may touch it. That belongs in code review checklists and in any local extension of the Role resource.^1.14 is appropriate; do not pin below it.Support
Scaling
super-admin name may not map cleanly to per-tenant administration.Failure modes
Ramp-up
Gate::before super-admin bypass semantics and Laravel policy resolution order — that is what makes the "UI-only enforcement" caveat legible. Budget a short pairing session with whoever owns authorization rather than assuming the patch is self-explanatory.How can I help you explore Laravel packages today?