JSPM

@irondome/core

0.1.3
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 56
    • Score
      100M100P100Q72662F
    • License MIT

    Policy-based access control (PBAC) engine for Irondome

    Package Exports

    • @irondome/core

    Readme

    @irondome/core

    Motor de autorização (PBAC, ReBAC, Audit) — sem acoplamento a frameworks.

    Pilar: políticas e decisões de acesso. Produz PolicyResult a partir de Subject, Action e Resource.

    Parte do monorepo Irondome — o mesmo espírito do README principal: quem decide o que cada pessoa pode fazer — o código ou a política?


    O que é?

    @irondome/core é o núcleo importável do Irondome: PBAC (funções de política), ReBAC (tuplas e checkRelation), hooks de auditoria, catálogo de roles/actions e helpers para páginas e painéis por posição (subject.attributes.position).

    Não inclui HTTP nem UI — corre em testes, workers e qualquer runtime JS/TS.


    Instalação

    pnpm add @irondome/core

    Dependências

    Nenhuma em runtime — pacote standalone.


    O que inclui

    Área Conteúdo
    PBAC PolicyEngine, createPermissions, tipos Subject, Resource, Action, Context
    Catálogo Roles, actions, pageResource, namedResource, hasRole, hasEveryRole
    Painel / posição PanelPosition, POSITION_RANK, hasMinimumPosition, panelResource, actions.panel.*
    ReBAC MemoryRelationStore, checkRelation, RelationTuple, RelationStore
    Audit AuditHook, createConsoleAuditHook, AuditEvent

    Exemplo rápido (PBAC)

    import { createPermissions, actions, hasRole, Roles, type Policy } from "@irondome/core";
    
    const pagePolicy: Policy = (subject, action, resource) => {
      if (resource.type !== "page" || action !== actions.page.visit) return null;
      if (resource.id.startsWith("/admin")) {
        return hasRole(subject, Roles.admin)
          ? { allowed: true, reason: "admin" }
          : { allowed: false, reason: "apenas admin" };
      }
      return null;
    };
    
    export const { can, authorize } = createPermissions({ policies: [pagePolicy] });

    (Mesmo padrão do README do monorepo, secção PBAC.)


    ReBAC e Audit

    import { MemoryRelationStore, checkRelation } from "@irondome/core";
    import { createPermissions, createConsoleAuditHook } from "@irondome/core";
    
    const store = new MemoryRelationStore();
    await checkRelation(store, "user:alice", "owner", "repo:api", { via: ["member"] });
    
    export const { can } = createPermissions({
      policies: [/* ... */],
      audit: createConsoleAuditHook({ onlyDenied: false }),
    });

    Relação com outros pacotes

    Pacote Função
    @irondome/auth Transforma login/sessão num Subjectnão substitui este motor
    @irondome/next Liga can() a middleware, Route Handlers, tRPC e React

    Documentação

    Recurso Ligação
    Monorepo README Irondome
    Quatro pilares Guia dos pilares
    Publicar no npm npm-publish

    Licença

    MIT © rbxyz