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

Novatoolpermissions Laravel Package

silvanite/novatoolpermissions

A Laravel Nova tool for managing roles and permissions directly from your admin panel. Assign permissions to roles and users through a clean Nova UI, register custom permissions, and keep access control organised without leaving Nova.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy on the admin RBAC surface. The decision this most directly informs is whether to spend engineering weeks hand-rolling role/permission CRUD screens, validation, assignment flows, and nav gating — or adopt a Nova-native UI that sits on top of spatie/laravel-permission for the cost of one dependency. This package is the "buy" line item; the in-house estimate for the same three screens is the number it must beat. Get that estimate before the conversation, not after.
  • Who is allowed to own access administration. Moving role and permission changes out of Artisan commands, seeders, and DB edits and into the Nova sidebar is a cycle-time and support-cost decision. It changes who can respond to "give marketing access to X" and how fast — without a developer, a PR, or a deploy. That is usually the real business case, and it is worth quantifying in tickets-per-month.
  • Roadmap scoping for self-serve and ops admin. If the roadmap includes internal ops or customer-facing admin work, this provides a ready editor for the internal side. Adopting it lets you mark specific "roles and permissions" epics done and, more usefully, clarifies what remains genuinely custom: tenancy scoping, approval workflows, audit trails, and delegated administration stay ours regardless.
  • Committing to a permission model. Because the tool is a UI over Spatie's tables, adopting it commits you to Spatie's schema, cache semantics, and guard model. That is a durable architectural decision with downstream consequences for gates and policies — do not let it be made by accident as a side effect of installing a UI.
  • Explicitly not a driver for authorization enforcement. This is an administration interface, not a security control. Gates, policies, middleware, and hasPermissionTo checks remain ours. Adopt it only after the enforcement layer exists; shipping a permission editor with nothing consuming those permissions invites admins to grant access that does nothing and erodes trust in the feature.
  • Risk posture on a dormant dependency. Last release 2019-04-28, ~100 stars, 0 dependents, effectively a single maintainer, MIT licensed. The PM decision is whether a UI convenience justifies an unmaintained dependency in a security-adjacent area — or whether the same screens are cheaper to build in-house on a maintained Spatie release. The mitigating fact is containment: if the UI dies, the Spatie data survives and can be replaced by seeders, Artisan commands, or in-house screens. Score it as a convenience layer, not infrastructure.

When to Consider This Package

Consider adopting when most of the following hold:

  • You are a Laravel Nova shop and intend to remain one. This is a Nova tool; without a Nova licence it delivers nothing, and building on it raises switching cost if a move off Nova is on the horizon.
  • You have standardised, or are about to standardise, on spatie/laravel-permission as the system of record for roles and permissions. This tool is a UI over that library — it is not an alternative to evaluating it, and it makes no sense without it.
  • The permission set is operationally volatile — roles change frequently and new permissions get added by non-developers, so the cost of a deploy per change is real and measurable.
  • The team is small and can accept vendor risk in exchange for speed, with a stated willingness to fork (MIT, small surface) if upstream breaks.
  • Compatibility is proven, not assumed, against your pinned Nova major, Laravel, PHP, and Spatie versions, plus the slug-field constraint (^1.2.3).

Look elsewhere or defer when:

  • You are not on Nova, or are evaluating a move off it.
  • You need a maintained, supported dependency in the authorization path. A six-year-dormant package with one maintainer and no recent releases fails a reasonable "will this still work in two years" bar for access control.
  • Compatibility is unconfirmed across your Nova/Laravel/PHP/Spatie combination. If adopting it forces you to pin Nova or Laravel backwards, reject — the dependency is dictating the platform.
  • Your permission model is static and developer-authored. Enums or a config file plus policies is cheaper and carries no dependency risk.
  • You need multi-tenancy, approval workflows, or audit trails on permission changes. Those are custom builds either way, so the saving shrinks to near zero and the dependency becomes pure overhead.
  • You have not yet evaluated the underlying library. The library is the strategic choice; the UI is the replaceable part — decide Spatie first.

Two questions that gate everything: does composer require --dry-run actually resolve against your real versions, and is the in-house estimate for the same screens small enough that "buy" has a concrete number to beat?

How to Pitch It (Stakeholders)

For executives (one paragraph): We are evaluating a small open-source Laravel Nova add-on that gives administrators a screen for managing user roles and permissions, so routine access changes stop consuming engineering time and no longer require a deploy. The business case is a straightforward build-versus-buy trade: it replaces a few weeks of custom admin-UI work with a free, MIT-licensed dependency, letting operations staff grant and revoke access themselves. The material caveat is maintenance — the package has not been released since 2019 and depends on a specific Nova version, so this is a speed play, not a long-term platform commitment. My recommendation is a time-boxed pilot in a non-production environment, gated on a hard compatibility check; if it fails we stop and either fork it or build the three screens ourselves at modest, low-risk cost. Treat this as cheap validation with a pre-agreed exit, not as new infrastructure.

For engineering leads (the ask): I need three things before sign-off. (1) A compatibility verdict — install against our exact Nova, Laravel, PHP, and Spatie versions in a throwaway branch and report pass/fail with evidence, not "probably fine." The dependency is roughly six years old and tracks two fast-moving frameworks, so a 2019 Nova tool bootstrapping on a current Nova install is a coin flip. (2) A dependency position — confirm spatie/laravel-permission is our system of record, because this tool cements its schema and cache behaviour and I don't want that decided by accident. Confirm guard names match exactly, and that we are not creating a second place where roles get defined. (3) An owned-fork plan — name the person who carries a fork or replaces the UI if upstream goes quiet, and confirm the MIT licence plus code size make that weeks, not months.

Framing the risk honestly: this package scores well on capability and poorly on momentum — a dormant repository with thin adoption and a history of shipping a breaking parameter change inside a patch release. That is acceptable for a convenience layer sitting behind our own authorization logic, and unacceptable if it becomes load-bearing access-control infrastructure. Sequence the work deliberately: prove enforcement first (gates and policies wired to the permissions), then expose the UI; land a slug-parameter audit up front, because the known failure mode is silent wrongness rather than an exception. Position the pilot as cheap validation with a pre-agreed exit, so we neither over-escalate a small dependency nor quietly let an abandoned package become how we control access.

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.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package