tonystore/livewire-permission-manager
A Livewire-powered permission manager for Laravel that lets you manage roles and permissions through a simple, reactive UI. Integrates with Spatie's permission package to handle role assignment and access control without leaving your dashboard.
Architecture fit. This is a Laravel package that layers Livewire components on top of a role/permission backend (almost certainly Spatie's laravel-permission, given the domain and the conventional shape of these packages). It fits cleanly into a server-rendered Laravel monolith with an existing Blade/Tailwind admin surface. It is a poor fit for API-only backends, Inertia/Vue or React SPAs where admin UIs live in a separate front end, or teams already standardized on Filament, which has mature permission-management plugins and would make this package redundant. The package's job is narrow — CRUD over roles, permissions, and their pivot assignments — so the architectural question is less "does it fit" and more "do we want a UI we don't own sitting directly on the authorization tables."
Integration feasibility. Mechanically straightforward: composer require, service-provider auto-discovery, publish config and views, register routes behind auth middleware, optionally run migrations. The feasibility risk is not installation, it's the implicit contract with Spatie. Verify whether the package declares a hard dependency on a Spatie major version, whether it ships its own migrations or reuses roles/permissions tables, and whether it respects guard names, teams mode, and multi-tenancy. Also verify Livewire version constraints — v3 was a breaking rewrite and a large share of v2-era Livewire packages were never updated.
Technical risk. Adoption signals are weak: 17 stars, zero dependents, single maintainer. That means effectively no third-party field testing and no downstream projects surfacing bugs before you do. The mitigating factor is domain severity: the blast radius here is authorization. A cosmetic bug in a CRUD UI is trivial; a route that isn't properly gated, a missing policy check, or a permission-cache invalidation bug is a privilege-escalation vector. Treat this as a security-relevant dependency, not a convenience package. MIT licensing is the real safety valve — you can fork and vendor it if the maintainer goes quiet.
Key questions to resolve before adoption.
laravel-permission versions are supported, and is the constraint ^ or pinned?middleware/gate config value, or hardcoded checks? Is there a documented super-admin gate?Stack fit. Assumes Laravel 10+, Livewire, Blade, and Spatie laravel-permission. If your admin is already Livewire, the marginal integration cost is low. If you're on Inertia or Filament, stop here and evaluate a Filament permission plugin first — the build-vs-buy comparison is unfavorable for a 17-star package when a maintained alternative exists in your existing UI framework.
Migration path. Two distinct paths. Greenfield: install Spatie first, get roles/permissions seeded and working via code, then add this package as a management surface on top — never the other way around. Brownfield: you already have Spatie in production with real role data. Before installing, run composer why spatie/laravel-permission and confirm the package won't force a Spatie major-version downgrade or upgrade. Take a schema and data snapshot of the roles, permissions, and pivot tables before the first install in staging. If the package ships its own migrations that overlap Spatie's tables, do not run them.
Compatibility. Pin exact versions for both this package and Spatie in composer.json. A caret constraint on a 17-star package on the authorization path is an unacceptable supply-chain risk. Verify the resolved dependency graph on a staging clone with production data, not on a fresh app — fresh installs hide version conflicts.
Sequencing.
super-admin gate plus an IP allowlist or separate guard, and ideally only enabled in non-production at first.Maintenance. Assume single-maintainer risk and plan for a fork. Budget roughly one to two engineer-days per quarter for dependency watching, upgrade testing, and patch review. Assign a named internal owner — an unowned package sitting on the authorization tables is an org risk. Track the upstream repo for releases; the most recent release date is recent enough to suggest the maintainer is active today, but 17 stars is not a track record.
Support. GitHub issues only. No SLA, no vendor, no commercial backing. Your escalation path for a production authorization bug is "read the source and patch it yourself," so factor in-house Laravel/Livewire competence into the decision. Don't adopt this if the team can't read the package source.
Scaling. The UI itself scales fine to thousands of roles and tens of thousands of permissions if the roles index is paginated and relationships are eager-loaded — verify both, because Livewire components that lazy-load relations on a large permission set will produce N+1 storms and slow renders. The real scaling constraint is Spatie's permission cache: every write from this UI must invalidate it, or users will see stale authorization until the cache TTL expires or a deploy clears it.
Failure modes to plan for.
Ramp-up. Installation and first use is measured in hours for a competent Laravel developer. The honest cost is the review: plan for roughly one engineer-day of security and behavior review before production, plus a short runbook for on-call covering "role change not taking effect → flush the permission cache" and "how to make an emergency role change via artisan if the UI is down." Ramp-up for non-Laravel engineers is effectively zero-value — this UI is only useful to people who already understand the underlying permission model, so restrict access accordingly rather than treating it as a self-service tool for the whole org.
How can I help you explore Laravel packages today?