hans-thomas/horus
Horus streamlines roles and permissions in Laravel with Spatie Laravel Permission integration. Batch-create roles/permissions, generate model permissions from policies, and assign permissions to roles quickly. Works with Laravel 10–12 and is supported by Sphinx.
PostPolicy::create() → post.create permission). Supports composable permissions (e.g., post.update + post.publish = post.editor role).transaction.approve by role.For Executives: "Horus cuts the time to implement secure user roles from weeks to days by automating permission registration—letting our dev team focus on features, not access control boilerplate. It’s like GitHub’s repo permissions, but for our Laravel app. For example, we can define that only ‘Content Editors’ can publish posts in one PR, not a manual spreadsheet update. This reduces support tickets from confused users and aligns with our [Q3 security audit] goal."
For Engineers: *"This package wraps Spatie’s permission system with two killer features:
PostPolicy with create(), update(), etc., and Horus auto-generates post.create, post.update permissions. No more manual Permission::create() calls.Role::create(['name' => 'Super Admin']) + Horus::assignPermissionsToRole('Super Admin', ['*'])).
It’s a drop-in for Laravel 10/11/12 apps. Tradeoff: Minimal docs, but the Spatie ecosystem is battle-tested. I’d recommend pairing it with Laravel Horizon for async permission checks if we scale."*For Designers/Product: "This enables us to build permission-aware UIs without backend friction. Example: A ‘User Management’ section in the dashboard can hide the ‘Delete User’ button for non-admins automatically. We can also A/B test role names (e.g., ‘Moderator’ vs. ‘Community Manager’) without breaking the backend."
How can I help you explore Laravel packages today?