@nxgt/janus 0.2.2 → 0.3.0
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 +48 -11
- package/dist/chunks/{index-hm4v76kd.js → index-53y1afjz.js} +2 -2
- package/dist/chunks/{index-0xarpm7z.js → index-8tksqzkr.js} +2 -2
- package/dist/chunks/{index-fgb3t64y.js → index-mgh85djb.js} +2 -2
- package/dist/chunks/{index-6p56fpbe.js → index-qwfkhqkk.js} +22 -4
- package/dist/chunks/{index-6p56fpbe.js.map → index-qwfkhqkk.js.map} +4 -4
- package/dist/conformance/index.js +3 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -4
- package/dist/index.js.map +2 -2
- package/dist/permissions/index.js +47 -21
- package/dist/permissions/index.js.map +6 -6
- package/dist/permissions/input.d.ts +5 -3
- package/dist/permissions/input.d.ts.map +1 -1
- package/dist/permissions/model.d.ts +19 -8
- package/dist/permissions/model.d.ts.map +1 -1
- package/dist/permissions/resolve.d.ts.map +1 -1
- package/dist/permissions/reverse.d.ts.map +1 -1
- package/dist/subjects/notation.d.ts +7 -3
- package/dist/subjects/notation.d.ts.map +1 -1
- package/dist/subjects/subject.d.ts +53 -0
- package/dist/subjects/subject.d.ts.map +1 -1
- package/docs/guide/permissions.md +50 -18
- package/docs/guide/vocabulary.md +7 -4
- package/docs/roadmap.md +5 -0
- package/docs/troubleshooting.md +18 -3
- package/package.json +1 -1
- /package/dist/chunks/{index-hm4v76kd.js.map → index-53y1afjz.js.map} +0 -0
- /package/dist/chunks/{index-0xarpm7z.js.map → index-8tksqzkr.js.map} +0 -0
- /package/dist/chunks/{index-fgb3t64y.js.map → index-mgh85djb.js.map} +0 -0
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
* names, cycles — is refused by {@link defineModel} with a `TypeError`.
|
|
22
22
|
*/
|
|
23
23
|
import type { CursorPage } from '../pagination/cursor-page';
|
|
24
|
+
import type { NotASet, SetOf } from '../subjects/subject';
|
|
24
25
|
import { type ResolvedModel } from './resolve';
|
|
25
26
|
/**
|
|
26
27
|
* The ids of the objects whose field names this subject id — what `list()`
|
|
@@ -156,11 +157,18 @@ export type ObjectRef<C extends ModelConfig, T extends ObjectTypeOf<C>> = {
|
|
|
156
157
|
} & {
|
|
157
158
|
readonly [F in FieldsOf<C, T>]: string | null;
|
|
158
159
|
};
|
|
159
|
-
/**
|
|
160
|
-
|
|
160
|
+
/**
|
|
161
|
+
* A subject: a user from `janus()` as it is, an object, or a subject set —
|
|
162
|
+
* one `setOf()` made on an object type and one of its relations. A set on a
|
|
163
|
+
* user type the model does not also declare under `types` has no relation to
|
|
164
|
+
* name, and is refused here as at run time.
|
|
165
|
+
*/
|
|
166
|
+
export type SubjectRef<C extends ModelConfig> = ({
|
|
161
167
|
readonly type: UserTypeOf<C> | ObjectTypeOf<C>;
|
|
162
168
|
readonly id: string;
|
|
163
|
-
}
|
|
169
|
+
} & NotASet) | {
|
|
170
|
+
[T in ObjectTypeOf<C>]: SetOf<T, RelationsOf<TypesOf<C>, T> & string>;
|
|
171
|
+
}[ObjectTypeOf<C>];
|
|
164
172
|
type UnionToIntersection<U> = (U extends unknown ? (union: U) => void : never) extends (intersection: infer I) => void ? I : never;
|
|
165
173
|
type CtxOfRule<E> = E extends When<string, infer X> ? X : never;
|
|
166
174
|
type NameOfRule<E> = E extends string ? E : E extends When<infer R, never> ? R : never;
|
|
@@ -254,16 +262,18 @@ export type List<C extends ModelConfig> = <T extends ObjectTypeOf<C>, P extends
|
|
|
254
262
|
export type GrantableOf<C extends ModelConfig, T extends ObjectTypeOf<C>> = StoredRelationsOf<TypesOf<C>, T>;
|
|
255
263
|
/**
|
|
256
264
|
* Who may be granted relation `R` on an object of type `T`: an entity of each
|
|
257
|
-
* subject type it names, and a subject set for each set it names
|
|
265
|
+
* subject type it names, and a subject set for each set it names — made by
|
|
266
|
+
* `setOf()` when the set is on a user type, since a user passed as it is stays
|
|
267
|
+
* that user.
|
|
258
268
|
*/
|
|
259
|
-
export type HolderOf<C extends ModelConfig, T extends ObjectTypeOf<C>, R> = RelationDefOf<TypesOf<C>, T, R> extends readonly (infer E)[] ? E extends `${infer SetType}#${infer SetRelation}` ? {
|
|
269
|
+
export type HolderOf<C extends ModelConfig, T extends ObjectTypeOf<C>, R> = RelationDefOf<TypesOf<C>, T, R> extends readonly (infer E)[] ? E extends `${infer SetType}#${infer SetRelation}` ? SetType extends UserTypeOf<C> ? SetOf<SetType, SetRelation> : {
|
|
260
270
|
readonly type: SetType;
|
|
261
271
|
readonly id: string;
|
|
262
272
|
readonly relation: SetRelation;
|
|
263
273
|
} : {
|
|
264
274
|
readonly type: E;
|
|
265
275
|
readonly id: string;
|
|
266
|
-
} : never;
|
|
276
|
+
} & NotASet : never;
|
|
267
277
|
/** Writes one tuple, or removes it: typed like `can()`. */
|
|
268
278
|
export type Grant<C extends ModelConfig> = <T extends ObjectTypeOf<C>, R extends GrantableOf<C, T>>(object: {
|
|
269
279
|
readonly type: T;
|
|
@@ -369,8 +379,9 @@ export interface PermissionModel<C extends ModelConfig = ModelConfig> {
|
|
|
369
379
|
* ```
|
|
370
380
|
*
|
|
371
381
|
* Refuses with a `TypeError` what only running it can see: a name that is not
|
|
372
|
-
* camelCase,
|
|
373
|
-
*
|
|
382
|
+
* camelCase, a permission that reaches itself without crossing a relation —
|
|
383
|
+
* which no data could ever end. A user type may also be an object type: its
|
|
384
|
+
* users are then objects too, and a set on it is written with `setOf()`.
|
|
374
385
|
*/
|
|
375
386
|
export declare function defineModel<const Subjects extends readonly string[], const Ts extends ModelConfig['types'] & ModelTypesOf<Subjects[number], Ts>>(config: {
|
|
376
387
|
readonly subjects: Subjects;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/permissions/model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/permissions/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/permissions/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,wEAAwE;AACxE,MAAM,MAAM,MAAM,GACf;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9E;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAQ5E;AAED,MAAM,MAAM,gBAAgB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAChE;IACA,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,gFAAgF;IAChF,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CACnE,CAAC;AAEL,iFAAiF;AACjF,MAAM,MAAM,YAAY,GAAG,CACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IACA,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACvB,CACH,GAAG;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,CAAA;CAAE,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1D,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CACxD;
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/permissions/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,wEAAwE;AACxE,MAAM,MAAM,MAAM,GACf;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9E;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAQ5E;AAED,MAAM,MAAM,gBAAgB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAChE;IACA,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,gFAAgF;IAChF,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CACnE,CAAC;AAEL,iFAAiF;AACjF,MAAM,MAAM,YAAY,GAAG,CACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IACA,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACvB,CACH,GAAG;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,CAAA;CAAE,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1D,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CACxD;AAwBD,wBAAgB,YAAY,CAC3B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,GACX,aAAa,CAkBf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reverse.d.ts","sourceRoot":"","sources":["../../src/permissions/reverse.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAEN,KAAK,aAAa,EAGlB,MAAM,WAAW,CAAC;AAEnB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,OAAO;IAOlB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAX1B,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,MAAM,CAAS;gBAGL,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM;IAG5B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAcvE,gFAAgF;IAChF,OAAO,CAAC,IAAI;IAOZ,8EAA8E;YAChE,KAAK;YA2BL,QAAQ;YAgCR,UAAU;IAmBxB,oGAAoG;YACtF,KAAK;
|
|
1
|
+
{"version":3,"file":"reverse.d.ts","sourceRoot":"","sources":["../../src/permissions/reverse.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAEN,KAAK,aAAa,EAGlB,MAAM,WAAW,CAAC;AAEnB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,OAAO;IAOlB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAX1B,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,MAAM,CAAS;gBAGL,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM;IAG5B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAcvE,gFAAgF;IAChF,OAAO,CAAC,IAAI;IAOZ,8EAA8E;YAChE,KAAK;YA2BL,QAAQ;YAgCR,UAAU;IAmBxB,oGAAoG;YACtF,KAAK;IAiCnB,+CAA+C;YACjC,OAAO;IAqBrB,yEAAyE;YAC3D,MAAM;IAoBpB,gEAAgE;IAChE,OAAO,CAAC,MAAM;CAYd"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Entity, type RelationTuple, type Subject } from './subject';
|
|
1
|
+
import { type Entity, type RelationTuple, type SetOf, type Subject } from './subject';
|
|
2
2
|
/**
|
|
3
3
|
* Zanzibar's notation, with typed subjects:
|
|
4
4
|
*
|
|
@@ -30,6 +30,10 @@ export declare function formatTuple(tuple: RelationTuple): string;
|
|
|
30
30
|
* developer's own code.
|
|
31
31
|
*/
|
|
32
32
|
export declare function parseTuple(text: string): RelationTuple;
|
|
33
|
-
/**
|
|
34
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Reads one subject back: `staff:u1`, or `team:t1#member`. A set is answered
|
|
35
|
+
* as `setOf()` makes it, so `can()` and `grant()` read it as the set it names
|
|
36
|
+
* on a user type too.
|
|
37
|
+
*/
|
|
38
|
+
export declare function parseSubject(text: string): Entity | SetOf;
|
|
35
39
|
//# sourceMappingURL=notation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notation.d.ts","sourceRoot":"","sources":["../../src/subjects/notation.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,MAAM,EAEX,KAAK,aAAa,EAClB,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"notation.d.ts","sourceRoot":"","sources":["../../src/subjects/notation.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,MAAM,EAEX,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,KAAK,OAAO,EAEZ,MAAM,WAAW,CAAC;AAEnB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,oDAAoD;AACpD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAItD;AAED,iDAAiD;AACjD,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAExD;AASD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAkBtD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAiBzD"}
|
|
@@ -72,4 +72,57 @@ export declare function subjectOf(user: {
|
|
|
72
72
|
readonly type: string;
|
|
73
73
|
readonly id: SubjectId;
|
|
74
74
|
}): Entity;
|
|
75
|
+
/**
|
|
76
|
+
* The mark `setOf()` puts on a set: a symbol property, so it survives a spread
|
|
77
|
+
* and `Object.assign`, and no value read from a database or from JSON can
|
|
78
|
+
* carry it. Registered with `Symbol.for`, so two copies of this module — two
|
|
79
|
+
* bundles, two entry points — still agree on it.
|
|
80
|
+
*/
|
|
81
|
+
declare const SET_OF: unique symbol;
|
|
82
|
+
/**
|
|
83
|
+
* A subject set `setOf()` made: everyone who holds `relation` on `type:id`.
|
|
84
|
+
*
|
|
85
|
+
* Marked, because a user is passed to `can()` and `grant()` as it is, fields
|
|
86
|
+
* flat on it: a user whose fields include `relation` must stay that user, and
|
|
87
|
+
* never read as the set of whoever holds that relation on them. For an object
|
|
88
|
+
* type, `{ type, id, relation }` is a set as written; for a user type — one
|
|
89
|
+
* the model also declares as an object type — only `setOf()` makes one.
|
|
90
|
+
*
|
|
91
|
+
* A spread keeps the mark. `JSON.stringify` and `structuredClone` drop it:
|
|
92
|
+
* through either, a set comes back as a user — call `setOf()` again, or
|
|
93
|
+
* `parseSubject()` on its notation.
|
|
94
|
+
*/
|
|
95
|
+
export type SetOf<Type extends string = string, Relation extends string = string> = SubjectSet & {
|
|
96
|
+
readonly type: Type;
|
|
97
|
+
readonly relation: Relation;
|
|
98
|
+
readonly [SET_OF]: true;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* A user or an object, never a set `setOf()` made: where a relation admits
|
|
102
|
+
* `staff` but not `staff#managers`, a set passed there is refused at compile
|
|
103
|
+
* time as it is at run time.
|
|
104
|
+
*/
|
|
105
|
+
export type NotASet = {
|
|
106
|
+
readonly [SET_OF]?: never;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Everyone who holds `relation` on this user or object — `staff:s1#managers`.
|
|
110
|
+
*
|
|
111
|
+
* ```ts
|
|
112
|
+
* await access.grant(record, 'viewers', setOf(ada, 'managers'));
|
|
113
|
+
* ```
|
|
114
|
+
*
|
|
115
|
+
* Copies `type` and `id` only, like {@link subjectOf}: none of a user's own
|
|
116
|
+
* fields reaches a tuple.
|
|
117
|
+
*/
|
|
118
|
+
export declare function setOf<const Type extends string, const Relation extends string>(entity: {
|
|
119
|
+
readonly type: Type;
|
|
120
|
+
readonly id: SubjectId;
|
|
121
|
+
}, relation: Relation): SetOf<Type, Relation>;
|
|
122
|
+
/**
|
|
123
|
+
* Whether `setOf()` made this value, or a spread of one — what `can()` and
|
|
124
|
+
* `grant()` read to tell a set on a user type from a user.
|
|
125
|
+
*/
|
|
126
|
+
export declare function isSetOf(value: unknown): value is SetOf;
|
|
127
|
+
export {};
|
|
75
128
|
//# sourceMappingURL=subject.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../src/subjects/subject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B;;;;;;;;GAQG;AACH,MAAM,WAAW,MAAM;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAW,SAAQ,MAAM;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,UAAU,CAEpE;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;CACvB,GAAG,MAAM,CAET"}
|
|
1
|
+
{"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../src/subjects/subject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B;;;;;;;;GAQG;AACH,MAAM,WAAW,MAAM;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAW,SAAQ,MAAM;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,UAAU,CAEpE;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;CACvB,GAAG,MAAM,CAET;AAED;;;;;GAKG;AACH,QAAA,MAAM,MAAM,EAAE,OAAO,MAAwC,CAAC;AAE9D;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,KAAK,CAChB,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,QAAQ,SAAS,MAAM,GAAG,MAAM,IAC7B,UAAU,GAAG;IAChB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;CACxB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG;IAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpD;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,KAAK,CAAC,QAAQ,SAAS,MAAM,EAC7E,MAAM,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;CAAE,EACvD,QAAQ,EAAE,QAAQ,GAChB,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAkBvB;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAMtD"}
|
|
@@ -182,8 +182,6 @@ the key you wrote, `types.record.permits.view` or `types.team.related.members`:
|
|
|
182
182
|
- `relations` or `permissions` — the keys before 0.2 — and any key other than
|
|
183
183
|
`related` and `permits`;
|
|
184
184
|
- a name that is not camelCase;
|
|
185
|
-
- an object type named like a user type — see
|
|
186
|
-
[permissions on a user](#permissions-on-a-user);
|
|
187
185
|
- a permission that reaches itself without crossing a relation (`view:
|
|
188
186
|
['edit'], edit: ['view']`) — no data could ever end that loop;
|
|
189
187
|
- a subject set or an arrow that would have to read **another** object's
|
|
@@ -196,8 +194,8 @@ fine: the data ends it. See [a hierarchy](#a-hierarchy).
|
|
|
196
194
|
## Use cases
|
|
197
195
|
|
|
198
196
|
Each case below runs against the clinic above, in order — except the two that
|
|
199
|
-
say otherwise: a folder tree for a hierarchy, and
|
|
200
|
-
permissions on a user.
|
|
197
|
+
say otherwise: a folder tree for a hierarchy, and staff members who manage
|
|
198
|
+
each other for permissions on a user.
|
|
201
199
|
|
|
202
200
|
### A direct relation
|
|
203
201
|
|
|
@@ -231,6 +229,10 @@ await access.grant(team, 'members', { type: 'team', id: 't2', relation: 'members
|
|
|
231
229
|
await access.can(grace, 'view', team); // true: grace is a member of t2, whose members are members of t1
|
|
232
230
|
```
|
|
233
231
|
|
|
232
|
+
`setOf(cardiology, 'members')`, from `@nxgt/janus`, writes the same set. On an
|
|
233
|
+
object type the two are the same; on a user type only `setOf` makes a set —
|
|
234
|
+
see [permissions on a user](#permissions-on-a-user).
|
|
235
|
+
|
|
234
236
|
The set is followed as the data stands: revoke grace from `t2`, and she no
|
|
235
237
|
longer views `t1`. A team member of itself — a cycle in the data — is cut, and
|
|
236
238
|
is not an error.
|
|
@@ -347,38 +349,68 @@ await access.list(grace, 'edit', 'record', { ctx: { onShift: true } });
|
|
|
347
349
|
|
|
348
350
|
### Permissions on a user
|
|
349
351
|
|
|
350
|
-
A user type
|
|
351
|
-
|
|
352
|
-
edit a staff member
|
|
353
|
-
|
|
352
|
+
A user type may also be an object type: declare `staff` under `types`, and a
|
|
353
|
+
staff member is an object like a record — asked `can()`, granted relations,
|
|
354
|
+
listed. To decide who may edit a staff member, give `staff` the relations that
|
|
355
|
+
say so:
|
|
354
356
|
|
|
355
357
|
```ts
|
|
356
|
-
|
|
358
|
+
import { setOf } from '@nxgt/janus';
|
|
359
|
+
|
|
360
|
+
const people = permissions({
|
|
357
361
|
model: defineModel({
|
|
358
362
|
subjects: auth.types,
|
|
359
363
|
types: {
|
|
360
|
-
|
|
364
|
+
staff: {
|
|
361
365
|
related: {
|
|
362
366
|
self: fromField('id', 'staff', { lookup: async (staffId) => [staffId] }),
|
|
363
|
-
managers: ['staff'],
|
|
367
|
+
managers: ['staff', 'staff#managers'],
|
|
364
368
|
},
|
|
365
369
|
permits: { edit: ['self', 'managers'] },
|
|
366
370
|
},
|
|
371
|
+
note: {
|
|
372
|
+
related: { readers: ['staff', 'staff#managers'] },
|
|
373
|
+
permits: { read: ['readers'] },
|
|
374
|
+
},
|
|
367
375
|
},
|
|
368
376
|
}),
|
|
369
377
|
store: relations,
|
|
370
378
|
});
|
|
371
379
|
|
|
372
380
|
const bob = await auth.staff.create({ username: 'bob' });
|
|
373
|
-
await
|
|
374
|
-
await
|
|
375
|
-
await
|
|
376
|
-
await
|
|
377
|
-
await
|
|
381
|
+
await people.can(bob, 'edit', bob); // true: himself, read from his id
|
|
382
|
+
await people.can(ada, 'edit', bob); // false
|
|
383
|
+
await people.grant(bob, 'managers', ada);
|
|
384
|
+
await people.can(ada, 'edit', bob); // true: she manages him
|
|
385
|
+
await people.list(ada, 'edit', 'staff'); // herself, and bob
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
**A user passed as it is, is that user** — never a set, even when one of its
|
|
389
|
+
fields is named `relation`. A set on a user type is made by **`setOf`**: every
|
|
390
|
+
staff member who manages bob reads the note, as the data stands:
|
|
391
|
+
|
|
392
|
+
```ts
|
|
393
|
+
const note = { type: 'note', id: 'n1' } as const;
|
|
394
|
+
await people.grant(note, 'readers', setOf(bob, 'managers'));
|
|
395
|
+
await people.can(ada, 'read', note); // true: she manages bob
|
|
396
|
+
await people.can(bob, 'read', note); // false: bob is not his own manager
|
|
378
397
|
```
|
|
379
398
|
|
|
380
|
-
|
|
381
|
-
|
|
399
|
+
Only `setOf` marks a set. `{ type: 'staff', id: bob.id, relation: 'managers' }`
|
|
400
|
+
written out is bob himself at run time: granted silently where the relation
|
|
401
|
+
admits a staff member, refused where it does not. The compiler refuses it in
|
|
402
|
+
`grant()` and `revoke()`; `can()` and `list()` accept it and ask about bob, a
|
|
403
|
+
gap the README names. A spread
|
|
404
|
+
of a set keeps the mark; `JSON` and `structuredClone` drop it, so a set read
|
|
405
|
+
back from either is bob again — call `setOf` on it, or keep its notation
|
|
406
|
+
(`staff:…#managers`), which `parseSubject` reads back as the set. It copies
|
|
407
|
+
`type` and `id` only, so none of bob's fields reaches a tuple. A set on a user type
|
|
408
|
+
the model does not also declare under `types` is refused by `can()`, `list()`,
|
|
409
|
+
`grant()` and `revoke()` — and by the compiler first: there is no relation to
|
|
410
|
+
hold.
|
|
411
|
+
|
|
412
|
+
The `lookup` of `self` answers the one staff member whose id is the subject's,
|
|
413
|
+
so `list()` finds ada herself too.
|
|
382
414
|
|
|
383
415
|
## `permissions()`
|
|
384
416
|
|
package/docs/guide/vocabulary.md
CHANGED
|
@@ -37,7 +37,7 @@ either finds this row.
|
|
|
37
37
|
| Word | Means | Not |
|
|
38
38
|
| --- | --- | --- |
|
|
39
39
|
| **user** | One stored person or machine, of one user type | "account" — kept only in *account takeover* and *account enumeration*, the names of those attacks |
|
|
40
|
-
| **user type** | A kind of user with its own schema and login: `staff`, `patient`. Wired to permissions, its name is a subject type | "role": a role is a relation in the model |
|
|
40
|
+
| **user type** | A kind of user with its own schema and login: `staff`, `patient`. Wired to permissions, its name is a subject type — and may also be an object type, whose users are then objects too | "role": a role is a relation in the model |
|
|
41
41
|
| **schema** | A user type's Standard Schema: the fields a user carries | the model |
|
|
42
42
|
| **login** | The value a user signs in with: an e-mail, a username. **sign in** is the verb, **sign-in** the noun | "identifier" |
|
|
43
43
|
| **credential** | What a caller presents to prove who they are: a login and a password at sign-in (`CredentialError`, `CREDENTIALS_INVALID`), or a token on a request — always written *session credential* | |
|
|
@@ -57,10 +57,11 @@ either finds this row.
|
|
|
57
57
|
| --- | --- | --- |
|
|
58
58
|
| **model** | What `defineModel()` answers: the subject types, the object types, their relations and permissions | "schema", "policy" |
|
|
59
59
|
| **subject type** | A name listed in `subjects`: `auth.types` when wired to `janus()`, your own names otherwise | |
|
|
60
|
-
| **object** | What a permission is about: `{ type: 'document', id }` | "resource" |
|
|
60
|
+
| **object** | What a permission is about: `{ type: 'document', id }`, or a user whose type the model also declares under `types` | "resource" |
|
|
61
61
|
| **subject** | Who a permission is about: a user, an object, or a subject set | "principal", "actor" |
|
|
62
62
|
| **entity** | `{ type, id }`: a user or an object — a subject that is not a set (`Entity`, `deleteEntity`) | |
|
|
63
|
-
| **subject set** | Everyone holding one relation on one object: `team:t1#members` | "group" — a group is an object with a `members` relation |
|
|
63
|
+
| **subject set** | Everyone holding one relation on one object: `team:t1#members`. On a user type the model also declares as an object type, only `setOf()` makes one | "group" — a group is an object with a `members` relation |
|
|
64
|
+
| **`setOf`** | The function that makes a subject set from a user or an object and a relation: `setOf(bob, 'managers')`. What it answers is a `SetOf`, and `isSetOf` tells it from a user | |
|
|
64
65
|
| **relation** | A named link, stored as tuples or read from a field (`fromField`). Declared under `related`, named in the plural: `members`, `doctors` | |
|
|
65
66
|
| **`related`** | The key of an object type that declares its relations: `related: { members: ['staff'] }`. It was `relations` before 0.2, and the old key is refused | "relations" as a key — the word stays for the idea, and for `janus({ relations })` |
|
|
66
67
|
| **holder** | What a relation admits: `'staff'`, or the subject set `'team#members'` | |
|
|
@@ -114,10 +115,12 @@ a tuple.
|
|
|
114
115
|
| --- | --- |
|
|
115
116
|
| `subjectOf(user)` | `{ type, id }` of any object carrying both |
|
|
116
117
|
| `isSubjectSet(subject)` | whether `relation` is a string |
|
|
118
|
+
| `setOf(entity, relation)` | the subject set `{ type, id, relation }`, marked: on a user type, the only way to write one |
|
|
119
|
+
| `isSetOf(value)` | whether `setOf` made it, or a spread of it |
|
|
117
120
|
| `formatEntity(entity)` | `'record:r1'` |
|
|
118
121
|
| `formatSubject(subject)` | `'staff:u1'`, or `'team:t1#members'` |
|
|
119
122
|
| `formatTuple(tuple)` | `'team:t1#members@team:t2#members'` |
|
|
120
|
-
| `parseSubject(text)` | the `
|
|
123
|
+
| `parseSubject(text)` | the `Entity` back, or a `SetOf` — a set as `setOf` makes it |
|
|
121
124
|
| `parseTuple(text)` | the `RelationTuple` back |
|
|
122
125
|
|
|
123
126
|
```ts
|
package/docs/roadmap.md
CHANGED
|
@@ -84,6 +84,11 @@ Nothing yet.
|
|
|
84
84
|
|
|
85
85
|
Each entry names the version it came in.
|
|
86
86
|
|
|
87
|
+
- **Permissions on a user, v0.3.0** — a user type may also be an object type:
|
|
88
|
+
a staff member is the object `can()` asks about and is granted relations
|
|
89
|
+
on, like a record, and `grant(note, 'readers', setOf(bob, 'managers'))`
|
|
90
|
+
grants everyone who manages bob at once. A user
|
|
91
|
+
passed as it is stays that user, even with a field named `relation`.
|
|
87
92
|
- **The adapters and the kit, each at its first release, v0.1.0, beside
|
|
88
93
|
`@nxgt/janus` 0.2.2** —
|
|
89
94
|
[`@nxgt/janus-drizzle`](https://www.npmjs.com/package/@nxgt/janus-drizzle),
|
package/docs/troubleshooting.md
CHANGED
|
@@ -571,11 +571,12 @@ Each is a `TypeError` naming the call. TypeScript refuses most of them on the ar
|
|
|
571
571
|
| Message | Fix |
|
|
572
572
|
| --- | --- |
|
|
573
573
|
| `can: "<name>" is not a relation or a permission of <type>` | Ask a name the type declares. |
|
|
574
|
-
| `<call>: "<type>" is not an object type of the model` | Use a type declared under `types`. |
|
|
574
|
+
| `<call>: "<type>" is not an object type of the model` | Use a type declared under `types`. Also for a subject set — `setOf` included — whose type is neither a user type nor an object type. |
|
|
575
575
|
| `<call>: the object must be { type, id, …its fields }` | `{ type: 'record', ...record }`. |
|
|
576
576
|
| `<call>: the subject must be a user, or { type, id }` | Pass the user from `janus()`, or `{ type, id }`. `null` is anonymous and answers `false`. |
|
|
577
577
|
| `<call>: the object id must be a non-empty string without @, # or parentheses` | Also for `the subject id`. Those characters belong to the tuple notation. |
|
|
578
|
-
| `<call>: "<relation>" is not a relation of <type>, so <type
|
|
578
|
+
| `<call>: "<relation>" is not a relation of <type>, so <type>#<relation> is no subject set` | A subject set names a relation of its type: `{ type: 'team', id, relation: 'members' }`. |
|
|
579
|
+
| `<call>: <type> is a user type the model does not declare as an object type, so <type>#<relation> is no subject set` | `setOf(user, relation)` names a relation on that user: declare the user type under `types` too, with that relation — see [permissions on a user](guide/permissions.md#permissions-on-a-user). The compiler refuses it first. |
|
|
579
580
|
| `grant: "<relation>" is not a relation of <type>` | Grant a relation, never a permission. |
|
|
580
581
|
| `list: the type must be an object type of the model` | The third argument is a type name: `'record'`. |
|
|
581
582
|
| `list: after must be the nextCursor of a page, or null` | Pass `nextCursor` back as it came. |
|
|
@@ -594,7 +595,6 @@ most common:
|
|
|
594
595
|
| `defineModel: types declares no object type` | Declare at least one type under `types`. |
|
|
595
596
|
| `defineModel: types.<type> must be an object` | Also `types.<type>.related must be an object` and `types.<type>.permits must be an object`: each is keyed by name — `related: { members: ['staff'] }`. |
|
|
596
597
|
| `defineModel: the object type "<name>" must be a camelCase name — letters and digits, starting with a lowercase letter` | Also `types.<type>.related: "<name>" must be a camelCase name — …` for a relation, and `types.<type>.permits: …` for a permission. |
|
|
597
|
-
| `defineModel: "<name>" names a user type and an object type; a subject of type "<name>" would be ambiguous` | Rename the object type. For permissions on a user, see [the guide](guide/permissions.md#permissions-on-a-user). |
|
|
598
598
|
| `defineModel: types.<type>: "<name>" names a relation and a permission; rename one` | One name, one meaning. |
|
|
599
599
|
| `defineModel: types.<type>.related.<relation> must be a non-empty array of subject types, or fromField()` | `members: ['staff']`, or `doctors: fromField('doctorId', 'staff')`. |
|
|
600
600
|
| `defineModel: types.<type>.related.<relation>: "<holder>" is not a subject type` | Also `"<holder>" is not a subject set — it must name an object type and one of its relations`: `'team#members'`, a declared type and one of its relations. |
|
|
@@ -634,6 +634,21 @@ parseTuple('record:r1#teams@team:t1');
|
|
|
634
634
|
parseTuple('team:t1#members@team:t2#members');
|
|
635
635
|
```
|
|
636
636
|
|
|
637
|
+
### `setOf: pass a user or { type, id }, then a relation`
|
|
638
|
+
|
|
639
|
+
Also `setOf: the relation must be a non-empty string`.
|
|
640
|
+
|
|
641
|
+
**When:** `setOf(...)`, a `TypeError`.
|
|
642
|
+
**Why:** a set is everyone holding one relation on one user or object: it needs both.
|
|
643
|
+
**Fix:**
|
|
644
|
+
|
|
645
|
+
```ts
|
|
646
|
+
import { setOf } from '@nxgt/janus';
|
|
647
|
+
|
|
648
|
+
setOf(bob, 'managers'); // a user from janus()
|
|
649
|
+
setOf({ type: 'team', id: 't1' }, 'members'); // an object
|
|
650
|
+
```
|
|
651
|
+
|
|
637
652
|
---
|
|
638
653
|
|
|
639
654
|
## Conformance (adapter authors)
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|