nahid/permit
nahid/permit is a Laravel package for managing roles and permissions. It provides a simple API to assign roles and permissions to users and check access in routes or controllers, helping you add lightweight ACL to your application.
nahid/permit is a ready-made role/permission (ACL) layer for Laravel. Adopting it answers the recurring "do we build our own RBAC?" question with "no — start here and revisit only if requirements outgrow it."Consider it when:
Look elsewhere when:
spatie/laravel-permission, laratrust, bouncer) carry larger communities and clearer upgrade paths.Due diligence before adopting: check issue responsiveness, whether the released version supports your Laravel/PHP versions, whether tests exist, and confirm the package's permission-check API. Budget a half-day spike and a documented fallback plan (wrap checks in your own service so a swap is mechanical).
For executives (one paragraph): Authorization is a small but blocking capability for the next set of customer-facing features. Rather than spend engineering weeks building role management from scratch, we can adopt a lightweight, low-cost Laravel package and ship access-controlled features sooner at minimal licensing cost. The trade-off is dependency risk: the package is maintained by a single author with modest community adoption, so we will contain its use behind a thin internal interface and keep a fallback option. Net: faster delivery, low cost, bounded and reversible risk.
For engineering: A small, Laravel-idiomatic ACL package providing role/permission storage and checks usable from controllers, middleware, and views. Integration is expected to be low-effort (composer require, publish migrations, add a trait, seed roles). Because the project shows modest adoption and a single maintainer, we will (1) pin the version and review the source, (2) wrap all authorization decisions in our own gates/policies so business logic never calls the package directly, (3) add tests around permission checks, and (4) document the swap path to spatie/laravel-permission or native Gates/Policies. If the spike reveals missing coverage for our Laravel version or unclear APIs, we default to native Gates/Policies rather than take the dependency.
Recommendation: Approve for a small, contained MVP scope with the guardrails above; re-evaluate at the next major release cycle or if requirements expand to per-tenant or audited permissions.
How can I help you explore Laravel packages today?