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.
spatie/laravel-permission, a battle-tested package, making it a natural fit for Laravel applications requiring RBAC (Role-Based Access Control). The package abstracts permission/role management, reducing boilerplate while maintaining flexibility.PostPolicy::update). This aligns with Laravel’s authorization ecosystem (e.g., Gate, Policy).spatie/laravel-permission (v5.x+), which is widely adopted. No conflicting dependencies or version constraints with other auth packages (e.g., Sanctum, Passport).spatie/laravel-permission tables (roles, permissions, model_has_permissions, etc.). No schema migrations are required if the base package is already installed.hans-thomas/sphinx for advanced features (e.g., permission generation from policies). Adds complexity if Sphinx isn’t already in the stack.spatie/laravel-permission sufficient?PostPolicy::delete) a priority, or is fine-grained RBAC enough?spatie/laravel-permission already in use? If not, what’s the effort to adopt it alongside Horus?spatie/laravel-permission but needing simplified bulk operations.spatie/laravel-permission (if not already present):
composer require spatie/laravel-permission
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
php artisan migrate
composer require hans-thomas/horus
php artisan vendor:publish --tag=horus-config
config/horus.php) and update as needed (e.g., default roles).Sphinx (if using policy-based permissions):
// config/horus.php
'sphinx' => [
'enabled' => true,
'policy_namespace' => 'App\\Policies',
],
use HansThomas\Horus\Facades\Horus;
Horus::roles(['admin', 'editor', 'user'])
->permissions(['create_post', 'edit_post', 'delete_post'])
->assignToRoles(['admin' => ['create_post', 'edit_post', 'delete_post']]);
php artisan horus:sphinx:generate
laravel-nova, filamentphp/filament).spatie/laravel-permission.Horus::checkPermission()).config/horus.php, making changes deployable without code updates.spatie/laravel-permission and Sphinx. Updates to these may require Horus adjustments.permission.cache in Spatie) should be enabled.| Scenario | Impact | Mitigation |
|---|---|---|
| Horus/Spatie Update | Breaking changes in APIs. | Test updates in staging; use feature flags. |
| Database Corruption | Permission data loss. | Regular backups; use Spatie’s migrations. |
| Circular Role Dependencies | Infinite loops in permission checks. | Validate role hierarchies during batch creation. |
| Sphinx Misconfiguration | Policy permissions not generated. | Manual fallback to Spatie’s direct methods. |
| Cache Invalidation | Stale permissions after updates. | Configure Spatie’s cache tags properly. |
How can I help you explore Laravel packages today?