@mostajs/pbac
v0.1.0
Published
PBAC (Policy-Based Access Control) pour @mostajs — magasin de politiques, algorithmes de combinaison (deny-overrides…), PEP/guard, audit des décisions ; compose @mostajs/abac. PIP/audit injectables, config .env.
Maintainers
Readme
@mostajs/pbac
Auteur : Dr Hamid MADANI [email protected] · Licence : AGPL-3.0-or-later Statut : ✅ 0.1.0 — implémenté, 16 tests verts (mjs-unit).
PBAC (Policy-Based Access Control) pour @mostajs. Orchestration au-dessus
d'@mostajs/abac : magasin de politiques (PAP), algorithmes de
combinaison, PEP (point d'application), et audit des décisions. Hybride
RBAC+ABAC (les rôles de @mostajs/rbac deviennent
des attributs). Config 100 % .env via @mostajs/config.
API prévue
import { authorize, createPolicyGuard } from "@mostajs/pbac";
const set = { id: "salsabil", algorithm: "deny-overrides", policies: [
{ id: "med-read", target: { action: "read", resource: "BeneficiaryMedical" },
effect: "permit",
condition: { and: [
{ in: ["social", { var: "subject.roles" }] },
{ "==": [ { var: "subject.sector" }, { var: "resource.sector" } ] },
{ "<": [ { var: "env.hour" }, 19 ] },
]}},
]};
const d = await authorize({ subject: { roles: ["social"], sector: "A" },
resource: { type: "BeneficiaryMedical", sector: "A" }, action: "read",
environment: { hour: 14 } });
// d.decision === "permit" · décision auditée (logAudit)
// PEP : middleware
app.use(createPolicyGuard({ set })); // 200 permit · 403 denyCouches
PEP (guard) → PDP (decide + combinaison) → @mostajs/abac (évaluation) → @mostajs/rules (jsonlogic)
rbac → attributs subject · audit → trace · config → politiques .env · data-plug → persistanceConception
Dossier du stack : ../docs/ (01-ETAT-DE-LART → 05-RISQUES-MITIGATION).
Tests dans test-scripts/ (mjs-unit) ; exemples/démos dans examples/ (dont un
guard-demo.mjs serveur Node, et un hybrid-rbac-demo.mjs RBAC-pur vs hybride).
