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

Roles Permissions Api Laravel Package

liberusoftware/roles-permissions-api

A Laravel package that exposes roles and permissions over a REST API. Manage role assignments, permission checks, and access control from any frontend or service, with ready-made endpoints and configurable middleware for your application's authorization layer.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is scoped narrowly as a presentation adapter — a delivery-layer shim that exposes roles and permissions over HTTP on top of a separate domain module. That is a defensible hexagonal/ports-and-adapters boundary, and it is the right shape if we are already committing to the liberusoftware module family. It is the wrong shape if we are not: an adapter without its domain counterpart is not installable in any meaningful sense, and adopting it implies adopting the sibling module-roles-permissions domain package, its persistence assumptions, and its release cadence. We should treat the unit of evaluation as the module family, not this package in isolation.

Integration feasibility. Mechanically this is a standard Laravel package: Composer install, service-provider auto-discovery, presumably publishable config and routes, and middleware-gated endpoints. None of that is hard. The difficulty is evidentiary: with zero stars, zero dependents, and no public integration reports, there is no proof that the package resolves against any public Laravel version, that its route registration survives a real app's middleware stack, or that its API contract is versioned. We would be the first integrator, which means we absorb the discovery cost.

Technical risk.

  • License (NOASSERTION) — blocking. This is not a style nit. An unrecognized license means we cannot assert redistribution or derivative-work rights, and legal will not clear it for a commercial product. Resolve before any code is written.
  • Bus factor of one. Single-vendor, single-maintainer code with no external contributors.
  • Release metadata anomaly. A 2026-10-26 last-release date is either a forward-dated tag, a mistagged build, or a repository metadata error. Any of the three undermines confidence in the release process and complicates pinning a trustworthy version.
  • Composite score 19.78 / 100 with opportunity at 42.57 — the gap reads as "real problem space, immature artifact." That is a build-vs-buy signal, not a buy signal.
  • Contract stability. Presentation adapters are cheap to change and therefore frequently changed. Without a semver guarantee we should expect breaking response-shape changes.

Key questions for the maintainer.

  1. What is the actual license, and can you provide an SPDX identifier and a LICENSE file?
  2. Which Laravel and PHP versions are supported and CI-tested? Where is the test suite?
  3. What is the required peer set — which domain module, which persistence driver, which auth guard?
  4. Is the HTTP contract versioned? Where is the OpenAPI/JSON Schema artifact?
  5. Why is the last release dated in the future? What is the tagging process?
  6. Is there a permission-caching strategy, and how is cache invalidation handled on role mutation?
  7. Who is funding maintenance, and what is the deprecation policy?

Integration Approach

Stack fit. Only viable on Laravel with Composer and the liberusoftware module ecosystem. There is no framework-agnostic path here — the adapter is bound to Laravel's container, routing, and middleware contracts. If any part of our stack is outside that ecosystem (Symfony components, a separate auth service, a non-Eloquent permission store), the adapter becomes a translation layer we have to write ourselves, at which point its value collapses.

Migration path. Do not position this as a replacement for spatie/laravel-permission or Laravel Gate/Policy. It is an edge concern — the HTTP surface for authorization administration — not the authorization decision engine. Two realistic paths:

  • Greenfield: adopt the full module family (domain + adapter) so there is one source of truth. Cleanest, highest lock-in.
  • Brownfield: keep the existing authorization core and use this package, if at all, as a reference implementation for the admin API surface — read the route definitions and response shapes, build our own adapter against our existing domain. Lower risk, and it sidesteps the license question entirely.

A third path — installing the adapter beside an existing permission system — should be rejected. Two admin APIs over two permission stores produces drift and, eventually, a privilege-escalation incident.

Compatibility. Unknown and unverified. Assume nothing about Laravel 11/12 support until CI is inspected. Treat the constraint as "unknown, must be proven in a spike," not "probably fine."

Sequencing.

  1. Legal/license gate (week 1). No engineering time until the license resolves to an OSI-approved SPDX identifier. This is a hard stop.
  2. Dependency and CI audit (week 1). Read composer.json constraints, the test suite, and GitHub Actions. Kill the evaluation if there is no automated test coverage.
  3. Vendor-and-pin spike (weeks 2–3). Fork to an internal namespace, pin the commit SHA, and stand the package up in a disposable Laravel app against our actual auth guard. Validate endpoint behavior, error shapes, and middleware interaction.
  4. Contract capture (week 3). Generate and commit an OpenAPI snapshot so we can detect upstream drift even if we cannot rely on semver.
  5. Decision gate. Proceed to production only if the spike passes and we accept ownership of the fork. Otherwise, harvest the API design and build in-house — realistically 2–3 weeks of engineering, which is cheaper than indefinite stewardship of an unmaintained dependency.
  6. Rollout. Behind a feature flag, internal/admin-only first, with read-only endpoints enabled before any mutating role or permission operation.

Operational Impact

Maintenance. Assume we own it. Zero dependents and a single maintainer mean upstream fixes arrive on the vendor's schedule, if at all. Budget for a standing fork with a documented rebase procedure, and expect that procedure to be exercised rarely enough that it becomes expensive. Add the fork to the dependency-review queue so it does not silently rot.

Support. No community, no Stack Overflow corpus, no third-party tutorials. Support is a direct line to one vendor, with no SLA. Internal runbooks must be written by us, from the spike, because there is no external documentation to fall back on. Escalation path for a production authorization bug is: our on-call engineer, then the vendor, then the fork.

Scaling. The adapter itself is thin — request routing, serialization, and middleware — so it will not be the throughput bottleneck. Scaling pressure lands where it always does: the permission lookup path and its cache. Confirm that role/permission resolution is cached and that mutations invalidate correctly; on a hot authorization path, an uncached per-request permission query will dominate latency long before the adapter does. Statelessness is assumed; verify no session or in-process state is held in the adapter layer, or horizontal scaling breaks.

Failure modes.

  • Privilege exposure via misconfiguration — the highest-severity mode. A publicly reachable role-administration endpoint, or a missing authorization check on the adapter's own routes, is a full compromise. Gate behind admin middleware and network policy; audit route registration explicitly rather than trusting auto-discovery.
  • Adapter/domain version skew — the adapter expects a domain contract the installed domain module no longer provides. Mitigation: pin both, upgrade both together.
  • Silent contract drift — response shape changes on an upstream release. Mitigation: the committed OpenAPI snapshot, asserted in CI.
  • Cache staleness — a revoked role continues to authorize until TTL expiry. Define an acceptable revocation window explicitly and test it.
  • Route collision — auto-discovered routes shadowing or being shadowed by application routes. Verify with route:list on every upgrade.
  • Abandonment — the package stops receiving updates entirely. Low blast radius if we have already forked and pinned; high if we have not.

Ramp-up. Modest for a Laravel-fluent engineer — a day or two to read the routes, middleware, and dependency wiring. The real cost is not learning the package, it is the surrounding ceremony: license clearance, the fork, the spike, the OpenAPI snapshot, and the runbook. Call it 3–4 engineer-weeks to production-grade adoption, versus 2–3 weeks to build an equivalent adapter in-house against our existing permission core — with no license encumbrance, no fork to steward, and full control of the contract. On the evidence available, building is the better trade unless the license clears cleanly and the domain module proves genuinely load-bearing for us.

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.
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib