@jantstack/adonis-authz 2.5.0-alpha.1 → 2.5.0-alpha.3
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 +515 -22
- package/build/commands/authz_relations_reconcile.d.ts +13 -62
- package/build/commands/authz_relations_reconcile.d.ts.map +1 -1
- package/build/commands/authz_relations_reconcile.js +202 -116
- package/build/commands/authz_relations_reconcile.js.map +1 -1
- package/build/commands/openfga_provision.d.ts +62 -0
- package/build/commands/openfga_provision.d.ts.map +1 -1
- package/build/commands/openfga_provision.js +193 -1
- package/build/commands/openfga_provision.js.map +1 -1
- package/build/index.d.ts +6 -6
- package/build/index.d.ts.map +1 -1
- package/build/index.js +3 -3
- package/build/index.js.map +1 -1
- package/build/providers/authz_provider.d.ts.map +1 -1
- package/build/providers/authz_provider.js +4 -1
- package/build/providers/authz_provider.js.map +1 -1
- package/build/src/define_config.d.ts +32 -0
- package/build/src/define_config.d.ts.map +1 -1
- package/build/src/define_config.js +109 -0
- package/build/src/define_config.js.map +1 -1
- package/build/src/drivers/database_relations_driver.d.ts +36 -1
- package/build/src/drivers/database_relations_driver.d.ts.map +1 -1
- package/build/src/drivers/database_relations_driver.js +213 -46
- package/build/src/drivers/database_relations_driver.js.map +1 -1
- package/build/src/drivers/openfga_driver.d.ts +30 -4
- package/build/src/drivers/openfga_driver.d.ts.map +1 -1
- package/build/src/drivers/openfga_driver.js +151 -45
- package/build/src/drivers/openfga_driver.js.map +1 -1
- package/build/src/drivers/openfga_facts.d.ts +21 -0
- package/build/src/drivers/openfga_facts.d.ts.map +1 -1
- package/build/src/drivers/openfga_facts.js +74 -8
- package/build/src/drivers/openfga_facts.js.map +1 -1
- package/build/src/drivers/openfga_relations_driver.d.ts +140 -10
- package/build/src/drivers/openfga_relations_driver.d.ts.map +1 -1
- package/build/src/drivers/openfga_relations_driver.js +743 -49
- package/build/src/drivers/openfga_relations_driver.js.map +1 -1
- package/build/src/errors.d.ts +148 -0
- package/build/src/errors.d.ts.map +1 -1
- package/build/src/errors.js +166 -0
- package/build/src/errors.js.map +1 -1
- package/build/src/manager.d.ts.map +1 -1
- package/build/src/manager.js +15 -5
- package/build/src/manager.js.map +1 -1
- package/build/src/openfga.d.ts +1 -1
- package/build/src/openfga.d.ts.map +1 -1
- package/build/src/openfga.js +1 -1
- package/build/src/openfga.js.map +1 -1
- package/build/src/relations/check_many.d.ts +1 -1
- package/build/src/relations/check_many.d.ts.map +1 -1
- package/build/src/relations/check_many.js +6 -4
- package/build/src/relations/check_many.js.map +1 -1
- package/build/src/relations/define_relations_config.d.ts +187 -1
- package/build/src/relations/define_relations_config.d.ts.map +1 -1
- package/build/src/relations/define_relations_config.js +395 -7
- package/build/src/relations/define_relations_config.js.map +1 -1
- package/build/src/relations/manager.d.ts +33 -2
- package/build/src/relations/manager.d.ts.map +1 -1
- package/build/src/relations/manager.js +123 -4
- package/build/src/relations/manager.js.map +1 -1
- package/build/src/relations/reconcile.d.ts +295 -13
- package/build/src/relations/reconcile.d.ts.map +1 -1
- package/build/src/relations/reconcile.js +886 -85
- package/build/src/relations/reconcile.js.map +1 -1
- package/build/src/relations/tuple_order.d.ts +126 -0
- package/build/src/relations/tuple_order.d.ts.map +1 -0
- package/build/src/relations/tuple_order.js +598 -0
- package/build/src/relations/tuple_order.js.map +1 -0
- package/build/src/relations_config_store.d.ts.map +1 -1
- package/build/src/relations_config_store.js +29 -7
- package/build/src/relations_config_store.js.map +1 -1
- package/build/src/relations_reconcile.d.ts +79 -0
- package/build/src/relations_reconcile.d.ts.map +1 -0
- package/build/src/relations_reconcile.js +85 -0
- package/build/src/relations_reconcile.js.map +1 -0
- package/build/src/scope_outbox.d.ts +9 -5
- package/build/src/scope_outbox.d.ts.map +1 -1
- package/build/src/scope_outbox.js +7 -4
- package/build/src/scope_outbox.js.map +1 -1
- package/build/src/shared/backend_guard.d.ts +8 -0
- package/build/src/shared/backend_guard.d.ts.map +1 -1
- package/build/src/shared/backend_guard.js +15 -0
- package/build/src/shared/backend_guard.js.map +1 -1
- package/build/src/testing/main.d.ts +1 -1
- package/build/src/testing/main.d.ts.map +1 -1
- package/build/src/testing/main.js +1 -1
- package/build/src/testing/main.js.map +1 -1
- package/build/src/testing/relations_contract.d.ts +18 -0
- package/build/src/testing/relations_contract.d.ts.map +1 -1
- package/build/src/testing/relations_contract.js +895 -45
- package/build/src/testing/relations_contract.js.map +1 -1
- package/build/src/testing/relations_reconcile_contract.d.ts +9 -0
- package/build/src/testing/relations_reconcile_contract.d.ts.map +1 -1
- package/build/src/testing/relations_reconcile_contract.js +207 -0
- package/build/src/testing/relations_reconcile_contract.js.map +1 -1
- package/build/src/testing/scope_outbox_contract.d.ts +14 -1
- package/build/src/testing/scope_outbox_contract.d.ts.map +1 -1
- package/build/src/testing/scope_outbox_contract.js +126 -48
- package/build/src/testing/scope_outbox_contract.js.map +1 -1
- package/build/src/types.d.ts +90 -6
- package/build/src/types.d.ts.map +1 -1
- package/build/src/types.js +2 -0
- package/build/src/types.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AuthorizationConfigError } from './errors.js';
|
|
1
2
|
/**
|
|
2
3
|
* **La clave del driver de RELACIONES activo** (2.4.0-alpha.10): `relations.default`
|
|
3
4
|
* y, si falta, el `default` de roles — las relaciones cambian de driver con él.
|
|
@@ -9,7 +10,115 @@
|
|
|
9
10
|
export function activeRelationsDriverKey(config) {
|
|
10
11
|
return config.relations?.default ?? config.default;
|
|
11
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* **Listas blancas por nivel de `AuthorizationConfig`** (plan 2.5 · lote B · B2,
|
|
15
|
+
* gemelo en roles de la propiedad universal del linaje L5: «ninguna clave de
|
|
16
|
+
* una spec de config se descarta»). Hasta `2.5.0-alpha.1` `defineConfig` era la
|
|
17
|
+
* identidad: `requireWithing: true` (typo) no exigía nada y nadie lo decía. Una
|
|
18
|
+
* clave nueva del paquete entra AQUÍ en el mismo commit que su efecto.
|
|
19
|
+
*/
|
|
20
|
+
export const AUTHORIZATION_CONFIG_KEYS = Object.freeze({
|
|
21
|
+
root: Object.freeze([
|
|
22
|
+
'default',
|
|
23
|
+
'drivers',
|
|
24
|
+
'holderTypes',
|
|
25
|
+
'openfga',
|
|
26
|
+
'scopes',
|
|
27
|
+
'catalogs',
|
|
28
|
+
'clock',
|
|
29
|
+
'freezeTimeoutMs',
|
|
30
|
+
'requireActor',
|
|
31
|
+
'requireTransactionalWrites',
|
|
32
|
+
'requireWithin',
|
|
33
|
+
'warnOnOptInSecurity',
|
|
34
|
+
'delegablePermissions',
|
|
35
|
+
'relations',
|
|
36
|
+
'hooks',
|
|
37
|
+
]),
|
|
38
|
+
openfga: Object.freeze(['url', 'storeId', 'modelId', 'storeName']),
|
|
39
|
+
scopes: Object.freeze([
|
|
40
|
+
'resolveChain',
|
|
41
|
+
'descendantsOf',
|
|
42
|
+
'enumerateEdges',
|
|
43
|
+
'maxScopes',
|
|
44
|
+
'maxDescendants',
|
|
45
|
+
'maxDepth',
|
|
46
|
+
'outbox',
|
|
47
|
+
'acceptScopeDriftRisk',
|
|
48
|
+
]),
|
|
49
|
+
relations: Object.freeze([
|
|
50
|
+
'config',
|
|
51
|
+
'default',
|
|
52
|
+
'drivers',
|
|
53
|
+
'requireTransactionalWrites',
|
|
54
|
+
'assertWrite',
|
|
55
|
+
'onRelationWrite',
|
|
56
|
+
'requireActor',
|
|
57
|
+
]),
|
|
58
|
+
hooks: Object.freeze(['onWrite', 'onCatalogWrite']),
|
|
59
|
+
});
|
|
60
|
+
const _exhaustiveRoot = {};
|
|
61
|
+
const _exhaustiveOpenFga = {};
|
|
62
|
+
const _exhaustiveScopes = {};
|
|
63
|
+
const _exhaustiveRelations = {};
|
|
64
|
+
const _exhaustiveHooks = {};
|
|
65
|
+
void _exhaustiveRoot, _exhaustiveOpenFga, _exhaustiveScopes, _exhaustiveRelations, _exhaustiveHooks;
|
|
66
|
+
AUTHORIZATION_CONFIG_KEYS.root;
|
|
67
|
+
AUTHORIZATION_CONFIG_KEYS.openfga;
|
|
68
|
+
AUTHORIZATION_CONFIG_KEYS.scopes;
|
|
69
|
+
AUTHORIZATION_CONFIG_KEYS.relations;
|
|
70
|
+
AUTHORIZATION_CONFIG_KEYS.hooks;
|
|
71
|
+
/** ⚪ 13 (gemelo roles): un BLOQUE conocido con un valor que no es un objeto plano (`scopes: true`) es 500, no silencio. */
|
|
72
|
+
function assertConfigBlock(value, path) {
|
|
73
|
+
if (value === undefined)
|
|
74
|
+
return;
|
|
75
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
76
|
+
throw new AuthorizationConfigError(`defineConfig: '${path}' tiene que ser un objeto (llegó ${JSON.stringify(value)}). Un valor que no es objeto en ` +
|
|
77
|
+
`una clave conocida no es «nada»: se ignoraría en silencio (plan 2.5 · B2).`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function assertKnownConfigKeys(value, known, path) {
|
|
81
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
82
|
+
return;
|
|
83
|
+
for (const key of Object.keys(value)) {
|
|
84
|
+
if (known.includes(key))
|
|
85
|
+
continue;
|
|
86
|
+
const where = path === '' ? `'${key}' en la raíz` : `'${path}.${key}'`;
|
|
87
|
+
throw new AuthorizationConfigError(`defineConfig: la clave ${where} no existe (claves válidas en ${path === '' ? 'la raíz' : path}: ${known.join(', ')}). ` +
|
|
88
|
+
`Ninguna clave del config se descarta en silencio (plan 2.5 · B2): un typo ('requireWithing') sería una ` +
|
|
89
|
+
`política que crees activa y no lo está. Quítala o corrige el nombre.`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Valida la FORMA del config (claves conocidas por nivel: la raíz y los
|
|
94
|
+
* bloques `openfga`/`scopes`/`relations`/`hooks`) y lo devuelve tal cual
|
|
95
|
+
* (misma referencia). Lo demás —drivers, catálogos, políticas— lo valida el
|
|
96
|
+
* manager al resolver.
|
|
97
|
+
*/
|
|
12
98
|
export function defineConfig(config) {
|
|
99
|
+
assertAuthorizationConfigShape(config);
|
|
13
100
|
return config;
|
|
14
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* **El punto de paso ÚNICO de la forma del config de roles** (cierre 1 del lote
|
|
104
|
+
* B · 🟡 6, auditor: «en roles el punto de paso NO es único»). Hasta el cierre
|
|
105
|
+
* solo `defineConfig` validaba las claves: un `config/authorization.ts` que
|
|
106
|
+
* exportara el objeto a pelo (`{ … } satisfies AuthorizationConfig`) o un
|
|
107
|
+
* `new AuthorizationManager({ requireWithing: true })` se tragaba el typo. La
|
|
108
|
+
* llaman `defineConfig`, el constructor de `AuthorizationManager` (que cubre el
|
|
109
|
+
* provider: `new AuthorizationManager(config)`) y `buildRelationsManager` (el
|
|
110
|
+
* servicio de relaciones, que no construye el manager de roles). Idempotente y
|
|
111
|
+
* barata (claves, no valores).
|
|
112
|
+
*/
|
|
113
|
+
export function assertAuthorizationConfigShape(config) {
|
|
114
|
+
if (!config || typeof config !== 'object') {
|
|
115
|
+
throw new AuthorizationConfigError(`defineConfig: se esperaba un objeto y llegó ${typeof config}.`);
|
|
116
|
+
}
|
|
117
|
+
const c = config;
|
|
118
|
+
assertKnownConfigKeys(c, AUTHORIZATION_CONFIG_KEYS.root, '');
|
|
119
|
+
for (const block of ['openfga', 'scopes', 'relations', 'hooks']) {
|
|
120
|
+
assertConfigBlock(c[block], block);
|
|
121
|
+
assertKnownConfigKeys(c[block], AUTHORIZATION_CONFIG_KEYS[block], block);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
15
124
|
//# sourceMappingURL=define_config.js.map
|
|
@@ -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":"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"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { relationPartitionTrigger, relationPartitionTriggerDrops } from '../relation_partition_trigger.js';
|
|
2
2
|
import type { Clock } from '../clock.js';
|
|
3
|
-
import type { RelObject, RelSubject, RelationObjectsPage, RelationSubjectsPage, RelationPage, RelationTuplePage, RelationsDriver, RelationsDriverCapabilities, RelationTransactionOptions, RelationWriteOptions, ScopeRef } from '../types.js';
|
|
3
|
+
import type { RelObject, RelSubject, RelationObjectsPage, RelationSubjectsPage, RelationPage, RelationTuplePage, RelationsDriver, RelationsDriverCapabilities, RelationTransactionOptions, RelationWriteOptions, RelationDenyOptions, RelationDecision, ScopeRef } from '../types.js';
|
|
4
4
|
import type { RelationsConfig } from '../relations/define_relations_config.js';
|
|
5
|
+
/**
|
|
6
|
+
* **Cota de candidatos de `membersOf` cuando el objeto tiene un deny vigente** (lote D · cierre 1 de D1, 🟡 4): con deny
|
|
7
|
+
* cada candidato se juzga con un `check` (una CTE por candidato). Pasada ⇒ 500 `E_AUTHZ_MEMBERS_DENY_LIMIT`, nunca una
|
|
8
|
+
* lista parcial. En «Limits» del README, atada a esta constante (`scope_depth.spec`).
|
|
9
|
+
*/
|
|
10
|
+
export declare const RELATIONS_MEMBERS_DENY_CHECK_MAX = 1000;
|
|
5
11
|
export { relationPartitionTrigger, relationPartitionTriggerDrops };
|
|
6
12
|
export interface DatabaseRelationsDriverOptions {
|
|
7
13
|
/** Nombre de la conexión Lucid (default: la primaria). */
|
|
@@ -73,6 +79,15 @@ export declare class DatabaseRelationsDriver implements RelationsDriver {
|
|
|
73
79
|
*/
|
|
74
80
|
withClock(now: Clock): RelationsDriver;
|
|
75
81
|
relate(subject: RelSubject, relation: string, object: RelObject, partition: ScopeRef, options?: RelationWriteOptions): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* **`deny` = la tupla `denied_<rel>`, por el MISMO camino idempotente que `relate`** (lote D · D1): F-05 sobre el
|
|
84
|
+
* nombre PÚBLICO, la puerta de escritura del opt-in (fase `'write'`, D10), ni `group` ni `*`, y SIN caducidad (D3:
|
|
85
|
+
* `expiresAt` ⇒ 422; un deny escrito a mano con caducidad se rehace permanente). Por la transacción del llamante si
|
|
86
|
+
* llega (L-4, como `relate`).
|
|
87
|
+
*/
|
|
88
|
+
deny(subject: RelSubject, relation: string, object: RelObject, partition: ScopeRef, options?: RelationDenyOptions): Promise<void>;
|
|
89
|
+
/** `removeDeny`: borra la tupla `denied_<rel>`. Sobre CUALQUIER tipo declarado (D8/R2-4 b). No-op si no está. */
|
|
90
|
+
removeDeny(subject: RelSubject, relation: string, object: RelObject, partition: ScopeRef, options?: RelationDenyOptions): Promise<void>;
|
|
76
91
|
unrelate(subject: RelSubject, relation: string, object: RelObject, partition: ScopeRef, options?: RelationWriteOptions): Promise<void>;
|
|
77
92
|
/**
|
|
78
93
|
* **F-05 en las LECTURAS y las PURGAS del driver** (2.4.0-alpha.3, cierre
|
|
@@ -96,8 +111,28 @@ export declare class DatabaseRelationsDriver implements RelationsDriver {
|
|
|
96
111
|
* de la consulta (defensa en profundidad: el manager ya lo hizo).
|
|
97
112
|
*/
|
|
98
113
|
checkMany(subject: RelSubject, relation: string, objects: RelObject[], partition: ScopeRef): Promise<boolean[]>;
|
|
114
|
+
/**
|
|
115
|
+
* **`decideMany` = la consulta de `checkMany`** (lote D · D9): los grants de `down*(R)` y los denies de
|
|
116
|
+
* `up*(down*(R))` de cada objeto distinto, con UN `now` y en UNA consulta, y la regla AMPLIA de `decideFrom` (la
|
|
117
|
+
* misma función que el doble y `openfga` cuando alinea su `batchCheck`). Tope, `[]` y F-05 por ítem como `checkMany`.
|
|
118
|
+
*/
|
|
119
|
+
decideMany(subject: RelSubject, relation: string, objects: RelObject[], partition: ScopeRef): Promise<RelationDecision[]>;
|
|
99
120
|
listObjects(subject: RelSubject, relation: string, objectType: string, partition: ScopeRef, _page?: RelationPage): Promise<RelationObjectsPage>;
|
|
100
121
|
listSubjects(relation: string, object: RelObject, partition: ScopeRef, _page?: RelationPage): Promise<RelationSubjectsPage>;
|
|
122
|
+
/**
|
|
123
|
+
* **`listDenies`** (lote D · D1): los sujetos con deny DIRECTO de `relation` sobre `object` —hechos, como
|
|
124
|
+
* `listSubjects` sobre la relación almacenada `denied_<rel>`; no resta ni deriva—. Sobre CUALQUIER tipo declarado
|
|
125
|
+
* (D8/R2-4 b: con el opt-in retirado, los denies vivos se siguen pudiendo listar y borrar).
|
|
126
|
+
*/
|
|
127
|
+
listDenies(relation: string, object: RelObject, partition: ScopeRef, page?: RelationPage): Promise<RelationSubjectsPage>;
|
|
128
|
+
/**
|
|
129
|
+
* **`denyPhase` — ¿admite este driver escrituras de deny en el tipo?** (lote D · D2, R2-5): la fase del opt-in EN
|
|
130
|
+
* LA CONFIG DE ESTE DRIVER (`'write'`, `'read'` o `null`). F-05 estricto del par (422), cero sentencias: es
|
|
131
|
+
* configuración. La llama `reconcileRelations` en la fase de plan cuando el origen trae denies.
|
|
132
|
+
*/
|
|
133
|
+
denyPhase(object: {
|
|
134
|
+
type: string;
|
|
135
|
+
}, relation: string): Promise<'read' | 'write' | null>;
|
|
101
136
|
/**
|
|
102
137
|
* Membresía TRANSITIVA de un objeto-grupo: todos los HOLDERS que son `member`
|
|
103
138
|
* directa o a través de grupos anidados (usersets `group#member`). CTE
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database_relations_driver.d.ts","sourceRoot":"","sources":["../../../src/drivers/database_relations_driver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"database_relations_driver.d.ts","sourceRoot":"","sources":["../../../src/drivers/database_relations_driver.ts"],"names":[],"mappings":"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"}
|