Saltar al contenido
/aldanaCode
Librerías
Libreríaestable

@aldanacode/rbac

Librería de autorización RBAC type-safe para aplicaciones TypeScript.

versión
0.3.1
licencia
MIT
Qué resuelve

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.

Instalación
terminal
pnpm add @aldanacode/rbac
Uso

Cómo se usa

RBAC con permisos type-safe

RBAC con permisos type-safe · ts
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); // true

Persistencia con Redis

Persistencia con Redis · ts
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),
});
Características

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.

Por dentro

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.

Versiones

Historial de cambios

  1. 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.

  2. 0.3.02026-08

    Incorporación del adaptador Redis para persistencia de usuarios y roles.

  3. 0.2.02026-08

    Incorporación de permisos type-safe mediante generics de TypeScript.

  4. 0.1.02026-08

    Implementación inicial del núcleo RBAC con usuarios, roles, permisos y almacenamiento en memoria.