@smartsoft001/crud-shell-app-services 2.183.0 → 2.185.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
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
Methods:
|
|
14
14
|
<table>
|
|
15
15
|
<tr><td>create</td><td>Creates a new entity and returns its ID.</td></tr>
|
|
16
|
-
<tr><td>createMany</td><td>Creates multiple entities in bulk.</td></tr>
|
|
16
|
+
<tr><td>createMany</td><td>Creates multiple entities in bulk. Returns copies carrying the generated ids, not the objects passed in.</td></tr>
|
|
17
17
|
<tr><td>readById</td><td>Retrieves an entity by its ID.</td></tr>
|
|
18
18
|
<tr><td>read</td><td>Retrieves a list of entities with filtering support.</td></tr>
|
|
19
19
|
<tr><td>readBySpec</td><td>Retrieves entities using a specification object.</td></tr>
|
|
@@ -26,3 +26,11 @@ Methods:
|
|
|
26
26
|
<tr><td>deleteAttachment</td><td>Deletes an attachment by its ID.</td></tr>
|
|
27
27
|
<tr><td>changes</td><td>Returns an observable for entity change events.</td></tr>
|
|
28
28
|
</table>
|
|
29
|
+
|
|
30
|
+
### Credential fields
|
|
31
|
+
|
|
32
|
+
Every record `CrudService` returns (`readById`, `read`, `readBySpec` and `createMany`) is a copy
|
|
33
|
+
without the credential fields `password`, `passwordConfirm` and `authRefreshToken`. The objects held
|
|
34
|
+
by the repository, and the objects passed to `createMany`, are left untouched. Code that relied on
|
|
35
|
+
`createMany` returning the same array it was given, or on reading those fields back, has to use the
|
|
36
|
+
returned copies or load them through the repository instead.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smartsoft001/crud-shell-app-services",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.185.0",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"typings": "./src/index.d.ts",
|
|
@@ -30,13 +30,13 @@
|
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
32
|
"@nestjs/common": "^11.1.5",
|
|
33
|
-
"@smartsoft001/crud-domain": "2.
|
|
34
|
-
"@smartsoft001/crud-shell-dtos": "2.
|
|
35
|
-
"@smartsoft001/domain-core": "2.
|
|
36
|
-
"@smartsoft001/models": "2.
|
|
37
|
-
"@smartsoft001/nestjs": "2.
|
|
38
|
-
"@smartsoft001/users": "2.
|
|
39
|
-
"@smartsoft001/utils": "2.
|
|
33
|
+
"@smartsoft001/crud-domain": "2.185.0",
|
|
34
|
+
"@smartsoft001/crud-shell-dtos": "2.185.0",
|
|
35
|
+
"@smartsoft001/domain-core": "2.185.0",
|
|
36
|
+
"@smartsoft001/models": "2.185.0",
|
|
37
|
+
"@smartsoft001/nestjs": "2.185.0",
|
|
38
|
+
"@smartsoft001/users": "2.185.0",
|
|
39
|
+
"@smartsoft001/utils": "2.185.0",
|
|
40
40
|
"rxjs": "^7.8.1"
|
|
41
41
|
},
|
|
42
42
|
"types": "./src/index.d.ts"
|
|
@@ -47,11 +47,17 @@ export declare class CrudService<T extends IEntity<string>> {
|
|
|
47
47
|
end?: number;
|
|
48
48
|
}): Promise<Readable>;
|
|
49
49
|
deleteAttachment(id: string): Promise<void>;
|
|
50
|
+
/** Upload limits for the HTTP attachment route, from `SharedConfig` or the defaults. */
|
|
51
|
+
getAttachmentLimits(): {
|
|
52
|
+
maxBytes: number;
|
|
53
|
+
maxFields: number;
|
|
54
|
+
};
|
|
55
|
+
authorizeAttachment(operation: 'create' | 'read' | 'delete', id: string, user?: IUser): Promise<void>;
|
|
50
56
|
changes(criteria: {
|
|
51
57
|
id?: string;
|
|
52
58
|
}): Observable<ItemChangedData>;
|
|
53
59
|
private hashCredentials;
|
|
54
|
-
private
|
|
60
|
+
private withoutCredentials;
|
|
55
61
|
/**
|
|
56
62
|
* Turns a plain request body into an instance of the configured model type so
|
|
57
63
|
* that the model metadata used by castModel and getInvalidFields is available.
|
|
@@ -11,6 +11,8 @@ const domain_core_1 = require("@smartsoft001/domain-core");
|
|
|
11
11
|
const models_1 = require("@smartsoft001/models");
|
|
12
12
|
const nestjs_1 = require("@smartsoft001/nestjs");
|
|
13
13
|
const utils_1 = require("@smartsoft001/utils");
|
|
14
|
+
/** One file of up to 10 MiB, unless `SharedConfig.attachmentMaxBytes` says otherwise. */
|
|
15
|
+
const DEFAULT_ATTACHMENT_MAX_BYTES = 10 * 1024 * 1024;
|
|
14
16
|
let CrudService = CrudService_1 = class CrudService {
|
|
15
17
|
permissionService;
|
|
16
18
|
repository;
|
|
@@ -67,7 +69,7 @@ let CrudService = CrudService_1 = class CrudService {
|
|
|
67
69
|
this._logger.error(e);
|
|
68
70
|
throw e;
|
|
69
71
|
}
|
|
70
|
-
return data;
|
|
72
|
+
return data.map((item) => this.withoutCredentials(item));
|
|
71
73
|
}
|
|
72
74
|
/** Resolves to `null` when no item has that id; the caller decides what that means (the controller answers 404). */
|
|
73
75
|
async readById(id, user) {
|
|
@@ -76,8 +78,7 @@ let CrudService = CrudService_1 = class CrudService {
|
|
|
76
78
|
const result = await this.repository.getById(id);
|
|
77
79
|
if (!result)
|
|
78
80
|
return null;
|
|
79
|
-
this.
|
|
80
|
-
return result;
|
|
81
|
+
return this.withoutCredentials(result);
|
|
81
82
|
}
|
|
82
83
|
catch (e) {
|
|
83
84
|
this._logger.error(e);
|
|
@@ -88,8 +89,10 @@ let CrudService = CrudService_1 = class CrudService {
|
|
|
88
89
|
try {
|
|
89
90
|
this.permissionService.valid('read', user);
|
|
90
91
|
const result = await this.repository.getByCriteria(criteria, options);
|
|
91
|
-
|
|
92
|
-
|
|
92
|
+
return {
|
|
93
|
+
...result,
|
|
94
|
+
data: result.data.map((item) => this.withoutCredentials(item)),
|
|
95
|
+
};
|
|
93
96
|
}
|
|
94
97
|
catch (e) {
|
|
95
98
|
this._logger.error(e);
|
|
@@ -159,9 +162,9 @@ let CrudService = CrudService_1 = class CrudService {
|
|
|
159
162
|
data.stream = combinedStream;
|
|
160
163
|
data.id = utils_1.GuidService.create();
|
|
161
164
|
}
|
|
162
|
-
this.attachmentRepository.upload(data, options);
|
|
165
|
+
await this.attachmentRepository.upload(data, options);
|
|
163
166
|
if (oldId)
|
|
164
|
-
await this.attachmentRepository.delete(
|
|
167
|
+
await this.attachmentRepository.delete(oldId);
|
|
165
168
|
return data.id;
|
|
166
169
|
}
|
|
167
170
|
getAttachmentInfo(id) {
|
|
@@ -173,6 +176,19 @@ let CrudService = CrudService_1 = class CrudService {
|
|
|
173
176
|
async deleteAttachment(id) {
|
|
174
177
|
return this.attachmentRepository.delete(id);
|
|
175
178
|
}
|
|
179
|
+
/** Upload limits for the HTTP attachment route, from `SharedConfig` or the defaults. */
|
|
180
|
+
getAttachmentLimits() {
|
|
181
|
+
return {
|
|
182
|
+
maxBytes: this.config?.attachmentMaxBytes ?? DEFAULT_ATTACHMENT_MAX_BYTES,
|
|
183
|
+
maxFields: this.config?.attachmentMaxFields ?? 0,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
async authorizeAttachment(operation, id, user) {
|
|
187
|
+
if (!this.config?.attachmentPolicy ||
|
|
188
|
+
(await this.config.attachmentPolicy({ operation, id, user })) !== true) {
|
|
189
|
+
throw new domain_core_1.DomainForbiddenError('Attachment access denied');
|
|
190
|
+
}
|
|
191
|
+
}
|
|
176
192
|
changes(criteria) {
|
|
177
193
|
return this.repository.changesByCriteria(criteria);
|
|
178
194
|
}
|
|
@@ -186,9 +202,14 @@ let CrudService = CrudService_1 = class CrudService {
|
|
|
186
202
|
delete credentials.passwordConfirm;
|
|
187
203
|
}
|
|
188
204
|
}
|
|
189
|
-
|
|
190
|
-
|
|
205
|
+
withoutCredentials(item) {
|
|
206
|
+
// Removes the credential fields (password, passwordConfirm, authRefreshToken) from a copy,
|
|
207
|
+
// so objects retained by a repository or passed to a bulk write are never mutated.
|
|
208
|
+
const credentials = Object.assign(Object.create(Object.getPrototypeOf(item)), item);
|
|
191
209
|
delete credentials.password;
|
|
210
|
+
delete credentials.passwordConfirm;
|
|
211
|
+
delete credentials.authRefreshToken;
|
|
212
|
+
return credentials;
|
|
192
213
|
}
|
|
193
214
|
/**
|
|
194
215
|
* Turns a plain request body into an instance of the configured model type so
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud.service.js","sourceRoot":"","sources":["../../../../../../../../../packages/crud/shell/app-services/src/lib/services/crud/crud.service.ts"],"names":[],"mappings":";;;;;AAAA,2CAA8D;AAC9D,8EAA6C;AAC7C,qDAAuC;AACvC,yDAA4C;AAK5C,
|
|
1
|
+
{"version":3,"file":"crud.service.js","sourceRoot":"","sources":["../../../../../../../../../packages/crud/shell/app-services/src/lib/services/crud/crud.service.ts"],"names":[],"mappings":"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"}
|