@jantstack/adonis-authz 2.0.0-alpha.1 → 2.4.0-alpha.2
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 +693 -36
- package/build/commands/authz_catalog_diff.js +1 -1
- 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 +136 -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 +95 -0
- package/build/commands/authz_freeze.js.map +1 -0
- package/build/commands/authz_reconcile.d.ts +102 -0
- package/build/commands/authz_reconcile.d.ts.map +1 -0
- package/build/commands/authz_reconcile.js +294 -0
- package/build/commands/authz_reconcile.js.map +1 -0
- package/build/commands/authz_relations_reconcile.d.ts +97 -0
- package/build/commands/authz_relations_reconcile.d.ts.map +1 -0
- package/build/commands/authz_relations_reconcile.js +313 -0
- package/build/commands/authz_relations_reconcile.js.map +1 -0
- package/build/commands/authz_scopes_relay.d.ts +47 -0
- package/build/commands/authz_scopes_relay.d.ts.map +1 -0
- package/build/commands/authz_scopes_relay.js +141 -0
- package/build/commands/authz_scopes_relay.js.map +1 -0
- package/build/commands/authz_unfreeze.d.ts +37 -0
- package/build/commands/authz_unfreeze.d.ts.map +1 -0
- package/build/commands/authz_unfreeze.js +92 -0
- package/build/commands/authz_unfreeze.js.map +1 -0
- package/build/commands/main.d.ts +6 -1
- package/build/commands/main.d.ts.map +1 -1
- package/build/commands/main.js +6 -1
- package/build/commands/main.js.map +1 -1
- package/build/commands/openfga_provision.d.ts +46 -4
- package/build/commands/openfga_provision.d.ts.map +1 -1
- package/build/commands/openfga_provision.js +90 -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 -10
- package/build/index.d.ts.map +1 -1
- package/build/index.js +45 -6
- package/build/index.js.map +1 -1
- package/build/providers/authz_provider.d.ts +26 -2
- package/build/providers/authz_provider.d.ts.map +1 -1
- package/build/providers/authz_provider.js +55 -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 +137 -3
- package/build/src/define_config.d.ts.map +1 -1
- 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 +113 -0
- package/build/src/drivers/database_relations_driver.d.ts.map +1 -0
- package/build/src/drivers/database_relations_driver.js +679 -0
- package/build/src/drivers/database_relations_driver.js.map +1 -0
- package/build/src/drivers/openfga_driver.d.ts +729 -122
- package/build/src/drivers/openfga_driver.d.ts.map +1 -1
- package/build/src/drivers/openfga_driver.js +2083 -476
- 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 +141 -0
- package/build/src/drivers/openfga_relations_driver.d.ts.map +1 -0
- package/build/src/drivers/openfga_relations_driver.js +590 -0
- package/build/src/drivers/openfga_relations_driver.js.map +1 -0
- package/build/src/errors.d.ts +290 -5
- package/build/src/errors.d.ts.map +1 -1
- package/build/src/errors.js +296 -7
- package/build/src/errors.js.map +1 -1
- package/build/src/freeze.d.ts +141 -0
- package/build/src/freeze.d.ts.map +1 -0
- package/build/src/freeze.js +217 -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 +330 -4
- package/build/src/manager.d.ts.map +1 -1
- package/build/src/manager.js +1285 -188
- 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 +75 -0
- package/build/src/relations/define_relations_config.d.ts.map +1 -0
- package/build/src/relations/define_relations_config.js +173 -0
- package/build/src/relations/define_relations_config.js.map +1 -0
- package/build/src/relations/manager.d.ts +60 -0
- package/build/src/relations/manager.d.ts.map +1 -0
- package/build/src/relations/manager.js +213 -0
- package/build/src/relations/manager.js.map +1 -0
- package/build/src/relations/reconcile.d.ts +111 -0
- package/build/src/relations/reconcile.d.ts.map +1 -0
- package/build/src/relations/reconcile.js +200 -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 +69 -0
- package/build/src/scope_outbox.d.ts.map +1 -0
- package/build/src/scope_outbox.js +298 -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/shared/sql_expiry.d.ts.map +1 -0
- package/build/src/shared/sql_expiry.js.map +1 -0
- package/build/src/shared/transaction_guard.d.ts +50 -0
- package/build/src/shared/transaction_guard.d.ts.map +1 -0
- package/build/src/shared/transaction_guard.js +60 -0
- package/build/src/shared/transaction_guard.js.map +1 -0
- package/build/src/sql_descendants.d.ts +47 -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 +912 -177
- package/build/src/testing/contract.js.map +1 -1
- package/build/src/testing/main.d.ts +8 -2
- package/build/src/testing/main.d.ts.map +1 -1
- package/build/src/testing/main.js +4 -1
- package/build/src/testing/main.js.map +1 -1
- package/build/src/testing/migration_contract.d.ts +284 -0
- package/build/src/testing/migration_contract.d.ts.map +1 -0
- package/build/src/testing/migration_contract.js +586 -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 +1069 -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/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 +1053 -83
- package/build/src/types.d.ts.map +1 -1
- package/build/src/types.js +10 -0
- package/build/src/types.js.map +1 -1
- package/build/stubs/config/authorization.stub +104 -4
- 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/{drivers → shared}/sql_expiry.d.ts +0 -0
- /package/build/src/{drivers → shared}/sql_expiry.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,14 @@
|
|
|
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
|
+
* Cuántas tuplas/filas del destino caben en una pasada de `authz:reconcile`
|
|
46
|
+
* (3b-3b · B5). No es una garantía de memoria: es la cota DECLARADA por
|
|
47
|
+
* encima de la cual la pasada se niega en vez de intentarlo.
|
|
48
|
+
*/
|
|
49
|
+
export const DEFAULT_RECONCILE_MAX_TUPLES = 1_000_000;
|
|
50
|
+
/** Discriminador: ¿este sujeto es un userset (`group:g#member`) y no un holder? */
|
|
51
|
+
export function isRelUserset(subject) {
|
|
52
|
+
return typeof subject.object === 'object' && subject.object !== null;
|
|
53
|
+
}
|
|
44
54
|
//# 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;AAqrB7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAS,CAAA;AAqsBrD,mFAAmF;AACnF,MAAM,UAAU,YAAY,CAAC,OAAmB;IAC9C,OAAO,OAAQ,OAAsB,CAAC,MAAM,KAAK,QAAQ,IAAK,OAAsB,CAAC,MAAM,KAAK,IAAI,CAAA;AACtG,CAAC"}
|
|
@@ -2,7 +2,13 @@
|
|
|
2
2
|
exports({ to: app.configPath('authorization.ts') })
|
|
3
3
|
}}}
|
|
4
4
|
import env from '#start/env'
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
defineConfig,
|
|
7
|
+
DatabaseAuthorizationDriver,
|
|
8
|
+
DatabaseRelationsDriver,
|
|
9
|
+
defineRelationsConfig,
|
|
10
|
+
APP_SCOPE,
|
|
11
|
+
} from '@jantstack/adonis-authz'
|
|
6
12
|
import type { AuthzWriteEvent, ScopeRef } from '@jantstack/adonis-authz'
|
|
7
13
|
import { appAclCatalog } from '#config/app_acl'
|
|
8
14
|
|
|
@@ -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
|
|
@@ -79,17 +112,49 @@ export default defineConfig({
|
|
|
79
112
|
// —`lead@unit` con owner una org— funciona con o sin él)
|
|
80
113
|
// (o tu propia función) para `authorizedScopes`; y `requireWithin: true` / `requireActor: true`
|
|
81
114
|
// en cuanto todos los call-sites pasen `within` / `actor` (hasta entonces el manager avisa).
|
|
82
|
-
|
|
115
|
+
// 2.3: `enumerateEdges: sqlScopeEdges({ table, uuidColumn, parentColumn, typeColumn })` es
|
|
116
|
+
// el árbol ENTERO paginado, y lo necesita `node ace authz:reconcile` (migrar entre drivers
|
|
117
|
+
// y verificar con --dry-run). Sin él el comando se niega en vez de suponer un árbol plano.
|
|
118
|
+
// La migración va en las DOS direcciones: `--to=openfga` reconstruye el store desde `authz_*`
|
|
119
|
+
// + este árbol, y `--to=database` reconstruye `authz_*` desde los hechos del store (ahí el
|
|
120
|
+
// árbol NO se migra: el driver `database` lo lee de TUS tablas en cada pregunta).
|
|
121
|
+
scopes: {
|
|
122
|
+
resolveChain: resolveScopeChain,
|
|
123
|
+
// Con AUTHZ_DRIVER=openfga el árbol vive en DOS sitios (tus tablas y el
|
|
124
|
+
// store) y quien ENCOLA los cambios es el MANAGER, que lee ESTA sección
|
|
125
|
+
// —no las opciones del driver—: sin una de las dos mitigaciones aquí,
|
|
126
|
+
// cada request es 500 E_AUTHZ_SCOPE_DRIFT_UNGUARDED. Igual que en la
|
|
127
|
+
// factory de abajo: cámbialo por `outbox: scopeOutbox` (la MISMA
|
|
128
|
+
// instancia en los dos sitios) en cuanto el árbol lo muevan peticiones
|
|
129
|
+
// de tenant; hasta entonces, esta es la firma explícita del riesgo.
|
|
130
|
+
// Con AUTHZ_DRIVER=database no aplica (el árbol tiene una sola copia).
|
|
131
|
+
acceptScopeDriftRisk: true,
|
|
132
|
+
},
|
|
83
133
|
|
|
84
134
|
drivers: {
|
|
85
135
|
database: () => new DatabaseAuthorizationDriver({ resolveChain: resolveScopeChain }),
|
|
86
136
|
|
|
87
137
|
/**
|
|
88
138
|
* Backend externo opcional. Levanta el servidor y provisiona con
|
|
89
|
-
* `node ace openfga:provision
|
|
139
|
+
* `node ace openfga:provision` (escribe el modelo con TUS permisos: el
|
|
140
|
+
* modelo cambia cada vez que añades o quitas uno, y `authz:catalog:sync`
|
|
141
|
+
* proyecta el catálogo en el store).
|
|
90
142
|
* El driver vive en el subpath `/openfga` (lo único que importa el peer
|
|
91
143
|
* opcional `@openfga/sdk`) y se carga DENTRO de la factory: sin
|
|
92
144
|
* AUTHZ_DRIVER=openfga el SDK ni se instala ni se importa.
|
|
145
|
+
*
|
|
146
|
+
* **El árbol de scopes vive en el store** (el driver es el PDP y
|
|
147
|
+
* `authorize` es un solo `Check`), así que hay DOS copias del árbol —la
|
|
148
|
+
* tuya y la suya— y un `rollback` de tu transacción dejaría la del store
|
|
149
|
+
* adelantada. Por eso el driver NO se construye sin una de las dos
|
|
150
|
+
* mitigaciones (500 `E_AUTHZ_SCOPE_DRIFT_UNGUARDED`):
|
|
151
|
+
*
|
|
152
|
+
* - `scopes.outbox`: la MISMA instancia que pones en `scopes` arriba —
|
|
153
|
+
* el manager encola los cambios del árbol dentro de tu transacción y
|
|
154
|
+
* `node ace authz:scopes:relay` los aplica. Es la recomendada;
|
|
155
|
+
* publica la tabla con la migración `scopes_outbox_migration.stub`.
|
|
156
|
+
* - `acceptScopeDriftRisk: true`: la firma explícita de quien mueve el
|
|
157
|
+
* árbol solo desde la plataforma y lo asume.
|
|
93
158
|
*/
|
|
94
159
|
openfga: async () => {
|
|
95
160
|
const { OpenFgaAuthorizationDriver } = await import('@jantstack/adonis-authz/openfga')
|
|
@@ -104,6 +169,9 @@ export default defineConfig({
|
|
|
104
169
|
modelId: env.get('OPENFGA_MODEL_ID'),
|
|
105
170
|
resolveChain: resolveScopeChain,
|
|
106
171
|
holderTypes,
|
|
172
|
+
// Cámbialo por `outbox: scopeOutbox` (la misma que pases en `scopes`)
|
|
173
|
+
// en cuanto el árbol lo muevan peticiones de tenant.
|
|
174
|
+
acceptScopeDriftRisk: true,
|
|
107
175
|
})
|
|
108
176
|
},
|
|
109
177
|
},
|
|
@@ -124,5 +192,37 @@ export default defineConfig({
|
|
|
124
192
|
*/
|
|
125
193
|
delegablePermissions: [],
|
|
126
194
|
|
|
195
|
+
/**
|
|
196
|
+
* ReBAC genérico (OPT-IN). `config` es la MISMA instancia que capturan las
|
|
197
|
+
* factories de `drivers` (F-05 del manager y del driver es la misma frontera);
|
|
198
|
+
* `default` es el driver de relaciones activo que resuelve el servicio
|
|
199
|
+
* `@jantstack/adonis-authz/services/relations` (default: el `default` de
|
|
200
|
+
* roles). Los `drivers` los usa además `node ace authz:relations:reconcile`.
|
|
201
|
+
* El driver `openfga` de relaciones entra por el subpath `/openfga` DENTRO de
|
|
202
|
+
* la factory (peer opcional). Si no usas ReBAC, borra esta sección y el
|
|
203
|
+
* `relationsConfig` de arriba.
|
|
204
|
+
*/
|
|
205
|
+
relations: {
|
|
206
|
+
config: relationsConfig,
|
|
207
|
+
default: env.get('AUTHZ_DRIVER', 'database'),
|
|
208
|
+
drivers: {
|
|
209
|
+
database: () => new DatabaseRelationsDriver(relationsConfig),
|
|
210
|
+
openfga: async () => {
|
|
211
|
+
const { OpenFgaRelationsDriver } = await import('@jantstack/adonis-authz/openfga')
|
|
212
|
+
const apiUrl = env.get('OPENFGA_URL')
|
|
213
|
+
const storeId = env.get('OPENFGA_STORE_ID')
|
|
214
|
+
if (!apiUrl || !storeId) {
|
|
215
|
+
throw new Error('AUTHZ_DRIVER=openfga requiere OPENFGA_URL y OPENFGA_STORE_ID')
|
|
216
|
+
}
|
|
217
|
+
return new OpenFgaRelationsDriver(relationsConfig, {
|
|
218
|
+
apiUrl,
|
|
219
|
+
storeId,
|
|
220
|
+
modelId: env.get('OPENFGA_MODEL_ID'),
|
|
221
|
+
holderTypes,
|
|
222
|
+
})
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
|
|
127
227
|
hooks: { onWrite: onAuthzWrite },
|
|
128
228
|
})
|
|
@@ -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.2",
|
|
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"}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { BaseCommand, flags } from '@adonisjs/core/ace';
|
|
11
|
-
/**
|
|
12
|
-
* Migra los HECHOS del driver `database` a un store OpenFGA: copia las
|
|
13
|
-
* asignaciones vigentes (authz_assignments) y los denies (authz_denies)
|
|
14
|
-
* como tuples. El catálogo y la jerarquía no migran: son metadata local
|
|
15
|
-
* para ambos drivers.
|
|
16
|
-
*
|
|
17
|
-
* Proceso completo database → openfga:
|
|
18
|
-
* 1. Levantar el servidor (profile openfga del compose).
|
|
19
|
-
* 2. node ace openfga:provision → store + model (ids al .env)
|
|
20
|
-
* 3. node ace openfga:import [--dry-run] → copia los hechos
|
|
21
|
-
* 4. AUTHZ_DRIVER=openfga + reiniciar api/worker.
|
|
22
|
-
*
|
|
23
|
-
* No destructivo (las tablas locales quedan intactas → rollback = volver a
|
|
24
|
-
* AUTHZ_DRIVER=database). Sobre un store que YA tiene tuplas exige
|
|
25
|
-
* `--reconcile`: compara tupla a tupla, reescribe las que difieren en
|
|
26
|
-
* caducidad (S7) — nunca "ignora duplicados", porque en FGA la condición no
|
|
27
|
-
* es parte de la clave — y cuenta las que SQL no tiene (`extra`); con
|
|
28
|
-
* `--prune` las borra (D14): es lo que hace que el reconcile converja.
|
|
29
|
-
*/
|
|
30
|
-
export default class OpenFgaImport extends BaseCommand {
|
|
31
|
-
static commandName = 'openfga:import';
|
|
32
|
-
static description = 'Copy authz facts (assignments/denies) from the database driver into OpenFGA';
|
|
33
|
-
static options = {
|
|
34
|
-
startApp: true,
|
|
35
|
-
};
|
|
36
|
-
async run() {
|
|
37
|
-
const config = this.app.config.get('authorization');
|
|
38
|
-
const apiUrl = this.url ?? config?.openfga?.url;
|
|
39
|
-
const storeId = this.storeId ?? config?.openfga?.storeId;
|
|
40
|
-
if (!apiUrl || !storeId) {
|
|
41
|
-
this.logger.error('Faltan la URL o el store: --url/--store-id o OPENFGA_URL/OPENFGA_STORE_ID (ver openfga:provision)');
|
|
42
|
-
this.exitCode = 1;
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
// El subpath `/openfga` es la única puerta al SDK (D9).
|
|
46
|
-
const { importAuthzFactsToOpenFga } = await import('../src/openfga.js');
|
|
47
|
-
const holderTypes = config?.holderTypes ?? {};
|
|
48
|
-
const result = await importAuthzFactsToOpenFga({
|
|
49
|
-
apiUrl,
|
|
50
|
-
storeId,
|
|
51
|
-
modelId: this.modelId ?? config?.openfga?.modelId,
|
|
52
|
-
dryRun: this.dryRun ?? false,
|
|
53
|
-
reconcile: this.reconcile ?? false,
|
|
54
|
-
prune: this.prune ?? false,
|
|
55
|
-
holderTypes,
|
|
56
|
-
});
|
|
57
|
-
const verb = result.dryRun ? 'Se escribirían' : 'Escritas';
|
|
58
|
-
this.logger.success(`${verb} ${result.written} tuplas nuevas, ${result.updated} reescritas (caducidad distinta), ` +
|
|
59
|
-
`${result.unchanged} sin cambios; ${result.skippedExpired} asignaciones ya expiradas omitidas.`);
|
|
60
|
-
if (result.extra > 0 && !this.prune) {
|
|
61
|
-
this.logger.warning(`${result.extra} tupla(s) del store no están en SQL y SIGUEN concediendo: vuelve a ejecutar con --reconcile --prune para borrarlas.`);
|
|
62
|
-
}
|
|
63
|
-
else if (this.prune) {
|
|
64
|
-
this.logger.log(`${result.dryRun ? 'Se borrarían' : 'Borradas'} ${result.deleted} tupla(s) que SQL no tiene.`);
|
|
65
|
-
}
|
|
66
|
-
if (!result.dryRun) {
|
|
67
|
-
this.logger.log('Siguiente paso: AUTHZ_DRIVER=openfga y reiniciar api/worker.');
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
__decorate([
|
|
72
|
-
flags.string({ description: 'OpenFGA API URL (defaults to OPENFGA_URL)' }),
|
|
73
|
-
__metadata("design:type", Object)
|
|
74
|
-
], OpenFgaImport.prototype, "url", void 0);
|
|
75
|
-
__decorate([
|
|
76
|
-
flags.string({ alias: 's', description: 'Store id (defaults to OPENFGA_STORE_ID)' }),
|
|
77
|
-
__metadata("design:type", Object)
|
|
78
|
-
], OpenFgaImport.prototype, "storeId", void 0);
|
|
79
|
-
__decorate([
|
|
80
|
-
flags.string({ description: 'Model id (defaults to OPENFGA_MODEL_ID)' }),
|
|
81
|
-
__metadata("design:type", Object)
|
|
82
|
-
], OpenFgaImport.prototype, "modelId", void 0);
|
|
83
|
-
__decorate([
|
|
84
|
-
flags.boolean({ description: 'Count what would be written, without writing' }),
|
|
85
|
-
__metadata("design:type", Object)
|
|
86
|
-
], OpenFgaImport.prototype, "dryRun", void 0);
|
|
87
|
-
__decorate([
|
|
88
|
-
flags.boolean({
|
|
89
|
-
description: 'Import into a non-empty store: compare tuple by tuple, rewrite the ones that differ and count the ones SQL no longer has (extra)',
|
|
90
|
-
}),
|
|
91
|
-
__metadata("design:type", Object)
|
|
92
|
-
], OpenFgaImport.prototype, "reconcile", void 0);
|
|
93
|
-
__decorate([
|
|
94
|
-
flags.boolean({ description: 'With --reconcile: delete the tuples SQL no longer has (reported as deleted)' }),
|
|
95
|
-
__metadata("design:type", Object)
|
|
96
|
-
], OpenFgaImport.prototype, "prune", void 0);
|
|
97
|
-
//# sourceMappingURL=openfga_import.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openfga_import.js","sourceRoot":"","sources":["../../commands/openfga_import.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/catalog.ts"],"names":[],"mappings":"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"}
|