@jantstack/adonis-authz 1.1.0 → 2.4.0-alpha.1
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/LICENSE +1 -1
- package/README.md +837 -51
- package/build/commands/authz_catalog_diff.d.ts +28 -0
- package/build/commands/authz_catalog_diff.d.ts.map +1 -0
- package/build/commands/authz_catalog_diff.js +67 -0
- package/build/commands/authz_catalog_diff.js.map +1 -0
- 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 +37 -0
- package/build/commands/authz_catalog_sync.d.ts.map +1 -0
- package/build/commands/authz_catalog_sync.js +81 -0
- package/build/commands/authz_catalog_sync.js.map +1 -0
- 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 +73 -0
- package/build/commands/authz_relations_reconcile.d.ts.map +1 -0
- package/build/commands/authz_relations_reconcile.js +225 -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 +8 -1
- package/build/commands/main.d.ts.map +1 -1
- package/build/commands/main.js +8 -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 +91 -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 +75 -7
- package/build/index.d.ts.map +1 -1
- package/build/index.js +67 -5
- 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 +48 -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/catalog.d.ts +289 -0
- package/build/src/catalog/catalog.d.ts.map +1 -0
- package/build/src/catalog/catalog.js +859 -0
- package/build/src/catalog/catalog.js.map +1 -0
- package/build/src/catalog/catalog_cache.d.ts +324 -0
- package/build/src/catalog/catalog_cache.d.ts.map +1 -0
- package/build/src/catalog/catalog_cache.js +666 -0
- package/build/src/catalog/catalog_cache.js.map +1 -0
- package/build/src/clock.d.ts +24 -0
- package/build/src/clock.d.ts.map +1 -0
- package/build/src/clock.js +7 -0
- package/build/src/clock.js.map +1 -0
- package/build/src/define_config.d.ts +201 -7
- 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 +324 -15
- package/build/src/drivers/database_driver.d.ts.map +1 -1
- package/build/src/drivers/database_driver.js +1107 -128
- package/build/src/drivers/database_driver.js.map +1 -1
- package/build/src/drivers/database_relations_driver.d.ts +75 -0
- package/build/src/drivers/database_relations_driver.d.ts.map +1 -0
- package/build/src/drivers/database_relations_driver.js +450 -0
- package/build/src/drivers/database_relations_driver.js.map +1 -0
- package/build/src/drivers/openfga_driver.d.ts +963 -55
- package/build/src/drivers/openfga_driver.d.ts.map +1 -1
- package/build/src/drivers/openfga_driver.js +2693 -372
- package/build/src/drivers/openfga_driver.js.map +1 -1
- package/build/src/drivers/openfga_facts.d.ts +369 -0
- package/build/src/drivers/openfga_facts.d.ts.map +1 -0
- package/build/src/drivers/openfga_facts.js +813 -0
- package/build/src/drivers/openfga_facts.js.map +1 -0
- package/build/src/drivers/openfga_relations_driver.d.ts +120 -0
- package/build/src/drivers/openfga_relations_driver.d.ts.map +1 -0
- package/build/src/drivers/openfga_relations_driver.js +466 -0
- package/build/src/drivers/openfga_relations_driver.js.map +1 -0
- package/build/src/errors.d.ts +586 -0
- package/build/src/errors.d.ts.map +1 -1
- package/build/src/errors.js +583 -0
- package/build/src/errors.js.map +1 -1
- package/build/src/expiry.d.ts +27 -0
- package/build/src/expiry.d.ts.map +1 -0
- package/build/src/expiry.js +50 -0
- package/build/src/expiry.js.map +1 -0
- package/build/src/freeze.d.ts +120 -0
- package/build/src/freeze.d.ts.map +1 -0
- package/build/src/freeze.js +172 -0
- package/build/src/freeze.js.map +1 -0
- package/build/src/hierarchical_resolver.d.ts +56 -0
- package/build/src/hierarchical_resolver.d.ts.map +1 -0
- package/build/src/hierarchical_resolver.js +87 -0
- package/build/src/hierarchical_resolver.js.map +1 -0
- package/build/src/{middleware → http}/app_access_middleware.d.ts +8 -6
- package/build/src/http/app_access_middleware.d.ts.map +1 -0
- package/build/src/{middleware → http}/app_access_middleware.js +10 -26
- 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 +228 -0
- package/build/src/identity.d.ts.map +1 -0
- package/build/src/identity.js +457 -0
- package/build/src/identity.js.map +1 -0
- package/build/src/manager.d.ts +536 -7
- package/build/src/manager.d.ts.map +1 -1
- package/build/src/manager.js +2676 -23
- package/build/src/manager.js.map +1 -1
- package/build/src/memoize_ancestors.d.ts +23 -0
- package/build/src/memoize_ancestors.d.ts.map +1 -0
- package/build/src/memoize_ancestors.js +42 -0
- package/build/src/memoize_ancestors.js.map +1 -0
- package/build/src/models/authz_assignment.d.ts +11 -11
- package/build/src/models/authz_assignment.d.ts.map +1 -1
- package/build/src/models/authz_deny.d.ts +11 -11
- package/build/src/models/authz_deny.d.ts.map +1 -1
- package/build/src/models/authz_permission.d.ts +17 -11
- package/build/src/models/authz_permission.d.ts.map +1 -1
- package/build/src/models/authz_permission.js +4 -0
- package/build/src/models/authz_permission.js.map +1 -1
- package/build/src/models/authz_role.d.ts +19 -12
- package/build/src/models/authz_role.d.ts.map +1 -1
- package/build/src/models/authz_role.js +6 -1
- package/build/src/models/authz_role.js.map +1 -1
- package/build/src/models/authz_role_permission.d.ts +11 -11
- package/build/src/models/authz_role_permission.d.ts.map +1 -1
- package/build/src/openfga.d.ts +29 -0
- package/build/src/openfga.d.ts.map +1 -0
- package/build/src/openfga.js +26 -0
- package/build/src/openfga.js.map +1 -0
- 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 +85 -0
- package/build/src/relation_partition_trigger.js.map +1 -0
- package/build/src/relations/define_relations_config.d.ts +58 -0
- package/build/src/relations/define_relations_config.d.ts.map +1 -0
- package/build/src/relations/define_relations_config.js +144 -0
- package/build/src/relations/define_relations_config.js.map +1 -0
- package/build/src/relations/manager.d.ts +38 -0
- package/build/src/relations/manager.d.ts.map +1 -0
- package/build/src/relations/manager.js +156 -0
- package/build/src/relations/manager.js.map +1 -0
- package/build/src/relations/reconcile.d.ts +62 -0
- package/build/src/relations/reconcile.d.ts.map +1 -0
- package/build/src/relations/reconcile.js +138 -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 +291 -0
- package/build/src/scope_outbox.js.map +1 -0
- package/build/src/shared/backend_guard.d.ts +106 -0
- package/build/src/shared/backend_guard.d.ts.map +1 -0
- package/build/src/shared/backend_guard.js +246 -0
- package/build/src/shared/backend_guard.js.map +1 -0
- package/build/src/shared/sql_expiry.d.ts +53 -0
- package/build/src/shared/sql_expiry.d.ts.map +1 -0
- package/build/src/shared/sql_expiry.js +66 -0
- package/build/src/shared/sql_expiry.js.map +1 -0
- package/build/src/sql_descendants.d.ts +97 -0
- package/build/src/sql_descendants.d.ts.map +1 -0
- package/build/src/sql_descendants.js +203 -0
- package/build/src/sql_descendants.js.map +1 -0
- package/build/src/testing/contract.d.ts +212 -7
- package/build/src/testing/contract.d.ts.map +1 -1
- package/build/src/testing/contract.js +3449 -24
- 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 +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 +51 -0
- package/build/src/testing/relations_contract.d.ts.map +1 -0
- package/build/src/testing/relations_contract.js +654 -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 +172 -0
- package/build/src/testing/relations_reconcile_contract.js.map +1 -0
- package/build/src/testing/scope_tree.d.ts +65 -0
- package/build/src/testing/scope_tree.d.ts.map +1 -0
- package/build/src/testing/scope_tree.js +145 -0
- package/build/src/testing/scope_tree.js.map +1 -0
- package/build/src/traits/authz_scopes.d.ts +30 -6
- package/build/src/traits/authz_scopes.d.ts.map +1 -1
- package/build/src/traits/authz_scopes.js +30 -18
- package/build/src/traits/authz_scopes.js.map +1 -1
- package/build/src/traits/has_uuid.d.ts +12 -12
- package/build/src/traits/has_uuid.d.ts.map +1 -1
- package/build/src/types.d.ts +1313 -28
- package/build/src/types.d.ts.map +1 -1
- package/build/src/types.js +20 -4
- package/build/src/types.js.map +1 -1
- package/build/stubs/config/app_acl.stub +4 -2
- package/build/stubs/config/authorization.stub +168 -14
- package/build/stubs/migration.stub +183 -13
- package/build/stubs/scopes_outbox_migration.stub +57 -0
- package/package.json +14 -7
- package/build/commands/openfga_import.d.ts +0 -28
- package/build/commands/openfga_import.d.ts.map +0 -1
- package/build/commands/openfga_import.js +0 -74
- package/build/commands/openfga_import.js.map +0 -1
- package/build/src/catalog.d.ts +0 -3
- package/build/src/catalog.d.ts.map +0 -1
- package/build/src/catalog.js +0 -103
- package/build/src/catalog.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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog_cache.js","sourceRoot":"","sources":["../../../src/catalog/catalog_cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EL reloj del motor (2.5 · J1). Es el ÚNICO sitio de `src/` donde se lee la
|
|
3
|
+
* hora de pared (`new Date()`); lo vigila `tests/clock.spec.ts` con un grep
|
|
4
|
+
* sobre las fuentes. Todo lo que decide con el tiempo —la caducidad en SQL
|
|
5
|
+
* (`whereActive`), el `current_time` de cada check de FGA, el filtro de
|
|
6
|
+
* caducidad en cliente de las enumeraciones y los tres estados de
|
|
7
|
+
* `resolveGrantExpiry`— lo hace con un `now()` inyectable, por defecto este.
|
|
8
|
+
*
|
|
9
|
+
* Por qué: con `new Date()` suelto, la caducidad exacta, la renovación y
|
|
10
|
+
* «expira ahora mismo» solo eran observables durmiendo (el juez esperaba
|
|
11
|
+
* 1,5 s de reloj real). Con el reloj inyectado el juez fija el instante y
|
|
12
|
+
* pregunta; y un consumidor puede congelarlo en sus propios tests.
|
|
13
|
+
*
|
|
14
|
+
* Lo que NO es: no es el reloj MONÓTONO de `forRequest({ maxAgeMs })` ni del
|
|
15
|
+
* memo del catálogo (`everyMs`), que miden ventanas con `performance.now()`
|
|
16
|
+
* y no deben moverse con NTP. Aquí se habla de instantes de pared, que es lo
|
|
17
|
+
* que `expiresAt` significa.
|
|
18
|
+
*/
|
|
19
|
+
export type Clock = () => Date;
|
|
20
|
+
/** Reloj de pared del proceso: el default de ambos drivers. */
|
|
21
|
+
export declare const systemClock: Clock;
|
|
22
|
+
/** `now` tiene que ser una función; se valida al construir (500 `E_AUTHZ_CONFIG` es del llamante). */
|
|
23
|
+
export declare function isClock(value: unknown): value is Clock;
|
|
24
|
+
//# sourceMappingURL=clock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../src/clock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,IAAI,CAAA;AAE9B,+DAA+D;AAC/D,eAAO,MAAM,WAAW,EAAE,KAAwB,CAAA;AAElD,sGAAsG;AACtG,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAEtD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Reloj de pared del proceso: el default de ambos drivers. */
|
|
2
|
+
export const systemClock = () => new Date();
|
|
3
|
+
/** `now` tiene que ser una función; se valida al construir (500 `E_AUTHZ_CONFIG` es del llamante). */
|
|
4
|
+
export function isClock(value) {
|
|
5
|
+
return typeof value === 'function';
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=clock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clock.js","sourceRoot":"","sources":["../../src/clock.ts"],"names":[],"mappings":"AAoBA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,WAAW,GAAU,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAA;AAElD,sGAAsG;AACtG,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAA;AACpC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { AuthorizationDriverFactory, AuthzWriteEvent } from './types.js';
|
|
2
|
-
import type {
|
|
1
|
+
import type { AuthorizationDriverFactory, AuthzCatalogWriteEvent, AuthzWriteEvent, HolderTypeMap, RelationsDriverFactory, ScopeChainResolver, ScopeDescendantsResolver, ScopeEdgesEnumerator, ScopeOutbox } from './types.js';
|
|
2
|
+
import type { CatalogSource } from './catalog/catalog.js';
|
|
3
|
+
import type { RelationsConfig } from './relations/define_relations_config.js';
|
|
3
4
|
/**
|
|
4
5
|
* Config del sistema de autorización. Todo lo específico del consumidor
|
|
5
6
|
* entra por aquí: qué drivers existen, cuál está activo, cómo se llaman sus
|
|
@@ -9,7 +10,7 @@ import type { HolderTypeMap } from './drivers/openfga_driver.js';
|
|
|
9
10
|
* default: env.get('AUTHZ_DRIVER', 'database'),
|
|
10
11
|
* holderTypes: { users: 'user', admins: 'admin' },
|
|
11
12
|
* drivers: {
|
|
12
|
-
* database: () => new DatabaseAuthorizationDriver({
|
|
13
|
+
* database: () => new DatabaseAuthorizationDriver({ resolveChain }),
|
|
13
14
|
* 'mi-driver': () => new MiDriver(),
|
|
14
15
|
* },
|
|
15
16
|
* hooks: { onWrite: auditarEscritura },
|
|
@@ -25,7 +26,7 @@ export interface AuthorizationConfig {
|
|
|
25
26
|
/**
|
|
26
27
|
* Holders del consumidor: morph name (`@MorphMap` del modelo) → tipo del
|
|
27
28
|
* modelo FGA. Lo necesitan el driver `openfga` y los comandos
|
|
28
|
-
* `openfga:provision
|
|
29
|
+
* `openfga:provision`; el driver `database` lo ignora.
|
|
29
30
|
*/
|
|
30
31
|
holderTypes?: HolderTypeMap;
|
|
31
32
|
/**
|
|
@@ -39,14 +40,207 @@ export interface AuthorizationConfig {
|
|
|
39
40
|
/** Nombre del store al provisionar. */
|
|
40
41
|
storeName?: string;
|
|
41
42
|
};
|
|
43
|
+
/**
|
|
44
|
+
* El árbol de scopes del consumidor: la ÚNICA costura entre su dominio y el
|
|
45
|
+
* motor. `resolveChain(scope)` devuelve la cadena canónica `[scope tal
|
|
46
|
+
* como está en tu tabla, ...ancestros]` (del más cercano a la raíz, `app`
|
|
47
|
+
* al final), o `null` si el scope no existe (2.5-B · K1: la identidad de un
|
|
48
|
+
* scope es la que devuelve el resolutor, nunca la forma con la que lo
|
|
49
|
+
* escribió el llamante). El mismo resolutor se pasa a los drivers; aquí lo
|
|
50
|
+
* usa el manager para validar `scopes.attached/moved` (padre existente,
|
|
51
|
+
* sin ciclos) antes de tocar el driver.
|
|
52
|
+
*/
|
|
53
|
+
scopes?: {
|
|
54
|
+
resolveChain: ScopeChainResolver;
|
|
55
|
+
/**
|
|
56
|
+
* Descendientes de un scope (2.1, B2). Solo lo usa `authorizedScopes`;
|
|
57
|
+
* sin él esa primitiva lanza 500 `E_AUTHZ_NO_DESCENDANTS_RESOLVER` (nunca
|
|
58
|
+
* una lista incompleta). `sqlDescendantsOf(...)` lo genera para una tabla
|
|
59
|
+
* con columna padre (PG y SQLite).
|
|
60
|
+
*/
|
|
61
|
+
descendantsOf?: ScopeDescendantsResolver;
|
|
62
|
+
/**
|
|
63
|
+
* **El árbol entero, paginado** (3b-3a): lo que `authz:reconcile` usa
|
|
64
|
+
* para reconstruir —y para PODAR— el árbol de un driver que lo guarda
|
|
65
|
+
* como hechos propios (`openfga` en modo `facts`). `resolveChain`
|
|
66
|
+
* responde por un scope; esto los enumera todos.
|
|
67
|
+
*
|
|
68
|
+
* scopes: {
|
|
69
|
+
* resolveChain,
|
|
70
|
+
* enumerateEdges: sqlScopeEdges({
|
|
71
|
+
* table: 'organization_nodes', uuidColumn: 'uuid',
|
|
72
|
+
* parentColumn: 'parent_uuid', typeColumn: 'kind',
|
|
73
|
+
* }),
|
|
74
|
+
* }
|
|
75
|
+
*
|
|
76
|
+
* Solo lo usa `authz:reconcile`: sin él la migración del ÁRBOL no se
|
|
77
|
+
* hace y el comando lo dice (500 `E_AUTHZ_CONFIG`) en vez de suponer que
|
|
78
|
+
* el árbol del backend ya está bien.
|
|
79
|
+
*/
|
|
80
|
+
enumerateEdges?: ScopeEdgesEnumerator;
|
|
81
|
+
/**
|
|
82
|
+
* Tope de scopes que `authorizedScopes` devuelve (default 1000); superado
|
|
83
|
+
* ⇒ 422 `E_AUTHZ_TOO_MANY_SCOPES`, nunca parcial. Se puede bajar por
|
|
84
|
+
* llamada (`{ maxScopes }`).
|
|
85
|
+
*/
|
|
86
|
+
maxScopes?: number;
|
|
87
|
+
/**
|
|
88
|
+
* Tope de nodos por llamada a `descendantsOf` (default 10 000): es el
|
|
89
|
+
* `maxNodes` que recibe el resolutor, y si devuelve más el manager lanza
|
|
90
|
+
* 422 `E_AUTHZ_TOO_MANY_SCOPES`. Ni esta cota ni `maxScopes` pueden
|
|
91
|
+
* superar `MAX_SCOPE_BOUND` (10 000 000; 500 `E_AUTHZ_CONFIG` si lo
|
|
92
|
+
* hacen, 2.5-B · ⚪6).
|
|
93
|
+
*/
|
|
94
|
+
maxDescendants?: number;
|
|
95
|
+
/**
|
|
96
|
+
* **La outbox del árbol** (3b-2d, panel 2 cruce 4 · S5). Con ella,
|
|
97
|
+
* `manager.scopes.attached/moved/detached` NO escriben en el backend:
|
|
98
|
+
* ENCOLAN el cambio —pásale tu transacción en
|
|
99
|
+
* `{ transaction }`— y lo aplica después `node ace authz:scopes:relay`.
|
|
100
|
+
*
|
|
101
|
+
* Sin ella, el paquete escribe en el backend dentro de TU transacción y
|
|
102
|
+
* un `rollback` posterior no lo deshace: el árbol del backend queda
|
|
103
|
+
* adelantado al tuyo y, en `hierarchy: 'facts'` (donde FGA es el PDP),
|
|
104
|
+
* eso es una escalada persistente e invisible desde tu base. Por eso el
|
|
105
|
+
* driver `facts` se niega a construirse sin outbox y sin
|
|
106
|
+
* `acceptScopeDriftRisk: true`.
|
|
107
|
+
*
|
|
108
|
+
* El paquete no impone tabla: `sqlScopeOutbox(...)` implementa el puerto
|
|
109
|
+
* sobre Lucid y `stubs/scopes_outbox_migration.stub` es la migración que
|
|
110
|
+
* puedes copiar, pero cualquier implementación del puerto vale.
|
|
111
|
+
*
|
|
112
|
+
* Lo que la outbox NO arregla: durante el lag del relay (segundos) el
|
|
113
|
+
* backend decide con el árbol VIEJO. Es un fail-open temporal —el tenant
|
|
114
|
+
* antiguo conserva acceso tras un `moved`, los denies heredados no
|
|
115
|
+
* aplican tras un `attached`—. No hay 2PC.
|
|
116
|
+
*/
|
|
117
|
+
outbox?: ScopeOutbox;
|
|
118
|
+
/**
|
|
119
|
+
* «Sé que sin outbox un `rollback` de mi transacción deja el árbol del
|
|
120
|
+
* backend adelantado al mío, y lo asumo» (3b-2e · E3). Es la salida
|
|
121
|
+
* explícita del gate del MANAGER, que es quien encola: declarar la outbox
|
|
122
|
+
* solo en el driver dejaba el gate del driver contento y la mitigación
|
|
123
|
+
* APAGADA. Tiene que ser el booleano `true`: un valor «truthy» no es una
|
|
124
|
+
* aceptación.
|
|
125
|
+
*/
|
|
126
|
+
acceptScopeDriftRisk?: boolean;
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Catálogos de roles/permisos del consumidor (uno por módulo: plataforma,
|
|
130
|
+
* tenant…). Los usan `authz:catalog:sync` (los sincroniza en orden, con
|
|
131
|
+
* poda de vínculos) y `authz:catalog:diff` (falla en CI si la base no
|
|
132
|
+
* coincide con el config). Funciones y no valores: un catálogo puede vivir
|
|
133
|
+
* en otro archivo y cargarse perezosamente.
|
|
134
|
+
*/
|
|
135
|
+
catalogs?: CatalogSource[];
|
|
136
|
+
/**
|
|
137
|
+
* Reloj de pared del motor (2.5 · J1): el `now()` con el que TODO driver
|
|
138
|
+
* resuelto por este manager decide la caducidad (`expires_at` en SQL,
|
|
139
|
+
* `current_time` de FGA, filtros en cliente, los tres estados del
|
|
140
|
+
* re-grant). Default: `new Date()` en el driver. El manager lo aplica al
|
|
141
|
+
* resolver el driver (`driver.withClock(clock)`) y todas sus vistas de
|
|
142
|
+
* `forRequest()` lo comparten; un driver sin `withClock` con `clock`
|
|
143
|
+
* declarado es 500 `E_AUTHZ_CONFIG` (nunca un reloj ignorado en silencio).
|
|
144
|
+
* Para tests del consumidor y para un reloj corregido (NTP en el proceso);
|
|
145
|
+
* NO es el reloj monótono de `forRequest({ maxAgeMs })`.
|
|
146
|
+
*/
|
|
147
|
+
clock?: () => Date;
|
|
148
|
+
/**
|
|
149
|
+
* Toda escritura (`grant`, `revoke`, `deny`, `removeDeny`, `scopes.*`)
|
|
150
|
+
* tiene que llevar `actor` (2.1, B7); sin él, 422 `E_AUTHZ_ACTOR_REQUIRED`
|
|
151
|
+
* antes de tocar el driver. Default `false`: opt-in, y el manager lo avisa
|
|
152
|
+
* al construirse (ver `warnOnOptInSecurity`).
|
|
153
|
+
*/
|
|
154
|
+
requireActor?: boolean;
|
|
155
|
+
/**
|
|
156
|
+
* Las SEIS escrituras (`grant`, `revoke`, `deny`, `removeDeny`,
|
|
157
|
+
* `scopes.attached/moved/detached`) tienen que declarar `within` (2.1, B1;
|
|
158
|
+
* 2D · F2; en `moved`/`attached` contra destino Y origen, 2E · H1): sin él,
|
|
159
|
+
* 422 `E_AUTHZ_WITHIN_REQUIRED`. `within` se toma de la SESIÓN (tenant
|
|
160
|
+
* autenticado), nunca de la misma entrada que el scope. `'non-root'` exige
|
|
161
|
+
* además que `within` no sea `APP_SCOPE` (422 `E_AUTHZ_WITHIN_ROOT_FORBIDDEN`):
|
|
162
|
+
* la raíz contiene todo y como contención no dice nada; la plataforma, que
|
|
163
|
+
* sí escribe en la raíz, usa `manager.driver()` o una config sin el flag.
|
|
164
|
+
* Default `false` (auditor E2, aceptado y nombrado): la contención es
|
|
165
|
+
* opt-in en 2.1; con `false` un call-site que no la declare escribe donde
|
|
166
|
+
* le digan. Ponlo en `true`/`'non-root'` en cuanto todos los call-sites de
|
|
167
|
+
* tenant la pasen.
|
|
168
|
+
*/
|
|
169
|
+
requireWithin?: boolean | 'non-root';
|
|
170
|
+
/**
|
|
171
|
+
* El manager avisa por `console.warn` UNA vez por config cuando
|
|
172
|
+
* `requireWithin`/`requireActor` no están en `true` (seguridad opt-in).
|
|
173
|
+
* `false` lo silencia: es la forma de decir "lo sé y lo asumo".
|
|
174
|
+
*/
|
|
175
|
+
warnOnOptInSecurity?: boolean;
|
|
176
|
+
/**
|
|
177
|
+
* Lista BLANCA de permisos que la API de delegación puede meter en un rol
|
|
178
|
+
* local (3B · B3): `defineScopedRole`/`updateScopedRole` rechazan (422
|
|
179
|
+
* `E_AUTHZ_PERMISSION_NOT_DELEGABLE`) cualquier permiso fuera de ella,
|
|
180
|
+
* aunque el actor lo tenga. Default `[]`: nadie delega nada hasta que la
|
|
181
|
+
* plataforma declare qué se puede delegar (los permisos de plataforma
|
|
182
|
+
* —`app:*`, ajustes de organización— no deberían estar). Además el actor
|
|
183
|
+
* tiene que tener cada permiso EFECTIVO en el owner (sin deny).
|
|
184
|
+
*/
|
|
185
|
+
delegablePermissions?: string[];
|
|
186
|
+
/**
|
|
187
|
+
* **ReBAC genérico** (Fase 4, `relations/`). Los drivers del puerto
|
|
188
|
+
* `RelationsDriver`, por clave, análogos a `drivers` de roles, más la CONFIG
|
|
189
|
+
* de relaciones (`defineRelationsConfig`) que declara los tipos y sus
|
|
190
|
+
* relaciones. La factory del driver `openfga` de relaciones entra por el
|
|
191
|
+
* subpath `/openfga` DENTRO de ella, como la de roles, así que ningún comando
|
|
192
|
+
* importa el SDK.
|
|
193
|
+
*
|
|
194
|
+
* const relationsConfig = defineRelationsConfig({
|
|
195
|
+
* objectTypes: [{ type: 'document', relations: [{ name: 'viewer' }] }],
|
|
196
|
+
* holderTypes: ['user'],
|
|
197
|
+
* })
|
|
198
|
+
* relations: {
|
|
199
|
+
* config: relationsConfig,
|
|
200
|
+
* default: env.get('AUTHZ_DRIVER', 'database'),
|
|
201
|
+
* drivers: {
|
|
202
|
+
* database: () => new DatabaseRelationsDriver(relationsConfig),
|
|
203
|
+
* openfga: () => new OpenFgaRelationsDriver(relationsConfig, { ... }),
|
|
204
|
+
* },
|
|
205
|
+
* }
|
|
206
|
+
*
|
|
207
|
+
* Con `config` declarado, el paquete cablea el `RelationsManager` como
|
|
208
|
+
* singleton (servicio `@jantstack/adonis-authz/services/relations`, análogo
|
|
209
|
+
* al de roles) y `openfga:provision` incluye los tipos de relación en el
|
|
210
|
+
* modelo `facts` que publica (así un store recién aprovisionado ya acepta
|
|
211
|
+
* tuplas de relación sin un `authz:catalog:sync` previo). `drivers` los usa
|
|
212
|
+
* además `authz:relations:reconcile` para el ORIGEN y el DESTINO de una
|
|
213
|
+
* migración de tuplas.
|
|
214
|
+
*/
|
|
215
|
+
relations?: {
|
|
216
|
+
/**
|
|
217
|
+
* La config de relaciones (`defineRelationsConfig(...)`): los tipos de
|
|
218
|
+
* objeto y sus relaciones. Es lo que el `RelationsManager` de servicio usa
|
|
219
|
+
* para F-05 (rechazar un tipo/relación no declarado) y lo que
|
|
220
|
+
* `openfga:provision` mete en el modelo `facts`. Es la MISMA instancia que
|
|
221
|
+
* las factories de `drivers` capturan para construir sus drivers.
|
|
222
|
+
*/
|
|
223
|
+
config?: RelationsConfig;
|
|
224
|
+
/**
|
|
225
|
+
* Clave del driver de relaciones ACTIVO (en `drivers`) que el singleton de
|
|
226
|
+
* servicio resuelve. Default: el `default` de roles (los drivers de
|
|
227
|
+
* relaciones se nombran igual que los de roles).
|
|
228
|
+
*/
|
|
229
|
+
default?: string;
|
|
230
|
+
drivers?: Record<string, RelationsDriverFactory>;
|
|
231
|
+
};
|
|
42
232
|
/**
|
|
43
233
|
* Hooks del consumidor. `onWrite` se llama tras cada escritura del motor
|
|
44
|
-
* (grant/revoke/deny/removeDeny) — el sitio natural
|
|
45
|
-
*
|
|
46
|
-
*
|
|
234
|
+
* (grant/extended/revoke/deny/removeDeny/scope_purged) — el sitio natural
|
|
235
|
+
* para auditar o emitir eventos. `onCatalogWrite` (3B · B3) tras cada
|
|
236
|
+
* escritura del CATÁLOGO por la API de delegación (`role_defined`,
|
|
237
|
+
* `role_updated`, `role_purged`), siempre con actor. Ninguno debe lanzar:
|
|
238
|
+
* una escritura ya aplicada no se revierte por un side-effect fallido (se
|
|
239
|
+
* registra y se sigue).
|
|
47
240
|
*/
|
|
48
241
|
hooks?: {
|
|
49
242
|
onWrite?: (event: AuthzWriteEvent) => Promise<void>;
|
|
243
|
+
onCatalogWrite?: (event: AuthzCatalogWriteEvent) => Promise<void>;
|
|
50
244
|
};
|
|
51
245
|
}
|
|
52
246
|
export declare function defineConfig<T extends AuthorizationConfig>(config: T): T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,WAAW,EACZ,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAE7E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAA;IAEnD;;;;OAIG;IACH,WAAW,CAAC,EAAE,aAAa,CAAA;IAE3B;;;OAGG;IACH,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,uCAAuC;QACvC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE;QACP,YAAY,EAAE,kBAAkB,CAAA;QAChC;;;;;WAKG;QACH,aAAa,CAAC,EAAE,wBAAwB,CAAA;QACxC;;;;;;;;;;;;;;;;;WAiBG;QACH,cAAc,CAAC,EAAE,oBAAoB,CAAA;QACrC;;;;WAIG;QACH,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB;;;;;;WAMG;QACH,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB;;;;;;;;;;;;;;;;;;;;;WAqBG;QACH,MAAM,CAAC,EAAE,WAAW,CAAA;QACpB;;;;;;;WAOG;QACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;KAC/B,CAAA;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAA;IAE1B;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;IAElB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;IAEpC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAE7B;;;;;;;;OAQG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,SAAS,CAAC,EAAE;QACV;;;;;;WAMG;QACH,MAAM,CAAC,EAAE,eAAe,CAAA;QACxB;;;;WAIG;QACH,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;KACjD,CAAA;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QACnD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAClE,CAAA;CACF;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,mBAAmB,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAExE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AA4QA,MAAM,UAAU,YAAY,CAAgC,MAAS;IACnE,OAAO,MAAM,CAAA;AACf,CAAC"}
|