@webda/core 4.0.0-beta.4 → 4.0.0-beta.5

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.
Files changed (43) hide show
  1. package/lib/core/operations.d.ts.map +1 -1
  2. package/lib/core/operations.js +13 -11
  3. package/lib/core/operations.js.map +1 -1
  4. package/lib/index.d.ts +2 -1
  5. package/lib/index.d.ts.map +1 -1
  6. package/lib/index.js +2 -1
  7. package/lib/index.js.map +1 -1
  8. package/lib/models/aclmodel.d.ts +32 -5
  9. package/lib/models/aclmodel.d.ts.map +1 -1
  10. package/lib/models/aclmodel.js +34 -9
  11. package/lib/models/aclmodel.js.map +1 -1
  12. package/lib/models/ownermodel.model.d.ts +25 -3
  13. package/lib/models/ownermodel.model.d.ts.map +1 -1
  14. package/lib/models/ownermodel.model.js +44 -9
  15. package/lib/models/ownermodel.model.js.map +1 -1
  16. package/lib/models/permissions.d.ts +236 -0
  17. package/lib/models/permissions.d.ts.map +1 -0
  18. package/lib/models/permissions.js +495 -0
  19. package/lib/models/permissions.js.map +1 -0
  20. package/lib/models/rolemodel.model.d.ts.map +1 -1
  21. package/lib/models/rolemodel.model.js +1 -2
  22. package/lib/models/rolemodel.model.js.map +1 -1
  23. package/lib/models/user.model.d.ts +12 -0
  24. package/lib/models/user.model.d.ts.map +1 -1
  25. package/lib/models/user.model.js +16 -0
  26. package/lib/models/user.model.js.map +1 -1
  27. package/lib/rest/restoperationstransport.service.d.ts.map +1 -1
  28. package/lib/rest/restoperationstransport.service.js +7 -5
  29. package/lib/rest/restoperationstransport.service.js.map +1 -1
  30. package/lib/services/audit.model.d.ts +2 -2
  31. package/lib/services/audit.model.d.ts.map +1 -1
  32. package/lib/services/audit.model.js +14 -5
  33. package/lib/services/audit.model.js.map +1 -1
  34. package/lib/services/binary.service.d.ts +42 -4
  35. package/lib/services/binary.service.d.ts.map +1 -1
  36. package/lib/services/binary.service.js +33 -13
  37. package/lib/services/binary.service.js.map +1 -1
  38. package/lib/services/domainservice.service.d.ts +74 -3
  39. package/lib/services/domainservice.service.d.ts.map +1 -1
  40. package/lib/services/domainservice.service.js +234 -57
  41. package/lib/services/domainservice.service.js.map +1 -1
  42. package/package.json +17 -13
  43. package/webda.module.json +3 -15
@@ -2,16 +2,52 @@ import { TransformCaseType } from "@webda/utils";
2
2
  import { Service } from "./service.js";
3
3
  import { Application } from "../application/application.js";
4
4
  import { OperationContext } from "../contexts/operationcontext.js";
5
- import type { Model, ModelClass } from "@webda/models";
5
+ import { type Model, type ModelClass } from "@webda/models";
6
6
  import { ServiceParameters } from "../services/serviceparameters.js";
7
7
  /**
8
- * Remove Behavior-typed attributes (Metadata.Relations.behaviors) and private fields from client input.
9
- * Behavior state can only be changed through the behavior's own actions.
8
+ * Sanitize client input before it reaches a model (REST, gRPC, MCP and GraphQL):
9
+ * - `__`-prefixed (private) keys are removed at any depth;
10
+ * - `_`-prefixed attributes are removed, unless the model lists them in its static `getClientWritableAttributes()`:
11
+ * by convention they are server-managed (`_user`, `_roles`, `_groups`, `_creationDate`...);
12
+ * - Behavior-typed attributes (Metadata.Relations.behaviors) are removed: behavior state can only be changed through
13
+ * the behavior's own actions;
14
+ * - the attributes of the model's static `getProtectedAttributes()` are removed, even when listed as writable;
15
+ * - the attributes the model schemas mark `readOnly` (`@readOnly` on the property) are removed: they are server-managed.
10
16
  * @param model - the model class
11
17
  * @param input - the client input
12
18
  * @returns the sanitized input
13
19
  */
14
20
  export declare function sanitizeModelInput<T = any>(model: ModelClass<any>, input: T): T;
21
+ /**
22
+ * `_`-prefixed attributes a model accepts from client input, declared by its optional static
23
+ * `getClientWritableAttributes()`
24
+ * @param model - the model class
25
+ * @returns the attribute names
26
+ */
27
+ export declare function getClientWritableAttributes(model: any): string[];
28
+ /**
29
+ * Client input of a create (REST, gRPC, MCP and GraphQL): {@link sanitizeModelInput}, plus
30
+ * - the parent link (`ModelParent` attribute, from the nested URL or the input) is kept even when `_`-prefixed, unless
31
+ * protected: the caller must then check the parent ({@link checkModelParent});
32
+ * - a client `uuid` is dropped for `UuidModel`s: the key is always generated, so a create can neither target an
33
+ * existing object nor reveal that a uuid exists. Natural-key models keep the client key (an existing key is a 409).
34
+ * @param model - the model class
35
+ * @param input - the raw client input
36
+ * @returns the input to load in the new object
37
+ */
38
+ export declare function prepareCreateInput<T = any>(model: ModelClass<any>, input: T): T;
39
+ /**
40
+ * Attributes the model schemas (Input, Output, Stored) mark `readOnly`: server-managed, never taken from client input
41
+ * @param model - the model class
42
+ * @returns the attribute names
43
+ */
44
+ export declare function getReadOnlyAttributes(model: any): string[];
45
+ /**
46
+ * Attributes a model refuses from client input, declared by its optional static `getProtectedAttributes()`
47
+ * @param model - the model class
48
+ * @returns the attribute names
49
+ */
50
+ export declare function getProtectedAttributes(model: any): string[];
15
51
  /**
16
52
  * Remove `__`-prefixed keys at any depth from client-supplied input, so private fields
17
53
  * (such as a password hash) can never be set through the REST/operations surface
@@ -142,12 +178,47 @@ export declare class DomainService<T extends DomainServiceParameters = DomainSer
142
178
  * @returns the model instance
143
179
  */
144
180
  private loadModel;
181
+ /**
182
+ * {@link checkModelPermission}, emitting `Store.WebNotFound` when the refusal looks like a missing object, exactly
183
+ * like {@link loadModel} does for a missing key
184
+ * @param object - the model instance
185
+ * @param context - the caller context
186
+ * @param action - the action
187
+ * @param model - the model class (the static `canAct` asked)
188
+ */
189
+ protected checkPermission(object: Model, context: OperationContext, action: string, model?: ModelClass<Model>): Promise<void>;
145
190
  /**
146
191
  * Create a model operation implementation
147
192
  * @param input - the model data to create
148
193
  * @returns the created model instance
149
194
  */
150
195
  modelCreate(input: any): Promise<Model>;
196
+ /**
197
+ * {@link checkModelParent}, emitting `Store.WebNotFound` when the parent is missing or unreadable, like any missing
198
+ * object
199
+ * @param model - the child model class
200
+ * @param parentId - the parent primary key
201
+ * @param context - the caller context
202
+ */
203
+ protected checkParent(model: ModelClass<Model>, parentId: any, context: OperationContext): Promise<void>;
204
+ /**
205
+ * Resolve the primary key of an update or patch: the URL parameters win over the body, and a body carrying another
206
+ * key is refused, so an update can never be redirected to another object
207
+ * @param input - the sanitized input, its primary-key fields are removed
208
+ * @param pkFields - the primary-key fields
209
+ * @param params - the URL parameters
210
+ * @returns the primary key
211
+ * @throws BadRequest when the body key differs from the URL key
212
+ */
213
+ protected resolveUpdateKey(input: any, pkFields: string[] | undefined, params: Record<string, any>): any;
214
+ /**
215
+ * When an update moves an object to another parent, the caller must be able to read the new parent
216
+ * @param model - the model class
217
+ * @param object - the stored object
218
+ * @param input - the sanitized input
219
+ * @param context - the caller context
220
+ */
221
+ protected checkReparent(model: ModelClass<Model>, object: Model, input: any, context: OperationContext): Promise<void>;
151
222
  /**
152
223
  * Update a model operation implementation
153
224
  * @param uuid - the model primary key
@@ -1 +1 @@
1
- {"version":3,"file":"domainservice.service.d.ts","sourceRoot":"","sources":["../../src/services/domainservice.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domainservice.service.d.ts","sourceRoot":"","sources":["../../src/services/domainservice.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAa,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAIvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAmBrE;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAgB/E;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,EAAE,CAEhE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAiB/E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,EAAE,CAgB1D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,EAAE,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAavD;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAA0C,CAAC;AAExF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAOnD;AAED,8FAA8F;AAC9F,qBAAa,uBAAwB,SAAQ,iBAAiB;IAC5D;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC;;;;OAIG;IACH,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAC5B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAW;IAEjC;;;;OAIG;IACH,IAAI,CAAC,MAAM,GAAE,GAAQ,GAAG,IAAI,CAa3B;IAED;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,WAEvB;IAED;;;;OAIG;IACH,oBAAoB,CAAC,KAAK,EAAE,MAAM,WAEjC;IAED;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,WAEvB;CACF;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,mBAAmB,EAAE;QAAE,OAAO,EAAE,gBAAgB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAClE,CAAC;AACF;;;;;;;;;;;GAWG;AACH,qBAAa,aAAa,CACxB,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,EAC3D,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,CACnD,SAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACrB,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,CAAC,OAAO;QACZ,WAAW;YACT,IAAI;YACJ,UAAU;gBACR,IAAI;oBACF,IAAI;;;YAGR,QAAQ;;QAEV,aAAa;YACX,IAAI;YACJ,UAAU;gBACR,KAAK;oBACH,IAAI;;;;MAIV;IAEF;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElC;IAED;;;;;OAKG;YACW,SAAS;IAkBvB;;;;;;;OAOG;IACH,UAAgB,eAAe,CAC7B,MAAM,EAAE,KAAK,EACb,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,GACxB,OAAO,CAAC,IAAI,CAAC,CAaf;IAED;;;;OAIG;IACG,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAwB5C;IAED;;;;;;OAMG;IACH,UAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAY7G;IAED;;;;;;;;OAQG;IACH,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAevG;IAED;;;;;;OAMG;IACH,UAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB,iBAO3G;IAED;;;;;OAKG;IACG,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAuB7C;IAED;;;;OAIG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAM3C;IAED;;;OAGG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7C;IAED;;;;OAIG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAiB5C;IAED;;;;;OAKG;IACG,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAkB5C;IAED;;;;OAIG;IACG,WAAW,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CA6B9C;IAED;;;;;;OAMG;IACH,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAEnD;IAED;;;OAGG;IACH,cAAc,IAAI,IAAI,CAsMrB;IAED;;;;;;;;;;;;OAYG;IACH,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,QA6C1E;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,mBAAmB,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CA4CtD;CACF"}
@@ -1,6 +1,7 @@
1
1
  import { TransformCase } from "@webda/utils";
2
2
  import { Service } from "./service.js";
3
3
  import { OperationContext } from "../contexts/operationcontext.js";
4
+ import { UuidModel } from "@webda/models";
4
5
  import { runWithContext, useContext } from "../contexts/execution.js";
5
6
  import * as WebdaError from "../errors/errors.js";
6
7
  import { ServiceParameters } from "../services/serviceparameters.js";
@@ -9,22 +10,102 @@ import { useModelMetadata } from "../core/hooks.js";
9
10
  import { useInstanceStorage } from "../core/instancestorage.js";
10
11
  import { registerOperation } from "../core/operations.js";
11
12
  import { hasSchema, registerSchema } from "../schemas/hooks.js";
13
+ import { checkModelParent, checkModelPermission, checkStaticModelPermission, createModel, getParentRelation, hasModelPermissionCheck, hasStaticPermissionCheck, NOT_FOUND_MESSAGE, queryModelWithPermissions } from "../models/permissions.js";
12
14
  /**
13
- * Remove Behavior-typed attributes (Metadata.Relations.behaviors) and private fields from client input.
14
- * Behavior state can only be changed through the behavior's own actions.
15
+ * Sanitize client input before it reaches a model (REST, gRPC, MCP and GraphQL):
16
+ * - `__`-prefixed (private) keys are removed at any depth;
17
+ * - `_`-prefixed attributes are removed, unless the model lists them in its static `getClientWritableAttributes()`:
18
+ * by convention they are server-managed (`_user`, `_roles`, `_groups`, `_creationDate`...);
19
+ * - Behavior-typed attributes (Metadata.Relations.behaviors) are removed: behavior state can only be changed through
20
+ * the behavior's own actions;
21
+ * - the attributes of the model's static `getProtectedAttributes()` are removed, even when listed as writable;
22
+ * - the attributes the model schemas mark `readOnly` (`@readOnly` on the property) are removed: they are server-managed.
15
23
  * @param model - the model class
16
24
  * @param input - the client input
17
25
  * @returns the sanitized input
18
26
  */
19
27
  export function sanitizeModelInput(model, input) {
20
28
  const out = stripPrivateFields(input);
21
- if (out && typeof out === "object" && !Array.isArray(out)) {
22
- for (const rel of useModelMetadata(model)?.Relations?.behaviors ?? []) {
23
- delete out[rel.attribute];
24
- }
29
+ if (!out || typeof out !== "object" || Array.isArray(out)) {
30
+ return out;
31
+ }
32
+ const writable = getClientWritableAttributes(model);
33
+ const removed = new Set([
34
+ ...getReadOnlyAttributes(model),
35
+ ...(useModelMetadata(model)?.Relations?.behaviors ?? []).map(rel => rel.attribute),
36
+ // Server-managed attributes (e.g. the owner of an OwnerModel) are never taken from client input
37
+ ...getProtectedAttributes(model)
38
+ ]);
39
+ // Object.fromEntries defines own properties: no client-chosen key is ever written or deleted dynamically
40
+ return Object.fromEntries(Object.entries(out).filter(([key]) => !removed.has(key) && (!key.startsWith("_") || writable.includes(key))));
41
+ }
42
+ /**
43
+ * `_`-prefixed attributes a model accepts from client input, declared by its optional static
44
+ * `getClientWritableAttributes()`
45
+ * @param model - the model class
46
+ * @returns the attribute names
47
+ */
48
+ export function getClientWritableAttributes(model) {
49
+ return typeof model?.getClientWritableAttributes === "function" ? (model.getClientWritableAttributes() ?? []) : [];
50
+ }
51
+ /**
52
+ * Client input of a create (REST, gRPC, MCP and GraphQL): {@link sanitizeModelInput}, plus
53
+ * - the parent link (`ModelParent` attribute, from the nested URL or the input) is kept even when `_`-prefixed, unless
54
+ * protected: the caller must then check the parent ({@link checkModelParent});
55
+ * - a client `uuid` is dropped for `UuidModel`s: the key is always generated, so a create can neither target an
56
+ * existing object nor reveal that a uuid exists. Natural-key models keep the client key (an existing key is a 409).
57
+ * @param model - the model class
58
+ * @param input - the raw client input
59
+ * @returns the input to load in the new object
60
+ */
61
+ export function prepareCreateInput(model, input) {
62
+ const parent = getParentRelation(model);
63
+ const parentId = parent && !getProtectedAttributes(model).includes(parent.attribute)
64
+ ? input?.[parent.attribute]
65
+ : undefined;
66
+ const out = sanitizeModelInput(model, input);
67
+ if (!out || typeof out !== "object" || Array.isArray(out)) {
68
+ return out;
69
+ }
70
+ if (parentId !== undefined && parentId !== null && parentId !== "") {
71
+ out[parent.attribute] = parentId;
72
+ }
73
+ if (model?.prototype instanceof UuidModel) {
74
+ delete out.uuid;
25
75
  }
26
76
  return out;
27
77
  }
78
+ /**
79
+ * Attributes the model schemas (Input, Output, Stored) mark `readOnly`: server-managed, never taken from client input
80
+ * @param model - the model class
81
+ * @returns the attribute names
82
+ */
83
+ export function getReadOnlyAttributes(model) {
84
+ let schemas;
85
+ try {
86
+ schemas = useModelMetadata(model)?.Schemas;
87
+ }
88
+ catch {
89
+ return [];
90
+ }
91
+ const names = new Set();
92
+ for (const schema of Object.values(schemas ?? {})) {
93
+ for (const [name, property] of Object.entries(schema?.properties ?? {})) {
94
+ if (property?.readOnly === true || property?.readonly === true) {
95
+ names.add(name);
96
+ }
97
+ }
98
+ }
99
+ return [...names];
100
+ }
101
+ /**
102
+ * Attributes a model refuses from client input, declared by its optional static `getProtectedAttributes()`
103
+ * @param model - the model class
104
+ * @returns the attribute names
105
+ */
106
+ export function getProtectedAttributes(model) {
107
+ return typeof model?.getProtectedAttributes === "function" ? (model.getProtectedAttributes() ?? []) : [];
108
+ }
28
109
  /**
29
110
  * Remove `__`-prefixed keys at any depth from client-supplied input, so private fields
30
111
  * (such as a password hash) can never be set through the REST/operations surface
@@ -201,10 +282,33 @@ export class DomainService extends Service {
201
282
  context,
202
283
  uuid: typeof uuid === "string" ? uuid : JSON.stringify(uuid)
203
284
  });
204
- throw new WebdaError.NotFound("Object not found");
285
+ throw new WebdaError.NotFound(NOT_FOUND_MESSAGE);
205
286
  }
206
287
  return object;
207
288
  }
289
+ /**
290
+ * {@link checkModelPermission}, emitting `Store.WebNotFound` when the refusal looks like a missing object, exactly
291
+ * like {@link loadModel} does for a missing key
292
+ * @param object - the model instance
293
+ * @param context - the caller context
294
+ * @param action - the action
295
+ * @param model - the model class (the static `canAct` asked)
296
+ */
297
+ async checkPermission(object, context, action, model) {
298
+ try {
299
+ await checkModelPermission(object, context, action, model);
300
+ }
301
+ catch (err) {
302
+ if (err instanceof WebdaError.NotFound) {
303
+ const uuid = object.getPrimaryKey?.();
304
+ await this.emit("Store.WebNotFound", {
305
+ context,
306
+ uuid: typeof uuid === "string" ? uuid : JSON.stringify(uuid)
307
+ });
308
+ }
309
+ throw err;
310
+ }
311
+ }
208
312
  /**
209
313
  * Create a model operation implementation
210
314
  * @param input - the model data to create
@@ -220,15 +324,82 @@ export class DomainService extends Service {
220
324
  if (typeof input !== "object" || input === null || input instanceof OperationContext) {
221
325
  input = await context.getInput();
222
326
  }
223
- input = sanitizeModelInput(model, input);
327
+ input = prepareCreateInput(model, input);
224
328
  return runWithContext(context, async () => {
225
329
  // Instantiate the model from raw input, load data, then save
226
330
  const object = new model();
227
331
  object.load(input);
228
- await object.save();
332
+ // The parent link (nested URL or input) must point to a parent the caller may read
333
+ await this.checkParent(model, input?.[getParentRelation(model)?.attribute ?? ""], context);
334
+ // Let the model set its server-managed fields (e.g. the owner) from the caller
335
+ await object.prepareCreate?.(context);
336
+ await this.checkPermission(object, context, "create", model);
337
+ // Create, never upsert: an existing key is a 409, not an overwrite
338
+ await createModel(object);
229
339
  return object;
230
340
  });
231
341
  }
342
+ /**
343
+ * {@link checkModelParent}, emitting `Store.WebNotFound` when the parent is missing or unreadable, like any missing
344
+ * object
345
+ * @param model - the child model class
346
+ * @param parentId - the parent primary key
347
+ * @param context - the caller context
348
+ */
349
+ async checkParent(model, parentId, context) {
350
+ try {
351
+ await checkModelParent(model, parentId, context);
352
+ }
353
+ catch (err) {
354
+ if (err instanceof WebdaError.NotFound) {
355
+ await this.emit("Store.WebNotFound", {
356
+ context,
357
+ uuid: typeof parentId === "string" ? parentId : JSON.stringify(parentId)
358
+ });
359
+ }
360
+ throw err;
361
+ }
362
+ }
363
+ /**
364
+ * Resolve the primary key of an update or patch: the URL parameters win over the body, and a body carrying another
365
+ * key is refused, so an update can never be redirected to another object
366
+ * @param input - the sanitized input, its primary-key fields are removed
367
+ * @param pkFields - the primary-key fields
368
+ * @param params - the URL parameters
369
+ * @returns the primary key
370
+ * @throws BadRequest when the body key differs from the URL key
371
+ */
372
+ resolveUpdateKey(input, pkFields, params) {
373
+ const fields = pkFields?.length ? pkFields : ["uuid"];
374
+ const key = {};
375
+ for (const f of fields) {
376
+ const fromUrl = params[f];
377
+ const fromBody = input?.[f];
378
+ if (fromUrl !== undefined && fromBody !== undefined && String(fromUrl) !== String(fromBody)) {
379
+ throw new WebdaError.BadRequest("Primary key mismatch");
380
+ }
381
+ key[f] = fromUrl ?? fromBody;
382
+ if (input && typeof input === "object") {
383
+ delete input[f];
384
+ }
385
+ }
386
+ return fields.length === 1 ? key[fields[0]] : key;
387
+ }
388
+ /**
389
+ * When an update moves an object to another parent, the caller must be able to read the new parent
390
+ * @param model - the model class
391
+ * @param object - the stored object
392
+ * @param input - the sanitized input
393
+ * @param context - the caller context
394
+ */
395
+ async checkReparent(model, object, input, context) {
396
+ const parent = getParentRelation(model);
397
+ const value = parent ? input?.[parent.attribute] : undefined;
398
+ if (value === undefined || value === null || String(value) === String(object[parent.attribute] ?? "")) {
399
+ return;
400
+ }
401
+ await this.checkParent(model, value, context);
402
+ }
232
403
  /**
233
404
  * Update a model operation implementation
234
405
  * @param uuid - the model primary key
@@ -245,18 +416,15 @@ export class DomainService extends Service {
245
416
  input = await context.getInput();
246
417
  }
247
418
  input = sanitizeModelInput(model, input);
248
- // Resolve the PK from body or URL params using the model's actual PK fields;
419
+ // Resolve the PK from the URL params (or the body) using the model's actual PK fields;
249
420
  // fall back to "uuid" for legacy operations without pkFields in the context.
250
- const params = context.getParameters() ?? {};
251
- const fields = pkFields?.length ? pkFields : ["uuid"];
252
- const pk = fields.length === 1
253
- ? (input?.[fields[0]] ?? params[fields[0]])
254
- : fields.reduce((acc, f) => {
255
- acc[f] = input?.[f] ?? params[f];
256
- return acc;
257
- }, {});
421
+ const pk = this.resolveUpdateKey(input, pkFields, context.getParameters() ?? {});
258
422
  const object = await this.loadModel(model, pk);
423
+ // Check on the stored object, before any client input is applied
424
+ await this.checkPermission(object, context, "update", model);
425
+ await this.checkReparent(model, object, input, context);
259
426
  object["load"](input);
427
+ await object.save();
260
428
  return object;
261
429
  }
262
430
  /**
@@ -268,7 +436,7 @@ export class DomainService extends Service {
268
436
  const context = useContext();
269
437
  const { model } = context.getExtension("operationContext");
270
438
  const object = await this.loadModel(model, uuid);
271
- //await object.checkAct(context, "get");
439
+ await this.checkPermission(object, context, "get", model);
272
440
  return object;
273
441
  }
274
442
  /**
@@ -279,7 +447,7 @@ export class DomainService extends Service {
279
447
  const context = useContext();
280
448
  const { model } = context.getExtension("operationContext");
281
449
  const object = await this.loadModel(model, uuid);
282
- //await object.checkAct(context, "delete");
450
+ await this.checkPermission(object, context, "delete", model);
283
451
  // Object can decide to not delete but mark as deleted
284
452
  await object.delete();
285
453
  }
@@ -291,9 +459,12 @@ export class DomainService extends Service {
291
459
  async modelQuery(query) {
292
460
  const context = useContext();
293
461
  const { model } = context.getExtension("operationContext");
462
+ if (query !== undefined && query !== null && typeof query !== "string") {
463
+ throw new WebdaError.BadRequest("Query must be a string");
464
+ }
294
465
  return runWithContext(context, async () => {
295
466
  try {
296
- return await model.query(query);
467
+ return await queryModelWithPermissions(model, query, context);
297
468
  }
298
469
  catch (err) {
299
470
  if (err instanceof SyntaxError) {
@@ -318,15 +489,11 @@ export class DomainService extends Service {
318
489
  }
319
490
  input = sanitizeModelInput(model, input);
320
491
  // Build the PK from the model's real primary-key fields (same logic as modelUpdate).
321
- const params = context.getParameters() ?? {};
322
- const fields = pkFields?.length ? pkFields : ["uuid"];
323
- const pk = fields.length === 1
324
- ? (input?.[fields[0]] ?? params[fields[0]])
325
- : fields.reduce((acc, f) => {
326
- acc[f] = input?.[f] ?? params[f];
327
- return acc;
328
- }, {});
492
+ const pk = this.resolveUpdateKey(input, pkFields, context.getParameters() ?? {});
329
493
  const object = await this.loadModel(model, pk);
494
+ // Check on the stored object, before any client input is applied
495
+ await this.checkPermission(object, context, "update", model);
496
+ await this.checkReparent(model, object, input, context);
330
497
  await object.patch(input);
331
498
  return object;
332
499
  }
@@ -343,15 +510,24 @@ export class DomainService extends Service {
343
510
  if (!action.global) {
344
511
  // First arg is uuid when the action is instance-level
345
512
  const uuid = args[0];
346
- const object = await model.ref(uuid).get();
347
- if (!object || object.isDeleted()) {
348
- throw new WebdaError.NotFound("Object not found");
349
- }
350
- //await object.checkAct(context, action.name as ActionsEnum<Model>);
513
+ // A missing object and an object the caller cannot read answer the same NotFound
514
+ const object = await this.loadModel(model, uuid);
515
+ await this.checkPermission(object, context, action.name, model);
351
516
  return object[handler](context);
352
517
  }
353
518
  else {
354
- return model[handler](context);
519
+ // Static action: the model's static canAct is asked without object
520
+ await checkStaticModelPermission(model, context, action.name);
521
+ // With an input schema the arguments are resolved from it (`callOperation`); without one the body is passed,
522
+ // sanitized like model input (`__`, `_`, protected and read-only attributes removed); no body: the context
523
+ const resolved = args.length > 0 && !(args[0] instanceof OperationContext);
524
+ const hasSchema = !!useApplication().getSchema(`${useModelMetadata(model)?.Identifier}.${action.name}.input`);
525
+ const callArgs = resolved
526
+ ? hasSchema
527
+ ? args
528
+ : [sanitizeModelInput(model, args[0]), ...args.slice(1)]
529
+ : [context];
530
+ return model[handler](...callArgs);
355
531
  }
356
532
  }
357
533
  /**
@@ -409,6 +585,16 @@ export class DomainService extends Service {
409
585
  if (!this.isExposable(model, Metadata.Identifier)) {
410
586
  continue;
411
587
  }
588
+ if (!hasModelPermissionCheck(model)) {
589
+ this.log("WARN", `${Metadata.Identifier} is exposed but denies every request: define static canAct (or the instance canAct)`);
590
+ }
591
+ else if (!hasStaticPermissionCheck(model)) {
592
+ // Instance form only: static actions are asked without object, so the base static refuses them all
593
+ const statics = Object.keys(Metadata.Actions ?? {}).filter(name => Metadata.Actions[name]?.global);
594
+ if (statics.length) {
595
+ this.log("WARN", `${Metadata.Identifier} defines only the instance canAct: its static actions (${statics.join(", ")}) are always refused, define static canAct`);
596
+ }
597
+ }
412
598
  const shortId = Metadata.Identifier.split("/").pop();
413
599
  const plural = Metadata.Plural;
414
600
  const modelSchema = modelKey;
@@ -631,28 +817,6 @@ export class DomainService extends Service {
631
817
  async modelBehaviorAction(...args) {
632
818
  const context = useContext();
633
819
  const { model, attribute, action, behavior } = context.getExtension("operationContext");
634
- // Parent uuid comes from the URL (`/posts/{uuid}/mainImage/...`); read it
635
- // straight off the context so we don't depend on its position in `args`.
636
- const uuid = (context.getParameters() || {}).uuid;
637
- let instance;
638
- try {
639
- instance = await model.ref(uuid).get();
640
- }
641
- catch {
642
- // Repositories (e.g. MemoryRepository) throw a plain Error when the
643
- // primary key isn't in storage. Treat that the same as a "soft" miss.
644
- }
645
- if (!instance || instance.isDeleted?.()) {
646
- throw new WebdaError.NotFound("Object not found");
647
- }
648
- const allowed = await instance.canAct(context, `${attribute}.${action}`);
649
- if (allowed !== true && allowed !== instance) {
650
- throw new WebdaError.Forbidden(`Action ${attribute}.${action} not allowed`);
651
- }
652
- const behaviorInstance = instance[attribute];
653
- if (!behaviorInstance || typeof behaviorInstance[action] !== "function") {
654
- throw new WebdaError.NotFound(`Behavior method ${attribute}.${action} not found`);
655
- }
656
820
  // `args` was built by `resolveArguments` from the operation's input
657
821
  // schema. Two schema shapes coexist:
658
822
  // 1. Auto-generated from the method signature (`exploreBehaviorsAction`
@@ -669,6 +833,19 @@ export class DomainService extends Service {
669
833
  const inputSchema = typeof opInput === "string" ? useApplication().getSchema(opInput) : undefined;
670
834
  const propNames = inputSchema?.properties ? Object.keys(inputSchema.properties) : [];
671
835
  const passArgs = propNames[0] === "uuid" ? args.slice(1) : args;
836
+ // Parent uuid comes from the URL (`/posts/{uuid}/mainImage/...`) on REST; transports without URL parameters
837
+ // (gRPC, MCP) carry it in the input, as the uuidRequest schema declares
838
+ let uuid = (context.getParameters() || {}).uuid;
839
+ if (uuid === undefined) {
840
+ uuid = propNames[0] === "uuid" ? args[0] : (await context.getInput().catch(() => undefined))?.uuid;
841
+ }
842
+ // A missing parent and a parent the caller cannot read answer the same NotFound
843
+ const instance = await this.loadModel(model, uuid);
844
+ await this.checkPermission(instance, context, `${attribute}.${action}`, model);
845
+ const behaviorInstance = instance[attribute];
846
+ if (!behaviorInstance || typeof behaviorInstance[action] !== "function") {
847
+ throw new WebdaError.NotFound(`Behavior method ${attribute}.${action} not found`);
848
+ }
672
849
  void behavior; // tagged in operationContext for future use
673
850
  return behaviorInstance[action](...passArgs);
674
851
  }
@@ -1 +1 @@
1
- {"version":3,"file":"domainservice.service.js","sourceRoot":"","sources":["../../src/services/domainservice.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domainservice.service.js","sourceRoot":"","sources":["../../src/services/domainservice.service.ts"],"names":[],"mappings":"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"}