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

Acl Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy on authorization. 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.
  • Roadmap: fine-grained, data-scoped permissions. Supports decisions like "can this user edit this record?" rather than coarse role checks — relevant for multi-tenant workspaces, per-document sharing, delegated admin, and approval workflows.
  • Roadmap: admin/RBAC tooling. Because roles and permissions are persisted as Doctrine entities, an internal "Roles & Permissions" admin screen, seeding, and audit exports are a CRUD project rather than a new subsystem. This is a scope/costing input for any RBAC admin epic.
  • Platform upgrade sequencing. Release 2.1.0 adds Laravel 13 compatibility (PR #76, a framework-support bump with no breaking changes). This keeps the package viable through the next Laravel major and means the authorization layer is not a blocker on the platform-upgrade roadmap.
  • Architecture decision: Doctrine vs. Eloquent. Adopting this package hard-commits the authorization model to Doctrine. That is a one-way-ish door and should be treated as an architecture decision, not a library choice — it constrains hiring, onboarding, and future package selection.
  • Scope negotiation. It provides the mechanism (ACL evaluation, roles, rules). It does not provide policy UX, invitation/role-assignment flows, or an admin UI. Budget those separately; do not let stakeholders read "ACL package" as "permissions feature complete."

When to Consider This Package

Consider it when most of the following hold:

  • The application already uses 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.
  • Authorization requirements are role/permission-based with resource-level granularity (per-entity "who can do what to this object"), not simple gate checks that Laravel's native Gates/Policies already handle comfortably.
  • You expect roles and permission sets to be data, not code — editable by admins, seeded per tenant, changed without deploys.
  • You need hierarchical roles / inheritance or reusable permission masks across many resource types.
  • You are comfortable with a small, single-maintainer-driven open-source dependency and can absorb the risk of slow responses or self-patching (the 2.1.0 release is a compatibility commit, which signals maintenance rather than active feature development).
  • Your team has, or will hire, Doctrine fluency. Otherwise the cognitive overhead lands on every future engineer touching auth.

Look elsewhere (or build on Laravel's native Gates/Policies, or evaluate spatie/laravel-permission) when:

  • You are Eloquent-only, or the permission model is coarse ("admin vs. member").
  • You need a mature ecosystem, extensive docs, an admin UI out of the box, or vendor support.
  • You require guarantees on release cadence, security responsiveness, or an SLA — a one-line changelog for a Laravel major does not constitute evidence of an actively developed roadmap.
  • Your authorization is policy-heavy and code-adjacent (e.g., complex business rules), where hand-written Policies are clearer and more testable.

How to Pitch It (Stakeholders)

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.

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.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin