oneup/acl-bundle
Symfony bundle that provides a Doctrine-backed ACL layer for securing application objects. It integrates with Symfony's security component and offers helpers for checking and managing user permissions in controllers and templates, simplifying fine-grained object-level access control.
ROLE_EDITOR) cannot express that; an ACL layer can. This package is the glue that makes Symfony's ACL component usable — providers, service wiring, and Doctrine object-identity plumbing — so it informs the decision if and only if your codebase is already Symfony 2.x/3.x (it is not a Laravel package; Laravel's analogue is Gates/Policies plus something like spatie/laravel-permission).Consider it when all of these hold:
symfony/security-acl still installed), not Laravel and not Symfony 5+.Look elsewhere when:
spatie/laravel-permission for persisted role/permission tables, or a tenancy package for team-scoped access.To executives (one paragraph): We evaluated oneup/acl-bundle for per-object permissions — the "who can see which specific record" capability behind sharing and multi-tenant features. It solves a real, expensive plumbing problem, but it is a 49-star, zero-dependent, effectively single-maintainer package built on an upstream Symfony component that is no longer maintained. My recommendation is not to adopt it as a strategic dependency. Its value to us is twofold: it is a cheap, low-risk accelerator for an existing legacy Symfony application that already uses ACLs, and it is a worked example of the integration work we would otherwise scope from scratch. For any new build, the supported path is voters/policies (Symfony) or Gates/Policies with a permission table (Laravel), or an externalized authorization service if requirements grow. Budget implication: adopting it saves an estimated few weeks of provider/container wiring but adds unbounded maintenance and audit risk in a security-critical path — a trade we should only accept under a documented legacy-containment exception.
To engineering: This is the wiring layer between Symfony's ACL component and the framework — Doctrine-backed ACL providers, service definitions, object-identity handling. It is competent glue, not a framework. Two hard constraints: it is Symfony-only (no Laravel application), and it targets Symfony versions where symfony/security-acl is still present. Before any use: pin or vendor the source, read it end to end (it is small enough to audit fully), and confirm your Symfony version matrix. If the goal is new functionality, propose voters with an explicit repository query instead — cleaner cache behavior, no ACE tables, no abandoned dependency. If the goal is unblocking an existing ACL-based app this quarter, this package is the shortest path and we should treat it as owned code from day one.
How can I help you explore Laravel packages today?