appsco/assertion-voter-bundle
EDIT_CONTENT if user.subscription.tier >= PREMIUM").Voter classes) with this bundle for consistency and maintainability.ROLE_ADMIN only between 9 AM–5 PM") via custom DecisionMaker implementations.tenant.plan_features).VoterRecord persistence layer.isGranted('ROLE_ADMIN')) to data-driven assertions.account_status or department).ExpressionLanguage + Voter or Casbin for modern ABAC).DependencyInjection)."This bundle lets us replace our ad-hoc permission checks with a declarative, auditable system—like a ‘Google Sheets for access control’—without rewriting security logic. For example, we could automatically grant EDIT_DASHBOARD to users with subscription.tier = ‘ENTERPRISE’ and revoke it when they downgrade. It integrates with our existing Doctrine database and reduces tech debt by consolidating scattered isGranted() calls. The trade-off? It’s a legacy package (last updated in 2014), so we’d need to validate it fits our stack before committing. Alternatives like Casbin offer more features but require a larger migration effort."
*"This is a Symfony-specific ABAC (Attribute-Based Access Control) bundle that lets us resolve roles dynamically (e.g., ROLE_EDITOR if user.team.id == $project.team_id). Key benefits:
DecisionMakerInterface for complex logic (e.g., time-based permissions).VoterRecord entities.Risks:
DependencyInjection (Laravel teams would need a wrapper).Recommendation: Pilot this for one high-complexity feature (e.g., tenant-specific permissions) and compare it to building a custom solution or adopting Casbin. If it works, we can phase it into other modules."*
How can I help you explore Laravel packages today?