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/coreDependê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 Subject — nã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