@aldanacode/rbac
Librería de autorización RBAC type-safe para aplicaciones TypeScript.
- versión
- 0.3.1
- licencia
- MIT
Una librería ligera de control de acceso basado en roles (RBAC) para aplicaciones TypeScript. Permite definir permisos tipados, crear roles, asignarlos a usuarios y evaluar autorizaciones mediante una API sencilla. Su arquitectura basada en repositorios permite utilizar almacenamiento en memoria para escenarios simples o Redis para persistencia.
pnpm add @aldanacode/rbacCómo se usa
RBAC con permisos type-safe
import { RBAC } from "@aldanacode/rbac";
type Permissions = {
"users:create": true;
"users:read": true;
"users:update": true;
"users:delete": true;
};
const rbac = new RBAC<Permissions>();
await rbac.addRole("admin", [
"users:create",
"users:read",
"users:update",
"users:delete",
]);
await rbac.createUser("user-123");
await rbac.assignRole("user-123", "admin");
const allowed = await rbac.can(
"user-123",
"users:delete"
);
console.log(allowed); // truePersistencia con Redis
import { RBAC } from "@aldanacode/rbac";
import {
createRedisClient,
RedisRoleRepository,
RedisUserRepository,
} from "@aldanacode/rbac/redis";
const redis = createRedisClient();
const rbac = new RBAC({
roleRepository: new RedisRoleRepository(redis),
userRepository: new RedisUserRepository(redis),
});Qué trae dentro
Permisos type-safe
Los permisos se definen mediante tipos de TypeScript, evitando errores tipográficos y restringiendo las autorizaciones a permisos válidos.
Control de acceso basado en roles
Permite crear roles, asociar permisos y asignar roles a usuarios para evaluar sus capacidades dentro de la aplicación.
Almacenamiento desacoplado
La lógica de autorización depende de repositorios, permitiendo cambiar la estrategia de persistencia sin modificar el dominio.
Adaptador Redis
Incluye repositorios para almacenar usuarios y roles utilizando Redis como backend de persistencia.
API minimalista
La API principal se mantiene pequeña y enfocada en las operaciones esenciales de autorización.
Compatible con múltiples arquitecturas
Puede integrarse en APIs, aplicaciones backend y otros servicios TypeScript sin acoplarse a un framework específico.
Decisiones de diseño interno
- 01
Domain-driven core
El núcleo contiene las entidades User, Role y Permission, manteniendo las reglas principales de autorización independientes de infraestructura.
- 02
Repository pattern
Las interfaces RoleRepository y UserRepository desacoplan el dominio de los mecanismos concretos de almacenamiento.
- 03
Adapters intercambiables
La librería proporciona implementaciones InMemory y Redis que cumplen los mismos contratos de repositorio.
- 04
Dependency injection
RBAC permite proporcionar repositorios personalizados para adaptar la librería a diferentes sistemas de persistencia.
- 05
ESM y TypeScript
El paquete se distribuye como módulos ESM con declaraciones de tipos y exports separados para el núcleo y Redis.
Historial de cambios
- 0.3.12026-09
Preparación y publicación del paquete npm, metadatos, documentación, configuración de publicación y validación como consumidor externo.
- 0.3.02026-08
Incorporación del adaptador Redis para persistencia de usuarios y roles.
- 0.2.02026-08
Incorporación de permisos type-safe mediante generics de TypeScript.
- 0.1.02026-08
Implementación inicial del núcleo RBAC con usuarios, roles, permisos y almacenamiento en memoria.