Weave Code
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

Horus Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Accelerate RBAC Implementation: Reduces time-to-market for role-based access control (RBAC) by abstracting permission/role registration into reusable, policy-driven workflows. Ideal for SaaS platforms or internal tools requiring granular user permissions (e.g., admin dashboards, multi-tenant systems).
  • Policy-First Development: Aligns with Laravel’s policy system, enabling developers to define permissions declaratively (e.g., PostPolicy::create()post.create permission). Supports composable permissions (e.g., post.update + post.publish = post.editor role).
  • Bulk Operations: Enables batch role/permission creation during migrations or onboarding (e.g., pre-seeding permissions for new customer tiers in a marketplace).
  • Build vs. Buy: Avoids reinventing RBAC logic for Laravel apps, reducing technical debt compared to custom solutions. Lower maintenance than enterprise-grade tools (e.g., Casbin) for projects with moderate complexity.
  • Roadmap Prioritization: Justifies investing in admin UIs or audit logs for permissions (since Horus handles the backend plumbing). Example: A fintech app could use this to gate features like transaction.approve by role.

When to Consider This Package

  • Avoid if:
    • Your app uses non-Laravel backends (e.g., Django, Node.js).
    • You need fine-grained attribute-based access control (ABAC) (e.g., "users can edit posts in their timezone").
    • Your team lacks Laravel/PHP expertise (steep learning curve for Spatie’s underlying system).
    • You require real-time permission sync (Horus is not a caching layer; use Redis with Spatie for scalability).
  • Look elsewhere if:
    • You’re using Laravel Nova/Vue.js for admin panels—consider Nova Permissions or Filament for tighter integration.
    • Your permissions are dynamic (e.g., generated via ML)—use a rules engine like Casbin.
    • You need graph-based policies (e.g., "Admins can do anything except delete users").

How to Pitch It (Stakeholders)

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:

  1. Policy-to-Permission Sync: Define a PostPolicy with create(), update(), etc., and Horus auto-generates post.create, post.update permissions. No more manual Permission::create() calls.
  2. Batch Role Setup: Seed roles/permissions in a single migration (e.g., 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."

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.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky