{"_id":"@ascencia/id-rbac","name":"@ascencia/id-rbac","dist-tags":{"next":"0.1.0-rc.1","latest":"0.1.0-rc.1"},"versions":{"0.1.0-rc.1":{"name":"@ascencia/id-rbac","version":"0.1.0-rc.1","description":"Moteur de résolution des rôles et permissions d'Ascencia ID — isomorphe, zéro dépendance.","type":"module","main":"./src/index.ts","types":"./src/index.ts","exports":{".":"./src/index.ts"},"sideEffects":false,"scripts":{"typecheck":"tsc --noEmit","test":"vitest run","build":"echo 'source-only package'"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/pedrokarim/ascencia-auth.git","directory":"packages/rbac"},"publishConfig":{"access":"public"},"_id":"@ascencia/id-rbac@0.1.0-rc.1","bugs":{"url":"https://github.com/pedrokarim/ascencia-auth/issues"},"homepage":"https://github.com/pedrokarim/ascencia-auth#readme","_integrity":"sha512-s3P2VX4UR3R/6dvh3sRTWqrzTj87aqBixbjSTNniSfndWsUjg88HJu5U9cLSxjwg4G0ymeHjY2akFi818NICSA==","_resolved":"/home/runner/work/ascencia-auth/ascencia-auth/tarballs/ascencia-id-rbac-0.1.0-rc.1.tgz","_from":"file:tarballs/ascencia-id-rbac-0.1.0-rc.1.tgz","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-s3P2VX4UR3R/6dvh3sRTWqrzTj87aqBixbjSTNniSfndWsUjg88HJu5U9cLSxjwg4G0ymeHjY2akFi818NICSA==","shasum":"d2415938768cfa9d18c97ea67ed11f73970b95f9","tarball":"https://registry.npmjs.org/@ascencia/id-rbac/-/id-rbac-0.1.0-rc.1.tgz","fileCount":11,"unpackedSize":39039,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHEonw2Qr4rFuWQPTgmmmbYDL7sYT94Nld+z2qoQuCfYAiEAolpMcxjsUk0tf+FVkZPgl1fUc/2P1I51ptnKtazi5b8="}]},"_npmUser":{"name":"pedrokarim64","email":"Karimisma6464@Gmail.com"},"directories":{},"maintainers":[{"name":"pedrokarim64","email":"Karimisma6464@Gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/id-rbac_0.1.0-rc.1_1787514097095_0.808947156828925"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-23T19:41:36.718Z","0.1.0-rc.1":"2026-08-23T19:41:37.282Z","modified":"2026-08-23T19:41:37.628Z"},"maintainers":[{"name":"pedrokarim64","email":"Karimisma6464@Gmail.com"}],"description":"Moteur de résolution des rôles et permissions d'Ascencia ID — isomorphe, zéro dépendance.","homepage":"https://github.com/pedrokarim/ascencia-auth#readme","repository":{"type":"git","url":"git+https://github.com/pedrokarim/ascencia-auth.git","directory":"packages/rbac"},"bugs":{"url":"https://github.com/pedrokarim/ascencia-auth/issues"},"license":"MIT","readme":"# @ascencia/id-rbac\n\nLe moteur de permissions d'**Ascencia ID** : résolution des rôles, héritage,\nrefus explicites, et portées.\n\n```bash\nbun add @ascencia/id-rbac\n```\n\nC'est une bibliothèque **pure** — aucune entrée/sortie, aucune dépendance. On\nlui donne un état (compte, zone, application, rôles détenus), elle rend un\ncontexte effectif : ce que la personne a le droit de faire, et **par quel rôle**.\n\n```ts\nimport { resolve } from '@ascencia/id-rbac';\n\nconst context = resolve({ account, realm, application, roles, assignments });\n\ncontext.allowed;                  // la politique d'accès laisse-t-elle entrer ?\ncontext.reason;                   // sinon, pourquoi — `app_access_denied`, …\ncontext.permissions;              // les permissions effectives\ncontext.trace;                    // d'où vient chacune\n```\n\n## Trois choses à savoir\n\n**Un `deny` explicite gagne toujours**, quel que soit le rôle qui l'accorde par\nailleurs. C'est ce qui permet de retirer un droit à quelqu'un sans démonter sa\nhiérarchie de rôles.\n\n**Les permissions sont partitionnées par portée** — plateforme, zone,\napplication. Un `*` accordé sur une application ne fuit jamais vers une autre.\n\n**La trace n'est pas du confort de développement.** Elle alimente le simulateur\nde la console : « pourquoi cette personne a-t-elle ce droit ? » est la question\nqu'on se pose six mois plus tard, et une réponse binaire n'y suffit pas.\n\nVous n'avez normalement pas à installer ce paquet directement :\n[`@ascencia/id-core`](https://www.npmjs.com/package/@ascencia/id-core) et\n[`@ascencia/id-server`](https://www.npmjs.com/package/@ascencia/id-server) en\ndépendent.\n\nMIT\n","readmeFilename":"README.md","_rev":"1-99d2c6f3cda6768eb209bfc8d2d8d735"}