@jantstack/adonis-authz 2.0.0-alpha.1 → 2.4.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +934 -40
- package/build/commands/authz_catalog_diff.d.ts.map +1 -1
- package/build/commands/authz_catalog_diff.js +1 -2
- package/build/commands/authz_catalog_diff.js.map +1 -1
- package/build/commands/authz_catalog_prune_orphans.d.ts +78 -0
- package/build/commands/authz_catalog_prune_orphans.d.ts.map +1 -0
- package/build/commands/authz_catalog_prune_orphans.js +135 -0
- package/build/commands/authz_catalog_prune_orphans.js.map +1 -0
- package/build/commands/authz_catalog_sync.d.ts +17 -0
- package/build/commands/authz_catalog_sync.d.ts.map +1 -1
- package/build/commands/authz_catalog_sync.js +27 -4
- package/build/commands/authz_catalog_sync.js.map +1 -1
- package/build/commands/authz_freeze.d.ts +44 -0
- package/build/commands/authz_freeze.d.ts.map +1 -0
- package/build/commands/authz_freeze.js +94 -0
- package/build/commands/authz_freeze.js.map +1 -0
- package/build/commands/authz_reconcile.d.ts +111 -0
- package/build/commands/authz_reconcile.d.ts.map +1 -0
- package/build/commands/authz_reconcile.js +417 -0
- package/build/commands/authz_reconcile.js.map +1 -0
- package/build/commands/authz_relations_reconcile.d.ts +144 -0
- package/build/commands/authz_relations_reconcile.d.ts.map +1 -0
- package/build/commands/authz_relations_reconcile.js +438 -0
- package/build/commands/authz_relations_reconcile.js.map +1 -0
- package/build/commands/authz_scopes_relay.d.ts +97 -0
- package/build/commands/authz_scopes_relay.d.ts.map +1 -0
- package/build/commands/authz_scopes_relay.js +344 -0
- package/build/commands/authz_scopes_relay.js.map +1 -0
- package/build/commands/authz_scopes_requeue.d.ts +80 -0
- package/build/commands/authz_scopes_requeue.d.ts.map +1 -0
- package/build/commands/authz_scopes_requeue.js +230 -0
- package/build/commands/authz_scopes_requeue.js.map +1 -0
- package/build/commands/authz_unfreeze.d.ts +45 -0
- package/build/commands/authz_unfreeze.d.ts.map +1 -0
- package/build/commands/authz_unfreeze.js +157 -0
- package/build/commands/authz_unfreeze.js.map +1 -0
- package/build/commands/main.d.ts +16 -8
- package/build/commands/main.d.ts.map +1 -1
- package/build/commands/main.js +59 -6
- package/build/commands/main.js.map +1 -1
- package/build/commands/openfga_provision.d.ts +92 -4
- package/build/commands/openfga_provision.d.ts.map +1 -1
- package/build/commands/openfga_provision.js +155 -7
- package/build/commands/openfga_provision.js.map +1 -1
- package/build/configure.d.ts +11 -0
- package/build/configure.d.ts.map +1 -1
- package/build/configure.js +37 -1
- package/build/configure.js.map +1 -1
- package/build/index.d.ts +50 -11
- package/build/index.d.ts.map +1 -1
- package/build/index.js +49 -7
- package/build/index.js.map +1 -1
- package/build/providers/authz_provider.d.ts +31 -2
- package/build/providers/authz_provider.d.ts.map +1 -1
- package/build/providers/authz_provider.js +65 -2
- package/build/providers/authz_provider.js.map +1 -1
- package/build/services/relations.d.ts +14 -0
- package/build/services/relations.d.ts.map +1 -0
- package/build/services/relations.js +17 -0
- package/build/services/relations.js.map +1 -0
- package/build/src/{catalog.d.ts → catalog/catalog.d.ts} +41 -2
- package/build/src/catalog/catalog.d.ts.map +1 -0
- package/build/src/{catalog.js → catalog/catalog.js} +120 -14
- package/build/src/catalog/catalog.js.map +1 -0
- package/build/src/{catalog_cache.d.ts → catalog/catalog_cache.d.ts} +46 -22
- package/build/src/catalog/catalog_cache.d.ts.map +1 -0
- package/build/src/{catalog_cache.js → catalog/catalog_cache.js} +53 -43
- package/build/src/catalog/catalog_cache.js.map +1 -0
- package/build/src/define_config.d.ts +206 -3
- package/build/src/define_config.d.ts.map +1 -1
- package/build/src/define_config.js +11 -0
- package/build/src/define_config.js.map +1 -1
- package/build/src/drivers/database_driver.d.ts +128 -7
- package/build/src/drivers/database_driver.d.ts.map +1 -1
- package/build/src/drivers/database_driver.js +510 -24
- package/build/src/drivers/database_driver.js.map +1 -1
- package/build/src/drivers/database_relations_driver.d.ts +140 -0
- package/build/src/drivers/database_relations_driver.d.ts.map +1 -0
- package/build/src/drivers/database_relations_driver.js +748 -0
- package/build/src/drivers/database_relations_driver.js.map +1 -0
- package/build/src/drivers/openfga_driver.d.ts +777 -122
- package/build/src/drivers/openfga_driver.d.ts.map +1 -1
- package/build/src/drivers/openfga_driver.js +2228 -477
- package/build/src/drivers/openfga_driver.js.map +1 -1
- package/build/src/drivers/openfga_facts.d.ts +384 -0
- package/build/src/drivers/openfga_facts.d.ts.map +1 -0
- package/build/src/drivers/openfga_facts.js +836 -0
- package/build/src/drivers/openfga_facts.js.map +1 -0
- package/build/src/drivers/openfga_relations_driver.d.ts +186 -0
- package/build/src/drivers/openfga_relations_driver.d.ts.map +1 -0
- package/build/src/drivers/openfga_relations_driver.js +724 -0
- package/build/src/drivers/openfga_relations_driver.js.map +1 -0
- package/build/src/errors.d.ts +430 -6
- package/build/src/errors.d.ts.map +1 -1
- package/build/src/errors.js +453 -6
- package/build/src/errors.js.map +1 -1
- package/build/src/freeze.d.ts +200 -0
- package/build/src/freeze.d.ts.map +1 -0
- package/build/src/freeze.js +306 -0
- package/build/src/freeze.js.map +1 -0
- package/build/src/http/app_access_middleware.d.ts.map +1 -0
- package/build/src/http/app_access_middleware.js.map +1 -0
- package/build/src/http/resource_access_middleware.d.ts +105 -0
- package/build/src/http/resource_access_middleware.d.ts.map +1 -0
- package/build/src/http/resource_access_middleware.js +81 -0
- package/build/src/http/resource_access_middleware.js.map +1 -0
- package/build/src/identity.d.ts +74 -1
- package/build/src/identity.d.ts.map +1 -1
- package/build/src/identity.js +100 -2
- package/build/src/identity.js.map +1 -1
- package/build/src/manager.d.ts +549 -6
- package/build/src/manager.d.ts.map +1 -1
- package/build/src/manager.js +2243 -193
- package/build/src/manager.js.map +1 -1
- package/build/src/models/authz_assignment.d.ts +7 -7
- package/build/src/models/authz_assignment.d.ts.map +1 -1
- package/build/src/models/authz_deny.d.ts +7 -7
- package/build/src/models/authz_deny.d.ts.map +1 -1
- package/build/src/models/authz_permission.d.ts +7 -7
- package/build/src/models/authz_permission.d.ts.map +1 -1
- package/build/src/models/authz_role.d.ts +7 -7
- package/build/src/models/authz_role.d.ts.map +1 -1
- package/build/src/models/authz_role_permission.d.ts +7 -7
- package/build/src/models/authz_role_permission.d.ts.map +1 -1
- package/build/src/openfga.d.ts +18 -2
- package/build/src/openfga.d.ts.map +1 -1
- package/build/src/openfga.js +15 -1
- package/build/src/openfga.js.map +1 -1
- package/build/src/reconcile.d.ts +37 -0
- package/build/src/reconcile.d.ts.map +1 -0
- package/build/src/reconcile.js +69 -0
- package/build/src/reconcile.js.map +1 -0
- package/build/src/relation_partition_trigger.d.ts +8 -0
- package/build/src/relation_partition_trigger.d.ts.map +1 -0
- package/build/src/relation_partition_trigger.js +93 -0
- package/build/src/relation_partition_trigger.js.map +1 -0
- package/build/src/relations/define_relations_config.d.ts +109 -0
- package/build/src/relations/define_relations_config.d.ts.map +1 -0
- package/build/src/relations/define_relations_config.js +211 -0
- package/build/src/relations/define_relations_config.js.map +1 -0
- package/build/src/relations/manager.d.ts +138 -0
- package/build/src/relations/manager.d.ts.map +1 -0
- package/build/src/relations/manager.js +494 -0
- package/build/src/relations/manager.js.map +1 -0
- package/build/src/relations/reconcile.d.ts +137 -0
- package/build/src/relations/reconcile.d.ts.map +1 -0
- package/build/src/relations/reconcile.js +294 -0
- package/build/src/relations/reconcile.js.map +1 -0
- package/build/src/relations_config_store.d.ts +22 -0
- package/build/src/relations_config_store.d.ts.map +1 -0
- package/build/src/relations_config_store.js +74 -0
- package/build/src/relations_config_store.js.map +1 -0
- package/build/src/scope_outbox.d.ts +123 -0
- package/build/src/scope_outbox.d.ts.map +1 -0
- package/build/src/scope_outbox.js +532 -0
- package/build/src/scope_outbox.js.map +1 -0
- package/build/src/{drivers → shared}/backend_guard.d.ts +42 -0
- package/build/src/shared/backend_guard.d.ts.map +1 -0
- package/build/src/{drivers → shared}/backend_guard.js +78 -1
- package/build/src/shared/backend_guard.js.map +1 -0
- package/build/src/{drivers → shared}/sql_expiry.d.ts +2 -0
- package/build/src/shared/sql_expiry.d.ts.map +1 -0
- package/build/src/{drivers → shared}/sql_expiry.js +4 -0
- package/build/src/shared/sql_expiry.js.map +1 -0
- package/build/src/shared/transaction_guard.d.ts +53 -0
- package/build/src/shared/transaction_guard.d.ts.map +1 -0
- package/build/src/shared/transaction_guard.js +74 -0
- package/build/src/shared/transaction_guard.js.map +1 -0
- package/build/src/sql_descendants.d.ts +55 -1
- package/build/src/sql_descendants.d.ts.map +1 -1
- package/build/src/sql_descendants.js +75 -1
- package/build/src/sql_descendants.js.map +1 -1
- package/build/src/testing/contract.d.ts +129 -4
- package/build/src/testing/contract.d.ts.map +1 -1
- package/build/src/testing/contract.js +915 -177
- package/build/src/testing/contract.js.map +1 -1
- package/build/src/testing/main.d.ts +10 -2
- package/build/src/testing/main.d.ts.map +1 -1
- package/build/src/testing/main.js +5 -1
- package/build/src/testing/main.js.map +1 -1
- package/build/src/testing/migration_contract.d.ts +293 -0
- package/build/src/testing/migration_contract.d.ts.map +1 -0
- package/build/src/testing/migration_contract.js +589 -0
- package/build/src/testing/migration_contract.js.map +1 -0
- package/build/src/testing/relations_contract.d.ts +73 -0
- package/build/src/testing/relations_contract.d.ts.map +1 -0
- package/build/src/testing/relations_contract.js +1238 -0
- package/build/src/testing/relations_contract.js.map +1 -0
- package/build/src/testing/relations_reconcile_contract.d.ts +24 -0
- package/build/src/testing/relations_reconcile_contract.d.ts.map +1 -0
- package/build/src/testing/relations_reconcile_contract.js +220 -0
- package/build/src/testing/relations_reconcile_contract.js.map +1 -0
- package/build/src/testing/scope_outbox_contract.d.ts +98 -0
- package/build/src/testing/scope_outbox_contract.d.ts.map +1 -0
- package/build/src/testing/scope_outbox_contract.js +677 -0
- package/build/src/testing/scope_outbox_contract.js.map +1 -0
- package/build/src/traits/authz_scopes.js +1 -1
- package/build/src/traits/authz_scopes.js.map +1 -1
- package/build/src/traits/has_uuid.d.ts +8 -8
- package/build/src/traits/has_uuid.d.ts.map +1 -1
- package/build/src/types.d.ts +1537 -84
- package/build/src/types.d.ts.map +1 -1
- package/build/src/types.js +65 -0
- package/build/src/types.js.map +1 -1
- package/build/stubs/config/authorization.stub +149 -5
- package/build/stubs/migration.stub +136 -0
- package/build/stubs/scopes_outbox_migration.stub +57 -0
- package/package.json +4 -2
- package/build/commands/openfga_import.d.ts +0 -34
- package/build/commands/openfga_import.d.ts.map +0 -1
- package/build/commands/openfga_import.js +0 -97
- package/build/commands/openfga_import.js.map +0 -1
- package/build/src/catalog.d.ts.map +0 -1
- package/build/src/catalog.js.map +0 -1
- package/build/src/catalog_cache.d.ts.map +0 -1
- package/build/src/catalog_cache.js.map +0 -1
- package/build/src/drivers/backend_guard.d.ts.map +0 -1
- package/build/src/drivers/backend_guard.js.map +0 -1
- package/build/src/drivers/sql_expiry.d.ts.map +0 -1
- package/build/src/drivers/sql_expiry.js.map +0 -1
- package/build/src/middleware/app_access_middleware.d.ts.map +0 -1
- package/build/src/middleware/app_access_middleware.js.map +0 -1
- /package/build/src/{middleware → http}/app_access_middleware.d.ts +0 -0
- /package/build/src/{middleware → http}/app_access_middleware.js +0 -0
package/build/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/build/src/types.js
CHANGED
|
@@ -41,4 +41,69 @@
|
|
|
41
41
|
export const APP_SCOPE_TYPE = 'app';
|
|
42
42
|
/** El scope raíz de aplicación (nivel plataforma). */
|
|
43
43
|
export const APP_SCOPE = Object.freeze({ type: 'app', uuid: null });
|
|
44
|
+
/**
|
|
45
|
+
* Las claves de `AuthorizationDriverCapabilities`, LITERALES (2.4.0-alpha.4):
|
|
46
|
+
* lo que `authorization.capabilities()` normaliza. Una capacidad nueva que no
|
|
47
|
+
* se añada aquí saldría como `undefined` de la lectura publicada, que es
|
|
48
|
+
* justo lo que la API promete no devolver — el caso D-3 de la suite lo ve.
|
|
49
|
+
*/
|
|
50
|
+
export const AUTHORIZATION_DRIVER_CAPABILITY_KEYS = Object.freeze([
|
|
51
|
+
'hierarchyFacts',
|
|
52
|
+
'singleCheckAuthorize',
|
|
53
|
+
'roleInheritanceNative',
|
|
54
|
+
'listObjectsInherited',
|
|
55
|
+
'purgeRole',
|
|
56
|
+
'countRoleAssignments',
|
|
57
|
+
'canonicalScopeReads',
|
|
58
|
+
'enumerateFacts',
|
|
59
|
+
'transactionalWrites',
|
|
60
|
+
]);
|
|
61
|
+
/**
|
|
62
|
+
* **La copia CONGELADA y NORMALIZADA que publica `authorization.capabilities()`**
|
|
63
|
+
* (2.4.0-alpha.4; 🟠 3 y 🟡 5 del auditor). Todas las claves conocidas
|
|
64
|
+
* presentes; solo `true` es `true` — la MISMA lectura que aplican las puertas
|
|
65
|
+
* de `{ transaction }` (`=== true`)—, así que `undefined`, un valor a medias
|
|
66
|
+
* de un driver de terceros o un driver de 2.x sin `capabilities` salen como
|
|
67
|
+
* `false`, nunca como `undefined` (repetiría el bug de `stillGranting`: «no lo
|
|
68
|
+
* sé» degradando a «no»). Y es una copia: mutarla no toca el objeto que leen
|
|
69
|
+
* las puertas del manager.
|
|
70
|
+
*/
|
|
71
|
+
export function normalizeAuthorizationCapabilities(declared) {
|
|
72
|
+
const out = {};
|
|
73
|
+
for (const key of AUTHORIZATION_DRIVER_CAPABILITY_KEYS)
|
|
74
|
+
out[key] = declared?.[key] === true;
|
|
75
|
+
return Object.freeze(out);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Cuántas tuplas/filas del destino caben en una pasada de `authz:reconcile`
|
|
79
|
+
* (3b-3b · B5). No es una garantía de memoria: es la cota DECLARADA por
|
|
80
|
+
* encima de la cual la pasada se niega en vez de intentarlo.
|
|
81
|
+
*/
|
|
82
|
+
export const DEFAULT_RECONCILE_MAX_TUPLES = 1_000_000;
|
|
83
|
+
/** Discriminador: ¿este sujeto es un userset (`group:g#member`) y no un holder? */
|
|
84
|
+
export function isRelUserset(subject) {
|
|
85
|
+
// Tolerante a `null`/no-objeto (cierre alpha.3, ⚪ 7): un sujeto que no es
|
|
86
|
+
// ni holder ni userset cae en `assertSubject` y sale como 422, no como TypeError.
|
|
87
|
+
if (subject === null || typeof subject !== 'object')
|
|
88
|
+
return false;
|
|
89
|
+
return typeof subject.object === 'object' && subject.object !== null;
|
|
90
|
+
}
|
|
91
|
+
/** Las claves de `RelationsDriverCapabilities`, literales: lo que `relations.capabilities()` normaliza (2.4.0-alpha.4). */
|
|
92
|
+
export const RELATIONS_DRIVER_CAPABILITY_KEYS = Object.freeze([
|
|
93
|
+
'singleCheckRelations',
|
|
94
|
+
'listObjectsInherited',
|
|
95
|
+
'usersetSubjects',
|
|
96
|
+
'membersOfNative',
|
|
97
|
+
'enumerateRelations',
|
|
98
|
+
'listObjectsTruncation',
|
|
99
|
+
'injectableClock',
|
|
100
|
+
'transactionalWrites',
|
|
101
|
+
]);
|
|
102
|
+
/** La copia congelada y normalizada de `relations.capabilities()`; misma regla que `normalizeAuthorizationCapabilities`. */
|
|
103
|
+
export function normalizeRelationsCapabilities(declared) {
|
|
104
|
+
const out = {};
|
|
105
|
+
for (const key of RELATIONS_DRIVER_CAPABILITY_KEYS)
|
|
106
|
+
out[key] = declared?.[key] === true;
|
|
107
|
+
return Object.freeze(out);
|
|
108
|
+
}
|
|
44
109
|
//# sourceMappingURL=types.js.map
|
package/build/src/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAoBH,uCAAuC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAA;AAQnC,sDAAsD;AACtD,MAAM,CAAC,MAAM,SAAS,GAAa,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAoBH,uCAAuC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAA;AAQnC,sDAAsD;AACtD,MAAM,CAAC,MAAM,SAAS,GAAa,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;AAiR7E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAyD,MAAM,CAAC,MAAM,CAAC;IACtH,gBAAgB;IAChB,sBAAsB;IACtB,uBAAuB;IACvB,sBAAsB;IACtB,WAAW;IACX,sBAAsB;IACtB,qBAAqB;IACrB,gBAAgB;IAChB,qBAAqB;CACb,CAAC,CAAA;AAEX;;;;;;;;;GASG;AACH,MAAM,UAAU,kCAAkC,CAChD,QAA8D;IAE9D,MAAM,GAAG,GAAG,EAA4D,CAAA;IACxE,KAAK,MAAM,GAAG,IAAI,oCAAoC;QAAE,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAA;IAC3F,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAC3B,CAAC;AAscD;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAS,CAAA;AAoiCrD,mFAAmF;AACnF,MAAM,UAAU,YAAY,CAAC,OAAmB;IAC9C,0EAA0E;IAC1E,kFAAkF;IAClF,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACjE,OAAO,OAAQ,OAAsB,CAAC,MAAM,KAAK,QAAQ,IAAK,OAAsB,CAAC,MAAM,KAAK,IAAI,CAAA;AACtG,CAAC;AAwMD,2HAA2H;AAC3H,MAAM,CAAC,MAAM,gCAAgC,GAAqD,MAAM,CAAC,MAAM,CAAC;IAC9G,sBAAsB;IACtB,sBAAsB;IACtB,iBAAiB;IACjB,iBAAiB;IACjB,oBAAoB;IACpB,uBAAuB;IACvB,iBAAiB;IACjB,qBAAqB;CACb,CAAC,CAAA;AAEX,4HAA4H;AAC5H,MAAM,UAAU,8BAA8B,CAC5C,QAA0D;IAE1D,MAAM,GAAG,GAAG,EAAwD,CAAA;IACpE,KAAK,MAAM,GAAG,IAAI,gCAAgC;QAAE,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAA;IACvF,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAC3B,CAAC"}
|
|
@@ -2,8 +2,14 @@
|
|
|
2
2
|
exports({ to: app.configPath('authorization.ts') })
|
|
3
3
|
}}}
|
|
4
4
|
import env from '#start/env'
|
|
5
|
-
import {
|
|
6
|
-
|
|
5
|
+
import {
|
|
6
|
+
defineConfig,
|
|
7
|
+
DatabaseAuthorizationDriver,
|
|
8
|
+
DatabaseRelationsDriver,
|
|
9
|
+
defineRelationsConfig,
|
|
10
|
+
APP_SCOPE,
|
|
11
|
+
} from '@jantstack/adonis-authz'
|
|
12
|
+
import type { AuthzWriteEvent, RelationWriteEvent, ScopeRef } from '@jantstack/adonis-authz'
|
|
7
13
|
import { appAclCatalog } from '#config/app_acl'
|
|
8
14
|
|
|
9
15
|
/**
|
|
@@ -11,12 +17,39 @@ import { appAclCatalog } from '#config/app_acl'
|
|
|
11
17
|
* modelo FGA. Solo lo usa el driver `openfga` y sus comandos.
|
|
12
18
|
*
|
|
13
19
|
* ⚠️ Cambiar este mapa cambia el authorization model: hay que re-provisionar
|
|
14
|
-
* el store (`node ace openfga:provision`) y
|
|
20
|
+
* el store (`node ace openfga:provision`) y volver a proyectar el catálogo.
|
|
15
21
|
*/
|
|
16
22
|
export const holderTypes = {
|
|
17
23
|
users: 'user',
|
|
18
24
|
}
|
|
19
25
|
|
|
26
|
+
/**
|
|
27
|
+
* ReBAC genérico (relaciones a nivel de objeto: `document#viewer`,
|
|
28
|
+
* `group#member`…), OPT-IN. Declara aquí tus tipos de objeto y sus relaciones.
|
|
29
|
+
* Con la sección `relations` de abajo, el paquete cablea el `RelationsManager`
|
|
30
|
+
* como servicio (`import relations from '@jantstack/adonis-authz/services/relations'`)
|
|
31
|
+
* y —con AUTHZ_DRIVER=openfga— `node ace openfga:provision` mete estos tipos en
|
|
32
|
+
* el modelo `facts`, así que un store recién aprovisionado ya acepta tuplas de
|
|
33
|
+
* relación sin un `authz:catalog:sync` previo.
|
|
34
|
+
*
|
|
35
|
+
* `document` es solo un EJEMPLO: cámbialo por tus tipos (o borra este bloque y
|
|
36
|
+
* la sección `relations` si no usas ReBAC). `defineRelationsConfig` exige al
|
|
37
|
+
* menos un tipo, así que un array vacío lanza.
|
|
38
|
+
*/
|
|
39
|
+
export const relationsConfig = defineRelationsConfig({
|
|
40
|
+
objectTypes: [
|
|
41
|
+
{
|
|
42
|
+
type: 'document',
|
|
43
|
+
relations: [
|
|
44
|
+
{ name: 'owner' },
|
|
45
|
+
{ name: 'editor', includes: ['owner'] },
|
|
46
|
+
{ name: 'viewer', includes: ['editor'] },
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
holderTypes: Object.values(holderTypes),
|
|
51
|
+
})
|
|
52
|
+
|
|
20
53
|
/**
|
|
21
54
|
* Jerarquía de scopes de tu dominio: la ÚNICA costura entre tu dominio y el
|
|
22
55
|
* motor. El motor solo conoce la raíz (`app`); si tienes niveles propios
|
|
@@ -60,6 +93,33 @@ async function resolveScopeChain(scope: ScopeRef): Promise<ScopeRef[] | null> {
|
|
|
60
93
|
*/
|
|
61
94
|
async function onAuthzWrite(_event: AuthzWriteEvent) {}
|
|
62
95
|
|
|
96
|
+
/**
|
|
97
|
+
* Side-effects de cada escritura de RELACIONES (`relate`/`unrelate`/
|
|
98
|
+
* `purgeObject`/`purgeSubject`) por el servicio `authz.relations`. Mismas
|
|
99
|
+
* garantías que `onAuthzWrite`: corre DESPUÉS de que el driver vuelva; si lanza
|
|
100
|
+
* se registra y NO tumba la escritura; `transactional: true` cuando la tupla
|
|
101
|
+
* fue por tu `{ transaction }` (es un hecho si y solo si confirmas: cuélgate de
|
|
102
|
+
* `trx.after('commit')` para la última palabra); `indeterminate: true` cuando
|
|
103
|
+
* el deadline venció y el paquete no sabe si aterrizó (invariante 13).
|
|
104
|
+
* Una purga notifica UN evento por llamada, sin conteo y sin `relation`:
|
|
105
|
+
* `purgeObject` lleva `object` (sin `subject`), `purgeSubject` lleva `subject`
|
|
106
|
+
* (sin `object`). Si necesitas el «cuántas», enumera ANTES de purgar.
|
|
107
|
+
*/
|
|
108
|
+
async function onAuthzRelationWrite(event: RelationWriteEvent) {
|
|
109
|
+
switch (event.operation) {
|
|
110
|
+
case 'relate':
|
|
111
|
+
case 'unrelate':
|
|
112
|
+
// event.subject, event.relation y event.object vienen los tres.
|
|
113
|
+
break
|
|
114
|
+
case 'purgeObject':
|
|
115
|
+
// event.object viene; event.subject y event.relation NO.
|
|
116
|
+
break
|
|
117
|
+
case 'purgeSubject':
|
|
118
|
+
// event.subject viene; event.object y event.relation NO.
|
|
119
|
+
break
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
63
123
|
export default defineConfig({
|
|
64
124
|
default: env.get('AUTHZ_DRIVER', 'database'),
|
|
65
125
|
|
|
@@ -79,17 +139,49 @@ export default defineConfig({
|
|
|
79
139
|
// —`lead@unit` con owner una org— funciona con o sin él)
|
|
80
140
|
// (o tu propia función) para `authorizedScopes`; y `requireWithin: true` / `requireActor: true`
|
|
81
141
|
// en cuanto todos los call-sites pasen `within` / `actor` (hasta entonces el manager avisa).
|
|
82
|
-
|
|
142
|
+
// 2.3: `enumerateEdges: sqlScopeEdges({ table, uuidColumn, parentColumn, typeColumn })` es
|
|
143
|
+
// el árbol ENTERO paginado, y lo necesita `node ace authz:reconcile` (migrar entre drivers
|
|
144
|
+
// y verificar con --dry-run). Sin él el comando se niega en vez de suponer un árbol plano.
|
|
145
|
+
// La migración va en las DOS direcciones: `--to=openfga` reconstruye el store desde `authz_*`
|
|
146
|
+
// + este árbol, y `--to=database` reconstruye `authz_*` desde los hechos del store (ahí el
|
|
147
|
+
// árbol NO se migra: el driver `database` lo lee de TUS tablas en cada pregunta).
|
|
148
|
+
scopes: {
|
|
149
|
+
resolveChain: resolveScopeChain,
|
|
150
|
+
// Con AUTHZ_DRIVER=openfga el árbol vive en DOS sitios (tus tablas y el
|
|
151
|
+
// store) y quien ENCOLA los cambios es el MANAGER, que lee ESTA sección
|
|
152
|
+
// —no las opciones del driver—: sin una de las dos mitigaciones aquí,
|
|
153
|
+
// cada request es 500 E_AUTHZ_SCOPE_DRIFT_UNGUARDED. Igual que en la
|
|
154
|
+
// factory de abajo: cámbialo por `outbox: scopeOutbox` (la MISMA
|
|
155
|
+
// instancia en los dos sitios) en cuanto el árbol lo muevan peticiones
|
|
156
|
+
// de tenant; hasta entonces, esta es la firma explícita del riesgo.
|
|
157
|
+
// Con AUTHZ_DRIVER=database no aplica (el árbol tiene una sola copia).
|
|
158
|
+
acceptScopeDriftRisk: true,
|
|
159
|
+
},
|
|
83
160
|
|
|
84
161
|
drivers: {
|
|
85
162
|
database: () => new DatabaseAuthorizationDriver({ resolveChain: resolveScopeChain }),
|
|
86
163
|
|
|
87
164
|
/**
|
|
88
165
|
* Backend externo opcional. Levanta el servidor y provisiona con
|
|
89
|
-
* `node ace openfga:provision
|
|
166
|
+
* `node ace openfga:provision` (escribe el modelo con TUS permisos: el
|
|
167
|
+
* modelo cambia cada vez que añades o quitas uno, y `authz:catalog:sync`
|
|
168
|
+
* proyecta el catálogo en el store).
|
|
90
169
|
* El driver vive en el subpath `/openfga` (lo único que importa el peer
|
|
91
170
|
* opcional `@openfga/sdk`) y se carga DENTRO de la factory: sin
|
|
92
171
|
* AUTHZ_DRIVER=openfga el SDK ni se instala ni se importa.
|
|
172
|
+
*
|
|
173
|
+
* **El árbol de scopes vive en el store** (el driver es el PDP y
|
|
174
|
+
* `authorize` es un solo `Check`), así que hay DOS copias del árbol —la
|
|
175
|
+
* tuya y la suya— y un `rollback` de tu transacción dejaría la del store
|
|
176
|
+
* adelantada. Por eso el driver NO se construye sin una de las dos
|
|
177
|
+
* mitigaciones (500 `E_AUTHZ_SCOPE_DRIFT_UNGUARDED`):
|
|
178
|
+
*
|
|
179
|
+
* - `scopes.outbox`: la MISMA instancia que pones en `scopes` arriba —
|
|
180
|
+
* el manager encola los cambios del árbol dentro de tu transacción y
|
|
181
|
+
* `node ace authz:scopes:relay` los aplica. Es la recomendada;
|
|
182
|
+
* publica la tabla con la migración `scopes_outbox_migration.stub`.
|
|
183
|
+
* - `acceptScopeDriftRisk: true`: la firma explícita de quien mueve el
|
|
184
|
+
* árbol solo desde la plataforma y lo asume.
|
|
93
185
|
*/
|
|
94
186
|
openfga: async () => {
|
|
95
187
|
const { OpenFgaAuthorizationDriver } = await import('@jantstack/adonis-authz/openfga')
|
|
@@ -104,6 +196,9 @@ export default defineConfig({
|
|
|
104
196
|
modelId: env.get('OPENFGA_MODEL_ID'),
|
|
105
197
|
resolveChain: resolveScopeChain,
|
|
106
198
|
holderTypes,
|
|
199
|
+
// Cámbialo por `outbox: scopeOutbox` (la misma que pases en `scopes`)
|
|
200
|
+
// en cuanto el árbol lo muevan peticiones de tenant.
|
|
201
|
+
acceptScopeDriftRisk: true,
|
|
107
202
|
})
|
|
108
203
|
},
|
|
109
204
|
},
|
|
@@ -124,5 +219,54 @@ export default defineConfig({
|
|
|
124
219
|
*/
|
|
125
220
|
delegablePermissions: [],
|
|
126
221
|
|
|
222
|
+
/**
|
|
223
|
+
* ReBAC genérico (OPT-IN). `config` es la MISMA instancia que capturan las
|
|
224
|
+
* factories de `drivers` (F-05 del manager y del driver es la misma frontera);
|
|
225
|
+
* `default` es el driver de relaciones activo que resuelve el servicio
|
|
226
|
+
* `@jantstack/adonis-authz/services/relations` (default: el `default` de
|
|
227
|
+
* roles). Los `drivers` los usa además `node ace authz:relations:reconcile`.
|
|
228
|
+
* El driver `openfga` de relaciones entra por el subpath `/openfga` DENTRO de
|
|
229
|
+
* la factory (peer opcional). Si no usas ReBAC, borra esta sección y el
|
|
230
|
+
* `relationsConfig` de arriba.
|
|
231
|
+
*
|
|
232
|
+
* Los hooks del puerto de relaciones viven AQUÍ (un solo home), no en
|
|
233
|
+
* `hooks`: `assertWrite` (R-13) es el gate de policy del consumidor —SÍNCRONO,
|
|
234
|
+
* PURO y sin `actor` a propósito: recibe la referencia de la tupla y lanza
|
|
235
|
+
* para rechazarla; corre después de F-05 y ANTES del driver; si devuelve una
|
|
236
|
+
* promesa el manager la rechaza con 500 E_AUTHZ_CONFIG en vez de ignorarla
|
|
237
|
+
* (la policy con actor/BD va en tu servicio, ANTES de llamar)—;
|
|
238
|
+
* `onRelationWrite` es la auditoría; `requireActor` anula el del raíz solo
|
|
239
|
+
* para este puerto (`relations.requireActor ?? requireActor`), y desde
|
|
240
|
+
* 2.4.0-alpha.3 alcanza también a `purgeObject`/`purgeSubject`.
|
|
241
|
+
*/
|
|
242
|
+
relations: {
|
|
243
|
+
config: relationsConfig,
|
|
244
|
+
default: env.get('AUTHZ_DRIVER', 'database'),
|
|
245
|
+
onRelationWrite: onAuthzRelationWrite,
|
|
246
|
+
// assertWrite: (ref) => {
|
|
247
|
+
// if (ref.operation === 'relate' && ref.relation === 'owner' && ref.expiresAt === undefined) {
|
|
248
|
+
// throw new Error('un owner se concede siempre con plazo')
|
|
249
|
+
// }
|
|
250
|
+
// },
|
|
251
|
+
// requireActor: true, // exige `actor` en las cuatro escrituras de relaciones (anula el raíz)
|
|
252
|
+
drivers: {
|
|
253
|
+
database: () => new DatabaseRelationsDriver(relationsConfig),
|
|
254
|
+
openfga: async () => {
|
|
255
|
+
const { OpenFgaRelationsDriver } = await import('@jantstack/adonis-authz/openfga')
|
|
256
|
+
const apiUrl = env.get('OPENFGA_URL')
|
|
257
|
+
const storeId = env.get('OPENFGA_STORE_ID')
|
|
258
|
+
if (!apiUrl || !storeId) {
|
|
259
|
+
throw new Error('AUTHZ_DRIVER=openfga requiere OPENFGA_URL y OPENFGA_STORE_ID')
|
|
260
|
+
}
|
|
261
|
+
return new OpenFgaRelationsDriver(relationsConfig, {
|
|
262
|
+
apiUrl,
|
|
263
|
+
storeId,
|
|
264
|
+
modelId: env.get('OPENFGA_MODEL_ID'),
|
|
265
|
+
holderTypes,
|
|
266
|
+
})
|
|
267
|
+
},
|
|
268
|
+
},
|
|
269
|
+
},
|
|
270
|
+
|
|
127
271
|
hooks: { onWrite: onAuthzWrite },
|
|
128
272
|
})
|
|
@@ -147,17 +147,110 @@ export default class extends BaseSchema {
|
|
|
147
147
|
// escriba `authz_*` a mano lo hace con `withAuthzCatalogWrite(async (trx)
|
|
148
148
|
// => …)`: misma transacción, versión subida como última sentencia. Sin
|
|
149
149
|
// esta fila (id = 1) toda pregunta es 503: por eso se siembra aquí.
|
|
150
|
+
//
|
|
151
|
+
// La fila `id = 2` es el **freeze DURABLE** (2.3): motivo, dueño
|
|
152
|
+
// (`<kind>:<pid>:<hex>`), lease (`freeze_until_ms`, null = sin caducidad)
|
|
153
|
+
// y `freeze_fence` (número de generación: `unfreeze` solo levanta el
|
|
154
|
+
// freeze cuyo fence+holder coinciden). Toda ESCRITURA del manager la lee
|
|
155
|
+
// antes de validar nada; sin esta fila toda escritura es 503 «migración
|
|
156
|
+
// 2.0 no aplicada» — tratarla como «no congelado» sería fail-open.
|
|
150
157
|
this.schema.createTable('authz_catalog_version', (table) => {
|
|
151
158
|
table.integer('id').primary().notNullable()
|
|
152
159
|
table.bigInteger('version').notNullable().defaultTo(0)
|
|
153
160
|
table.timestamp('updated_at').notNullable()
|
|
161
|
+
table.string('freeze_reason', 255).nullable()
|
|
162
|
+
table.string('freeze_holder', 120).nullable()
|
|
163
|
+
table.bigInteger('freeze_until_ms').nullable()
|
|
164
|
+
table.bigInteger('freeze_fence').notNullable().defaultTo(0)
|
|
154
165
|
})
|
|
155
166
|
this.defer(async (db) => {
|
|
156
167
|
await db.table('authz_catalog_version').insert({ id: 1, version: 0, updated_at: new Date() })
|
|
168
|
+
await db.table('authz_catalog_version').insert({ id: 2, version: 0, updated_at: new Date() })
|
|
169
|
+
})
|
|
170
|
+
|
|
171
|
+
// La config de relaciones PERSISTIDA (Fase 4-5, 🟡3): vive donde el gate de
|
|
172
|
+
// versión la ve (invariante 14), como el catálogo, para que CUALQUIER
|
|
173
|
+
// proceso que republique el modelo fusionado lea los tipos de relación de
|
|
174
|
+
// la BASE y NO los deje caer —el «modelo de uno, tuplas de otro» del
|
|
175
|
+
// auditor—. `spec` es el JSON de `defineRelationsConfig`; `model_id` es el
|
|
176
|
+
// último modelId del modelo fusionado publicado (el pin de la carrera
|
|
177
|
+
// `defineRelationsConfig`↔`syncAuthzCatalog`). Fila ausente = sin
|
|
178
|
+
// relaciones declaradas (opt-in), nunca un error.
|
|
179
|
+
this.schema.createTable('authz_relations_config', (table) => {
|
|
180
|
+
table.integer('id').primary().notNullable()
|
|
181
|
+
table.text('spec').notNullable()
|
|
182
|
+
table.string('model_id', 64).nullable()
|
|
183
|
+
table.timestamp('updated_at').notNullable()
|
|
184
|
+
})
|
|
185
|
+
|
|
186
|
+
// Tuplas de ReBAC (Fase 4): una fila por relación, INSERT/DELETE-ONLY
|
|
187
|
+
// (renovar la caducidad es delete+insert, nunca UPDATE). Sin FK: las
|
|
188
|
+
// relaciones NO cuelgan del catálogo (viven en su propio espacio de ids,
|
|
189
|
+
// disjunto de `authz_*` por construcción). Identidad byte a byte
|
|
190
|
+
// (`utf8mb4_bin`) como el resto (2.5 · J3). La partición (tenant) es la
|
|
191
|
+
// clave del scope; `subject_relation` con valor = userset (`group:g#member`),
|
|
192
|
+
// `''` = holder (L-4b: **NOT NULL DEFAULT ''** — con NULL el UNIQUE
|
|
193
|
+
// `authz_rel_tuple_uq` solo defendía usersets, porque NULL ≠ NULL en los
|
|
194
|
+
// tres motores, y dos `relate` concurrentes del mismo holder confirmaban
|
|
195
|
+
// DOS filas; `''` es la única forma con paridad: el índice parcial no
|
|
196
|
+
// existe en MySQL y `NULLS NOT DISTINCT` es solo PG 15+),
|
|
197
|
+
// `subject_partition` = la partición del userset. `expires_at` (R-15,
|
|
198
|
+
// 2.4.0-alpha.2) es la caducidad de la tupla: NULL = no caduca; misma
|
|
199
|
+
// decisión de motor que `authz_assignments.expires_at` (DATETIME(3)).
|
|
200
|
+
this.schema.createTable('authz_relations', (table) => {
|
|
201
|
+
table.uuid('uuid').primary().notNullable()
|
|
202
|
+
table.string('partition_key', 64).notNullable().collate('utf8mb4_bin')
|
|
203
|
+
table.string('object_type', 50).notNullable().collate('utf8mb4_bin')
|
|
204
|
+
table.string('object_uuid', 64).notNullable().collate('utf8mb4_bin')
|
|
205
|
+
table.string('relation', 50).notNullable().collate('utf8mb4_bin')
|
|
206
|
+
table.string('subject_type', 50).notNullable().collate('utf8mb4_bin')
|
|
207
|
+
table.string('subject_uuid', 64).notNullable().collate('utf8mb4_bin')
|
|
208
|
+
table.string('subject_relation', 50).notNullable().defaultTo('').collate('utf8mb4_bin')
|
|
209
|
+
table.string('subject_partition', 64).nullable().collate('utf8mb4_bin')
|
|
210
|
+
table.datetime('expires_at', { precision: 3 }).nullable()
|
|
211
|
+
table.timestamp('created_at').notNullable()
|
|
212
|
+
|
|
213
|
+
table.unique(
|
|
214
|
+
['partition_key', 'object_type', 'object_uuid', 'relation', 'subject_type', 'subject_uuid', 'subject_relation'],
|
|
215
|
+
'authz_rel_tuple_uq'
|
|
216
|
+
)
|
|
217
|
+
table.index(['partition_key', 'object_type', 'object_uuid', 'relation'], 'authz_rel_object_idx')
|
|
218
|
+
table.index(['partition_key', 'subject_type', 'subject_uuid'], 'authz_rel_subject_idx')
|
|
219
|
+
})
|
|
220
|
+
|
|
221
|
+
// El TRIGGER de partición, por dialecto. Defiende al escritor «a mano»: una
|
|
222
|
+
// fila con userset (`subject_relation <> ''`; un holder lleva `''` desde
|
|
223
|
+
// L-4b, y una fila vieja con NULL que nadie rellenó tampoco dispara: en los
|
|
224
|
+
// tres motores `NULL <> ''` es NULL, o sea falso) de OTRA partición que la
|
|
225
|
+
// de la tupla se rechaza en el motor. La DDL es radicalmente distinta en
|
|
226
|
+
// cada uno (SQLite `RAISE(ABORT)`, PostgreSQL función plpgsql + trigger,
|
|
227
|
+
// MySQL `SIGNAL SQLSTATE`), y el cuerpo `BEGIN…END` lleva `;` dentro: cada
|
|
228
|
+
// sentencia se ejecuta ENTERA con `rawQuery`, nunca por un runner que
|
|
229
|
+
// trocea por `;`.
|
|
230
|
+
this.defer(async (db) => {
|
|
231
|
+
const dialect = db.dialect.name
|
|
232
|
+
for (const statement of relationPartitionTriggerStatements(dialect)) {
|
|
233
|
+
await db.rawQuery(statement)
|
|
234
|
+
}
|
|
157
235
|
})
|
|
158
236
|
}
|
|
159
237
|
|
|
160
238
|
public async down() {
|
|
239
|
+
this.defer(async (db) => {
|
|
240
|
+
const drops =
|
|
241
|
+
db.dialect.name === 'postgres'
|
|
242
|
+
? [
|
|
243
|
+
'DROP TRIGGER IF EXISTS authz_relations_partition_biu ON authz_relations',
|
|
244
|
+
'DROP FUNCTION IF EXISTS authz_relations_partition_guard()',
|
|
245
|
+
]
|
|
246
|
+
: [
|
|
247
|
+
'DROP TRIGGER IF EXISTS authz_relations_partition_bi',
|
|
248
|
+
'DROP TRIGGER IF EXISTS authz_relations_partition_bu',
|
|
249
|
+
]
|
|
250
|
+
for (const statement of drops) await db.rawQuery(statement)
|
|
251
|
+
})
|
|
252
|
+
this.schema.dropTable('authz_relations')
|
|
253
|
+
this.schema.dropTable('authz_relations_config')
|
|
161
254
|
this.schema.dropTable('authz_catalog_version')
|
|
162
255
|
this.schema.dropTable('authz_denies')
|
|
163
256
|
this.schema.dropTable('authz_assignments')
|
|
@@ -166,3 +259,46 @@ export default class extends BaseSchema {
|
|
|
166
259
|
this.schema.dropTable('authz_roles')
|
|
167
260
|
}
|
|
168
261
|
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* La DDL del trigger de partición de `authz_relations` por dialecto. Es la
|
|
265
|
+
* MISMA que `relationPartitionTrigger` del paquete
|
|
266
|
+
* (`@jantstack/adonis-authz` → `src/drivers/database_relations_driver.ts`);
|
|
267
|
+
* se inlinea aquí porque una migración es una foto congelada y no importa
|
|
268
|
+
* código del paquete. Dialecto no medido ⇒ lanza (nunca una tabla sin defensa).
|
|
269
|
+
*/
|
|
270
|
+
function relationPartitionTriggerStatements(dialect) {
|
|
271
|
+
const msg = 'authz_relations: un userset no puede pertenecer a otra partición que su tupla'
|
|
272
|
+
if (dialect === 'sqlite3' || dialect === 'better-sqlite3') {
|
|
273
|
+
const body = (event) =>
|
|
274
|
+
`CREATE TRIGGER authz_relations_partition_b${event === 'INSERT' ? 'i' : 'u'} ` +
|
|
275
|
+
`BEFORE ${event} ON authz_relations FOR EACH ROW ` +
|
|
276
|
+
`WHEN NEW.subject_relation <> '' AND NEW.subject_partition IS NOT NEW.partition_key ` +
|
|
277
|
+
`BEGIN SELECT RAISE(ABORT, '${msg}'); END`
|
|
278
|
+
return [body('INSERT'), body('UPDATE')]
|
|
279
|
+
}
|
|
280
|
+
if (dialect === 'postgres') {
|
|
281
|
+
return [
|
|
282
|
+
`CREATE OR REPLACE FUNCTION authz_relations_partition_guard() RETURNS trigger LANGUAGE plpgsql AS $authz$ ` +
|
|
283
|
+
`BEGIN ` +
|
|
284
|
+
`IF NEW.subject_relation <> '' AND NEW.subject_partition IS DISTINCT FROM NEW.partition_key THEN ` +
|
|
285
|
+
`RAISE EXCEPTION '${msg} (subject_partition=%, partition_key=%)', NEW.subject_partition, NEW.partition_key; ` +
|
|
286
|
+
`END IF; RETURN NEW; END; $authz$`,
|
|
287
|
+
`CREATE TRIGGER authz_relations_partition_biu BEFORE INSERT OR UPDATE ON authz_relations ` +
|
|
288
|
+
`FOR EACH ROW EXECUTE FUNCTION authz_relations_partition_guard()`,
|
|
289
|
+
]
|
|
290
|
+
}
|
|
291
|
+
if (dialect === 'mysql' || dialect === 'mysql2') {
|
|
292
|
+
const body = (event) =>
|
|
293
|
+
`CREATE TRIGGER authz_relations_partition_b${event === 'INSERT' ? 'i' : 'u'} ` +
|
|
294
|
+
`BEFORE ${event} ON authz_relations FOR EACH ROW ` +
|
|
295
|
+
`BEGIN ` +
|
|
296
|
+
`IF NEW.subject_relation <> '' AND NOT (NEW.subject_partition <=> NEW.partition_key) THEN ` +
|
|
297
|
+
`SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '${msg}'; ` +
|
|
298
|
+
`END IF; END`
|
|
299
|
+
return [body('INSERT'), body('UPDATE')]
|
|
300
|
+
}
|
|
301
|
+
throw new Error(
|
|
302
|
+
`authz_relations: dialecto '${dialect}' sin trigger de partición medido (hoy: PostgreSQL, MySQL 8 y SQLite).`
|
|
303
|
+
)
|
|
304
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{{{
|
|
2
|
+
exports({ to: app.migrationsPath('create_authz_scope_outbox_table.ts') })
|
|
3
|
+
}}}
|
|
4
|
+
import { BaseSchema } from '@adonisjs/lucid/schema'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* La OUTBOX del árbol de scopes (@jantstack/adonis-authz, 3b-2d).
|
|
8
|
+
*
|
|
9
|
+
* NO es una tabla del motor: es tuya. La publica el paquete porque
|
|
10
|
+
* `sqlScopeOutbox()` lee estas columnas, pero el contrato es el puerto
|
|
11
|
+
* `ScopeOutbox`, no esta tabla — cámbiala si tu cola vive en otro sitio.
|
|
12
|
+
*
|
|
13
|
+
* Para qué: con `scopes.outbox` declarada, `authorization.scopes.attached/
|
|
14
|
+
* moved/detached` NO escriben en el backend. Encolan aquí, dentro de TU
|
|
15
|
+
* transacción, y `node ace authz:scopes:relay` lo aplica después. Sin eso,
|
|
16
|
+
* un `rollback` de tu transacción deja el árbol del backend adelantado al
|
|
17
|
+
* tuyo y —en el driver openfga con `hierarchy: 'facts'`, donde FGA es quien
|
|
18
|
+
* decide— eso es una escalada persistente que tu base no puede ver.
|
|
19
|
+
*
|
|
20
|
+
* Las filas aplicadas se MARCAN (`applied_at`), no se borran: la cola es
|
|
21
|
+
* también el registro de qué se propagó y cuándo. Púrgalas tú cuando
|
|
22
|
+
* quieras.
|
|
23
|
+
*/
|
|
24
|
+
export default class extends BaseSchema {
|
|
25
|
+
async up() {
|
|
26
|
+
this.schema.createTable('authz_scope_outbox', (table) => {
|
|
27
|
+
table.increments('id').primary()
|
|
28
|
+
// 'attached' | 'moved' | 'detached'.
|
|
29
|
+
table.string('op', 10).notNullable().collate('utf8mb4_bin')
|
|
30
|
+
// La identidad CANÓNICA del scope (la que devolvió tu resolveChain),
|
|
31
|
+
// con las decisiones de motor del paquete: varchar(64) utf8mb4_bin,
|
|
32
|
+
// para que un alias del uuid no se funda con otra fila.
|
|
33
|
+
table.string('child_type', 20).notNullable().collate('utf8mb4_bin')
|
|
34
|
+
table.string('child_uuid', 64).notNullable().collate('utf8mb4_bin')
|
|
35
|
+
// Nulos en 'detached' (no hay padre); 'app' con uuid nulo es la raíz.
|
|
36
|
+
table.string('parent_type', 20).nullable().collate('utf8mb4_bin')
|
|
37
|
+
table.string('parent_uuid', 64).nullable().collate('utf8mb4_bin')
|
|
38
|
+
// Quién lo ordenó, si el call-site lo declaró.
|
|
39
|
+
table.string('actor_type', 50).nullable().collate('utf8mb4_bin')
|
|
40
|
+
table.string('actor_uuid', 64).nullable().collate('utf8mb4_bin')
|
|
41
|
+
// Intentos fallidos y la última causa: el relay nunca es silencioso.
|
|
42
|
+
// Agotados los intentos (`sqlScopeOutbox({ maxAttempts })`, 5 por
|
|
43
|
+
// defecto) la fila queda APARCADA: deja de reintentarse, sale por
|
|
44
|
+
// `dead()` y el relay la reporta en todas las pasadas. Se queda aquí
|
|
45
|
+
// —el árbol del backend está divergente en ese nodo— hasta que la mires.
|
|
46
|
+
table.integer('attempts').notNullable().defaultTo(0)
|
|
47
|
+
table.text('last_error').nullable()
|
|
48
|
+
table.timestamp('created_at').notNullable()
|
|
49
|
+
table.timestamp('applied_at').nullable()
|
|
50
|
+
table.index(['applied_at', 'id'], 'authz_scope_outbox_pending_idx')
|
|
51
|
+
})
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async down() {
|
|
55
|
+
this.schema.dropTable('authz_scope_outbox')
|
|
56
|
+
}
|
|
57
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jantstack/adonis-authz",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0-alpha.10",
|
|
4
4
|
"description": "Driver-based authorization engine for AdonisJS + Lucid: hierarchical scopes with downward inheritance, explicit denies, expiring assignments and polymorphic holders. Ships a self-contained database driver and an OpenFGA driver, both judged by the same executable contract suite.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -45,7 +45,9 @@
|
|
|
45
45
|
"./openfga": "./build/src/openfga.js",
|
|
46
46
|
"./authz_provider": "./build/providers/authz_provider.js",
|
|
47
47
|
"./services/main": "./build/services/main.js",
|
|
48
|
-
"./
|
|
48
|
+
"./services/relations": "./build/services/relations.js",
|
|
49
|
+
"./app_access_middleware": "./build/src/http/app_access_middleware.js",
|
|
50
|
+
"./resource_access_middleware": "./build/src/http/resource_access_middleware.js",
|
|
49
51
|
"./commands": "./build/commands/main.js",
|
|
50
52
|
"./commands/*": "./build/commands/*.js",
|
|
51
53
|
"./testing": "./build/src/testing/main.js",
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { BaseCommand } from '@adonisjs/core/ace';
|
|
2
|
-
import { CommandOptions } from '@adonisjs/core/types/ace';
|
|
3
|
-
/**
|
|
4
|
-
* Migra los HECHOS del driver `database` a un store OpenFGA: copia las
|
|
5
|
-
* asignaciones vigentes (authz_assignments) y los denies (authz_denies)
|
|
6
|
-
* como tuples. El catálogo y la jerarquía no migran: son metadata local
|
|
7
|
-
* para ambos drivers.
|
|
8
|
-
*
|
|
9
|
-
* Proceso completo database → openfga:
|
|
10
|
-
* 1. Levantar el servidor (profile openfga del compose).
|
|
11
|
-
* 2. node ace openfga:provision → store + model (ids al .env)
|
|
12
|
-
* 3. node ace openfga:import [--dry-run] → copia los hechos
|
|
13
|
-
* 4. AUTHZ_DRIVER=openfga + reiniciar api/worker.
|
|
14
|
-
*
|
|
15
|
-
* No destructivo (las tablas locales quedan intactas → rollback = volver a
|
|
16
|
-
* AUTHZ_DRIVER=database). Sobre un store que YA tiene tuplas exige
|
|
17
|
-
* `--reconcile`: compara tupla a tupla, reescribe las que difieren en
|
|
18
|
-
* caducidad (S7) — nunca "ignora duplicados", porque en FGA la condición no
|
|
19
|
-
* es parte de la clave — y cuenta las que SQL no tiene (`extra`); con
|
|
20
|
-
* `--prune` las borra (D14): es lo que hace que el reconcile converja.
|
|
21
|
-
*/
|
|
22
|
-
export default class OpenFgaImport extends BaseCommand {
|
|
23
|
-
static commandName: string;
|
|
24
|
-
static description: string;
|
|
25
|
-
static options: CommandOptions;
|
|
26
|
-
url: string | undefined;
|
|
27
|
-
storeId: string | undefined;
|
|
28
|
-
modelId: string | undefined;
|
|
29
|
-
dryRun: boolean | undefined;
|
|
30
|
-
reconcile: boolean | undefined;
|
|
31
|
-
prune: boolean | undefined;
|
|
32
|
-
run(): Promise<void>;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=openfga_import.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openfga_import.d.ts","sourceRoot":"","sources":["../../commands/openfga_import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAS,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,WAAW,SAAmB;IACrC,MAAM,CAAC,WAAW,SAAgF;IAElG,MAAM,CAAC,OAAO,EAAE,cAAc,CAE7B;IAGO,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IAGvB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAG3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAG3B,MAAM,EAAE,OAAO,GAAG,SAAS,CAAA;IAM3B,SAAS,EAAE,OAAO,GAAG,SAAS,CAAA;IAG9B,KAAK,EAAE,OAAO,GAAG,SAAS,CAAA;IAE5B,GAAG;CAyCV"}
|