masoudi/nova-acl
masoudi/nova-acl adds role-based access control to Laravel Nova. Manage roles and permissions, assign them to users, and restrict access to Nova resources, actions, and tools through an admin-friendly interface designed for Laravel projects using Nova.
spatie/laravel-permission plus a thin Nova UI, or with Nova's own tooling. It argues against allocating roadmap capacity to a competing internal package.composer.json constraints tells us which Nova/Laravel generation it targeted, which is a cheap way to bound how much of our admin surface would be affected if we standardized on one ACL approach.Consider only in these narrow cases:
Look elsewhere when:
spatie/laravel-permission is the de facto standard, actively maintained, and has multiple maintained Nova front-ends.To executives: Do not adopt. The install cost is near zero and the ownership cost is not — archived code with two stars and no maintainers means every future Laravel or Nova upgrade becomes our problem, and every future security review becomes an exception request. This is not a cost saving; it is an unquantified liability. The access-control capability we actually want is available from a maintained open-source library at the same price, so there is no trade-off to debate.
To engineering: Treat this as a reference implementation, not a dependency. Spend at most a day spiking it behind a feature flag, extract whatever schema ideas are useful, and then build the Nova layer on spatie/laravel-permission — where permissions are already guard-aware, tested, and maintained. If we do want to keep this code, we adopt it explicitly as a fork we own, with a named maintainer and a test suite, and we record that decision in the dependency register. What we should not do is add it to composer.json and let it quietly become load-bearing.
Recommendation: No-go as a dependency; go as a one-day reference spike. Revisit only if we deliberately choose to own a forked ACL layer, and even then the fork should be built on the maintained permission library rather than on this code.
How can I help you explore Laravel packages today?