Español

Laravel Bitwise Permission

¿Qué es un permiso bitwise?

En lugar de guardar una fila en base de datos por cada acción que un usuario puede hacer, un permiso bitwise es un solo número entero que representa múltiples acciones combinadas. Cada acción es una potencia de 2 (un bit):

view + create + update = 1 + 4 + 8 = 13

Verificar el acceso es una operación AND a nivel de CPU, no una consulta a base de datos:

$access & $bit === $bit

Regla base absoluta: sin el bit view (1) activo, ningún otro bit tiene efecto. El usuario no puede entrar a la vista aunque tenga otros bits activos.

Características

  • 🔢 Núcleo bitwise — combina y compara permisos con aritmética de enteros, sin joins en tiempo real.
  • 🧩 Permisos por ruta — protege rutas nombradas con convención wildcard (leads.*, deals.*).
  • 🧭 Menús con visibilidad por rol — árbol de navegación con propagación automática padre/hijo.
  • 👑 Bypass de super admin — acceso total sin tocar la base de datos.
  • 🧬 Roles por usuario — RoleCloneService clona un rol base por usuario.
  • 🖥️ UI Livewire opcional — administra roles, permisos, rutas, accesos y menús desde /bwp/*.
  • ⚙️ Comandos Artisan — bwp:install y bwp:sync-routes configuran el proyecto en minutos.
  • 🧱 Todo por configuración — bits, permisos base, roles, rutas y menús en un solo archivo de config.

Instalación

composer require henry-ht/laravel-bitwise-permission
php artisan bwp:install
use HenryHt\BitwisePermission\Traits\HasPermissionsTrait;

class User extends Authenticatable
{
    use HasPermissionsTrait;
}
Route::middleware('bwp.permission:create')->group(function () {
    Route::post('/leads', [LeadController::class, 'store'])->name('leads.store');
});
@if(auth()->user()->canCreate())
    <a href="{{ route('leads.create') }}">Nuevo lead</a>
@endif

Guía completa de instalación manual, configuración de role_id, bits, permisos base, super admin, menús y comandos: bitwise.tchenry.com/docs/installation.

Documentación

Guía Descripción
Instalación Requisitos, comando de instalación y setup manual
Configuración Bits, permisos base, super admin, prefijo de tablas
Middleware Protección de rutas y la regla del bit view
Roles Roles base, roles por usuario, RoleCloneService
Permisos Verificar, asignar y combinar permisos en runtime
Menús Árboles de navegación con visibilidad por rol
Ejemplos Flujos completos: creación de usuarios, bits custom, Livewire
Migración Notas de actualización entre versiones

Requisitos

  • PHP 8.2+
  • Laravel 11, 12 o 13
  • Livewire 3 o 4 (solo si usas la UI de administración incluida)

Changelog

Consulta CHANGELOG.md para el historial de versiones.

Contribuir

Las contribuciones son bienvenidas. Lee CONTRIBUTING.md antes de abrir un pull request.

Seguridad

Si encuentras una vulnerabilidad de seguridad, revisa SECURITY.md para el proceso de divulgación — no abras un issue público.

Créditos

Licencia

MIT License. Consulta LICENSE para más información.