{"_id":"@core-tecnologias-empresariales/core-permissions","name":"@core-tecnologias-empresariales/core-permissions","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@core-tecnologias-empresariales/core-permissions","version":"0.1.0","description":"Autorización (RBAC + scopes) para el ecosistema Core Tecnología Empresarial. Agnóstico de base de datos.","license":"UNLICENSED","publishConfig":{"access":"public"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":"./dist/index.js"},"devDependencies":{"typescript":"^5.7.0","@types/node":"^20.14.0"},"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && node --test dist"},"_id":"@core-tecnologias-empresariales/core-permissions@0.1.0","_integrity":"sha512-ZHRlaWA/QtrrVQj+bSL3NqbKHMM/XuaXYU18PtVqJ/KsGHrM2p0Hoy100CymqY0jJ9CykkGuUixbZ4YuP2fgbg==","_resolved":"C:\\Users\\Administrador\\AppData\\Local\\Temp\\f805800b753d52e3e3ba56cfd44a4d1d\\core-tecnologias-empresariales-core-permissions-0.1.0.tgz","_from":"file:core-tecnologias-empresariales-core-permissions-0.1.0.tgz","_nodeVersion":"20.20.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-ZHRlaWA/QtrrVQj+bSL3NqbKHMM/XuaXYU18PtVqJ/KsGHrM2p0Hoy100CymqY0jJ9CykkGuUixbZ4YuP2fgbg==","shasum":"9dac0d8e375bc152bfeaab477ac682354fc85275","tarball":"https://registry.npmjs.org/@core-tecnologias-empresariales/core-permissions/-/core-permissions-0.1.0.tgz","fileCount":17,"unpackedSize":13077,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCyWZCczjH/Se0aBcEx5ZfMIj1ZSsWG2t8ZpbW6X8LX7AIhAOSToAwtQN3PTSdG9BwUdpDCK2JcRxjkxycoGlBkCxnL"}]},"_npmUser":{"name":"balamchac","email":"marcelosazop@gmail.com"},"directories":{},"maintainers":[{"name":"balamchac","email":"marcelosazop@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core-permissions_0.1.0_1788053509463_0.8893243862572195"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-30T01:31:49.193Z","0.1.0":"2026-08-30T01:31:49.603Z","modified":"2026-08-30T01:31:49.976Z"},"maintainers":[{"name":"balamchac","email":"marcelosazop@gmail.com"}],"description":"Autorización (RBAC + scopes) para el ecosistema Core Tecnología Empresarial. Agnóstico de base de datos.","license":"UNLICENSED","readme":"# @core-tecnologias-empresariales/core-permissions\n\nAutorización del ecosistema Core Tecnología Empresarial. Responde **¿qué puedes hacer?** (`core-auth` responde ¿quién eres?). Agnóstico de base de datos, igual que `core-auth`.\n\n## Modelo\n\n```text\nUser → Role → Permission → Resource + Action\n```\n\nPermisos como strings `resource.action`: `sales.read`, `sales.create`, `products.update`, `users.delete`. Nunca reglas de negocio:\n\n```ts\n❌ canIssueInvoice()\n✅ invoice.create\n```\n\n## API\n\n```ts\nimport { formatPermission, hasPermission, resolvePermissions } from \"@core-tecnologias-empresariales/core-permissions\";\n\nformatPermission(\"sales\", \"read\"); // \"sales.read\"\n\nconst granted = resolvePermissions({\n  assignments: userRoleAssignments,   // desde tu tabla user_roles\n  rolePermissions: rolePermissionRows, // desde tu tabla role_permissions\n  scope: { type: \"organization\", id: currentOrgId },\n});\n\nhasPermission(granted, \"sales.create\"); // true | false\n```\n\nUn rol sin `scopeType` es **global** (aplica siempre); un rol con `scopeType`/`scopeId` (ej. `\"organization\"`, `\"branch\"`) solo aplica cuando el `scope` evaluado coincide — así una empresa puede tener administradores globales y roles limitados a una sucursal sin dos sistemas distintos.\n\n## Para qué NO sirve (`ponytail:` diferido)\n\nABAC (atributos arbitrarios más allá de scope) no está en v0.1 — RBAC + scopes es lo que CLAUDE.md pide poder evolucionar, no construir de entrada. Tampoco valida permisos de recurso específico (`sales:83921.read`) ni wildcards (`sales.*`); se agregan cuando un caso real lo exija.\n\n**Recordatorio de seguridad (CLAUDE.md §78):** esto autoriza en el backend. Un frontend nunca debe considerarse frontera de seguridad — no confiar en un botón oculto/deshabilitado ni en un feature flag de frontend como sustituto de esto.\n\n## Instalación\n\n```bash\npnpm add @core-tecnologias-empresariales/core-permissions\n```\n\n## Desarrollo\n\n```bash\npnpm build\npnpm test\n```\n","readmeFilename":"README.md","_rev":"1-33c441fba19e2f1d3e7325a855719f4f"}