laravel-doctrine/acl
Provides ACL support for Laravel Doctrine, letting you define roles and permissions as Doctrine entities and check access to resources through a Laravel-friendly API. Useful for adding role-based authorization to Doctrine-backed Laravel apps.
laravel-doctrine/acl is a ready-made, entity-backed ACL layer (roles, permissions, rules, resource-scoped assertions) for Laravel applications already running Doctrine ORM. Choosing it removes weeks of design/build work on a permission model that is otherwise easy to get subtly wrong.Consider it when most of the following hold:
laravel-doctrine/orm (or is committed to Doctrine). Adopting this alongside Eloquent-only code adds a second persistence paradigm for one concern — usually a poor trade.Look elsewhere (or build on Laravel's native Gates/Policies, or evaluate spatie/laravel-permission) when:
To executives: This is an access-control component that lets customers and internal admins manage who can see and change what without engineering involvement for every change. It reduces build cost for role- and permission-based features we have already roadmapped, and — importantly — the 2.1.0 release confirms it works with Laravel 13, so it will not become a blocker on our platform upgrade. Risk is moderate: it is a small open-source project with essentially one maintainer, so we should treat it as a dependency we may need to patch ourselves. It is a good fit only because our stack already uses Doctrine; it is not a general-purpose recommendation.
To engineering: Adopt only if we are already Doctrine-based. It gives us roles, permission masks, resource-scoped rules, and caching — the plumbing we would otherwise build. The 2.1.0 change is a Laravel 13 compatibility bump with no API breaks, so upgrading is low-risk and needs no migration work. Two caveats to plan around: (1) it is maintenance-mode in practice — expect compatibility releases, not features, and budget for us to own patches if upstream stalls; (2) it introduces no policy UX or admin tooling, so the role-assignment UI, seeding, and audit trail are our scope. Recommend a timeboxed spike to validate the role/rule model against our two hardest permission cases before committing, since moving off Doctrine-backed ACL later is expensive.
Bottom line: Approve for evaluation and a spike if — and only if — the app is Doctrine-native and we need data-driven, resource-level permissions. Otherwise use Laravel's native Gates/Policies.
How can I help you explore Laravel packages today?