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 —
RoleCloneServiceclona un rol base por usuario. - 🖥️ UI Livewire opcional — administra roles, permisos, rutas, accesos y menús desde
/bwp/*. - ⚙️ Comandos Artisan —
bwp:installybwp:sync-routesconfiguran 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.