@mostajs/access-control-store
v0.1.0
Published
Adaptateur de persistance (data-plug/ORM) pour @mostajs/pbac + rebac — l'intermédiaire entre le cœur access-control (qui décide) et l'app. Politiques + tuples de relations persistés ; SGBD via MOSTA_DATA/DB_DIALECT (ex. SQLite fichier).
Maintainers
Readme
@mostajs/access-control-store
Auteur : Dr Hamid MADANI [email protected] · Licence : AGPL-3.0-or-later Statut : ✅ 0.1.0 — l'intermédiaire de persistance de l'access-control.
Adaptateur de persistance entre le cœur access-control (@mostajs/pbac /
@mostajs/rebac, qui décident) et l'app (qui n'a aucun droit de savoir
comment la base est gérée). Il implémente les interfaces PolicyRepository /
RelationStore sur @mostajs/data-plug.
Frontières (séparation des métiers)
cœur (décide) intermédiaire (persiste) app (consomme)
@mostajs/pbac ──interface──► @mostajs/access-control-store ──API neutre──► App
@mostajs/rebac (data-plug/ORM ou NET) (aveugle au SGBD)- pbac/rebac ne connaissent pas la DB (persistance injectée).
- access-control-store encapsule TOUT le SGBD via
@mostajs/data-plug. - l'app appelle des factories neutres et ignore le SGBD (mode/dialecte/URI = env/ops).
API
import { createDurablePolicyStore, createDurableRelationStore } from "@mostajs/access-control-store";
import { authorize } from "@mostajs/pbac";
const store = await createDurablePolicyStore(); // l'app ne sait pas où/comment c'est stocké
await store.save(policySet);
await authorize(bag, { store, setId: "salsabil" });Configuration (ops / .env, hors code app)
Le SGBD est choisi par l'environnement (via data-plug) — jamais dans le code de l'app :
MOSTA_DATA=orm # orm (DB directe) | net (proxy REST)
DB_DIALECT=sqlite # sqlite | postgres | mysql | …
SGBD_URI=./data/ac.db # SQLite FICHIER (persistance disque)Exemple
node examples/app-usage.mjs # crée puis (au 2e run) recharge depuis le fichier SQLiteVoir examples/app-usage.mjs : le bloc ops/.env configure le SGBD, le code app en est totalement aveugle.
