@smartsoft001/crud-shell-nestjs 2.184.0 → 2.186.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
@@ -27,11 +27,41 @@
27
27
  <tr><td>PUT /:id</td><td>update — Updates an entity by its ID.</td></tr>
28
28
  <tr><td>PATCH /:id</td><td>updatePartial — Partially updates an entity by its ID.</td></tr>
29
29
  <tr><td>DELETE /:id</td><td>delete — Deletes an entity by its ID.</td></tr>
30
- <tr><td>POST /attachments</td><td>uploadAttachment — Uploads an attachment for an entity.</td></tr>
31
- <tr><td>GET /attachments/:id</td><td>downloadAttachment — Downloads an attachment by its ID.</td></tr>
32
- <tr><td>DELETE /attachments/:id</td><td>deleteAttachment — Deletes an attachment by its ID.</td></tr>
30
+ <tr><td>POST /attachments</td><td>uploadAttachment — Uploads one file. Requires a JWT and an <code>attachmentPolicy</code> that allows <code>create</code>.</td></tr>
31
+ <tr><td>GET /attachments/:id</td><td>downloadAttachment — Downloads a file. JWT optional; the policy must allow <code>read</code>.</td></tr>
32
+ <tr><td>DELETE /attachments/:id</td><td>deleteAttachment — Deletes a file. Requires a JWT and a policy that allows <code>delete</code>.</td></tr>
33
33
  </table>
34
34
 
35
+ ## 🔒 Attachment access
36
+
37
+ The attachment routes are denied unless `SharedConfig.attachmentPolicy` returns exactly `true`. The
38
+ policy is called with `{ operation, id, user }` (`operation` is `create`, `read` or `delete`) before
39
+ storage is read or changed. A valid JWT is not ownership: resolve owner, tenant and roles from data
40
+ the server trusts, and never return an unconditional `true` for private files.
41
+
42
+ - **Linking a file to its uploader.** For `create`, the controller generates the id first and passes
43
+ it to the policy before reading the body. Record `user` against that `id` there and return `true`;
44
+ later `read` and `delete` checks look the id up. A rejected upload can leave a record for an id
45
+ with no file.
46
+ - **The stock Angular UI sends no token for files.** The PDF and attachment displays open files
47
+ with `FileService.download` (`window.open`), and the image, video and `smartFileUrl` displays load
48
+ `FileService.getUrl` as plain URLs, so these are anonymous reads. With the stock UI, allow
49
+ anonymous `read` for files meant to be viewable.
50
+ - **Status codes.** A refusal is a `DomainForbiddenError`; it becomes `403` only when
51
+ `AppExceptionFilter` from `@smartsoft001/nestjs` is registered (otherwise `500`). A missing token
52
+ on upload or delete is `401`.
53
+ - **Limits.** One file of at most `attachmentMaxBytes` (default 10 MiB) and at most
54
+ `attachmentMaxFields` extra form fields (default `0`). The file is buffered before storage;
55
+ oversized, multi-file or extra-field requests answer `413` and nothing is stored. The upload
56
+ answers only after the storage write finished.
57
+
58
+ ### Migration
59
+
60
+ The attachment routes used to have no guard. After upgrading: configure `attachmentPolicy`, register
61
+ `AppExceptionFilter`, send a Bearer token on uploads and deletes, and raise `attachmentMaxBytes` or
62
+ `attachmentMaxFields` if clients send larger files or extra form fields. Existing files have no
63
+ ownership records; the policy decides how to treat them.
64
+
35
65
  ## 🛠️ Gateways & Methods
36
66
 
37
67
  ### CrudGateway
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartsoft001/crud-shell-nestjs",
3
- "version": "2.184.0",
3
+ "version": "2.186.0",
4
4
  "type": "commonjs",
5
5
  "main": "./src/index.js",
6
6
  "typings": "./src/index.d.ts",
@@ -34,14 +34,14 @@
34
34
  "@nestjs/jwt": "^11.0.0",
35
35
  "@nestjs/passport": "^11.0.5",
36
36
  "@nestjs/websockets": "^11.2.1",
37
- "@smartsoft001/crud-domain": "2.184.0",
38
- "@smartsoft001/crud-shell-app-services": "2.184.0",
39
- "@smartsoft001/crud-shell-dtos": "2.184.0",
40
- "@smartsoft001/domain-core": "2.184.0",
41
- "@smartsoft001/mongo": "2.184.0",
42
- "@smartsoft001/nestjs": "2.184.0",
43
- "@smartsoft001/users": "2.184.0",
44
- "@smartsoft001/utils": "2.184.0",
37
+ "@smartsoft001/crud-domain": "2.186.0",
38
+ "@smartsoft001/crud-shell-app-services": "2.186.0",
39
+ "@smartsoft001/crud-shell-dtos": "2.186.0",
40
+ "@smartsoft001/domain-core": "2.186.0",
41
+ "@smartsoft001/mongo": "2.186.0",
42
+ "@smartsoft001/nestjs": "2.186.0",
43
+ "@smartsoft001/users": "2.186.0",
44
+ "@smartsoft001/utils": "2.186.0",
45
45
  "express": "^5.2.1",
46
46
  "rxjs": "^7.8.1",
47
47
  "socket.io": "^4.8.1"
@@ -3,7 +3,6 @@ import type { CreateManyMode } from '@smartsoft001/crud-domain';
3
3
  import { CrudService } from '@smartsoft001/crud-shell-app-services';
4
4
  import { IEntity } from '@smartsoft001/domain-core';
5
5
  import type { IUser } from '@smartsoft001/users';
6
- import { Writable } from 'stream';
7
6
  import { IQ2mResult } from './query-to-mongo';
8
7
  export declare class CrudController<T extends IEntity<string>> {
9
8
  protected readonly service: CrudService<T>;
@@ -24,9 +23,9 @@ export declare class CrudController<T extends IEntity<string>> {
24
23
  delete(params: {
25
24
  id: string;
26
25
  }, user: IUser): Promise<void>;
27
- uploadAttachment(request: Request, response: Response): Writable;
28
- downloadAttachment(id: string, request: Request, response: Response): Promise<void>;
29
- deleteAttachment(id: string): Promise<void>;
26
+ uploadAttachment(request: Request, response: Response, user?: IUser): Promise<void>;
27
+ downloadAttachment(id: string, request: Request, response: Response, user?: IUser): Promise<void>;
28
+ deleteAttachment(id: string, user?: IUser): Promise<void>;
30
29
  protected getQueryObject(queryObject: Record<string, unknown>): IQ2mResult;
31
30
  protected parseToXlsx(data: T[]): any;
32
31
  protected parseToCsv(data: T[]): string;
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.CrudController = void 0;
5
5
  const tslib_1 = require("tslib");
6
6
  const common_1 = require("@nestjs/common");
7
- const busboy_1 = tslib_1.__importDefault(require("busboy"));
8
7
  const json2csv_1 = require("json2csv");
9
8
  const _ = tslib_1.__importStar(require("lodash"));
10
9
  const moment_timezone_1 = tslib_1.__importDefault(require("moment-timezone"));
@@ -14,6 +13,7 @@ const nestjs_1 = require("@smartsoft001/nestjs");
14
13
  const utils_1 = require("@smartsoft001/utils");
15
14
  const stream_1 = require("stream");
16
15
  const query_to_mongo_1 = require("./query-to-mongo");
16
+ const read_attachment_1 = require("./read-attachment");
17
17
  const auth_guard_1 = require("../../guards/auth/auth.guard");
18
18
  let CrudController = CrudController_1 = class CrudController {
19
19
  service;
@@ -77,45 +77,27 @@ let CrudController = CrudController_1 = class CrudController {
77
77
  async delete(params, user) {
78
78
  await this.service.delete(params.id, user);
79
79
  }
80
- uploadAttachment(request, response) {
81
- const parser = (0, busboy_1.default)({
82
- headers: request.headers,
83
- });
80
+ async uploadAttachment(request, response, user) {
84
81
  const id = utils_1.GuidService.create();
85
- const readable = new stream_1.Readable();
86
- // eslint-disable-next-line @typescript-eslint/no-empty-function
87
- readable._read = () => { };
88
- // Both stay undefined when the request carried no file part.
89
- let fileName;
90
- let mimeType;
91
- parser.on('file', (field, file, info) => {
92
- fileName = info.filename;
93
- mimeType = info.mimeType;
94
- this.service.uploadAttachment({
95
- id,
96
- stream: readable,
97
- fileName: info.filename,
98
- encoding: info.encoding,
99
- mimeType: info.mimeType,
100
- });
101
- file.on('data', (data) => {
102
- readable.push(data);
103
- });
82
+ await this.service.authorizeAttachment('create', id, user);
83
+ const file = await (0, read_attachment_1.readAttachment)(request, this.service.getAttachmentLimits());
84
+ await this.service.uploadAttachment({
85
+ id,
86
+ stream: stream_1.Readable.from(file.data),
87
+ fileName: file.fileName,
88
+ encoding: file.encoding,
89
+ mimeType: file.mimeType,
104
90
  });
105
- parser.on('finish', function () {
106
- readable.push(null);
107
- response.set('Location', CrudController_1.getLink(response.req) + '/' + id);
108
- response.json({
109
- id,
110
- fileName,
111
- contentType: mimeType,
112
- length: readable.readableLength,
113
- });
114
- response.end();
91
+ response.set('Location', CrudController_1.getLink(request) + '/' + id);
92
+ response.json({
93
+ id,
94
+ fileName: file.fileName,
95
+ contentType: file.mimeType,
96
+ length: file.data.length,
115
97
  });
116
- return request.pipe(parser);
117
98
  }
118
- async downloadAttachment(id, request, response) {
99
+ async downloadAttachment(id, request, response, user) {
100
+ await this.service.authorizeAttachment('read', id, user);
119
101
  const fileInfo = await this.service.getAttachmentInfo(id);
120
102
  if (!fileInfo) {
121
103
  throw new common_1.NotFoundException('Invalid id');
@@ -157,7 +139,8 @@ let CrudController = CrudController_1 = class CrudController {
157
139
  readstream.pipe(response);
158
140
  }
159
141
  }
160
- async deleteAttachment(id) {
142
+ async deleteAttachment(id, user) {
143
+ await this.service.authorizeAttachment('delete', id, user);
161
144
  await this.service.deleteAttachment(id);
162
145
  }
163
146
  getQueryObject(queryObject) {
@@ -304,27 +287,33 @@ tslib_1.__decorate([
304
287
  tslib_1.__metadata("design:returntype", Promise)
305
288
  ], CrudController.prototype, "delete", null);
306
289
  tslib_1.__decorate([
290
+ (0, common_1.UseGuards)(auth_guard_1.AuthJwtGuard),
307
291
  (0, common_1.Post)('attachments'),
308
292
  tslib_1.__param(0, (0, common_1.Req)()),
309
293
  tslib_1.__param(1, (0, common_1.Res)()),
294
+ tslib_1.__param(2, (0, nestjs_1.User)()),
310
295
  tslib_1.__metadata("design:type", Function),
311
- tslib_1.__metadata("design:paramtypes", [Object, Object]),
312
- tslib_1.__metadata("design:returntype", stream_1.Writable)
296
+ tslib_1.__metadata("design:paramtypes", [Object, Object, Object]),
297
+ tslib_1.__metadata("design:returntype", Promise)
313
298
  ], CrudController.prototype, "uploadAttachment", null);
314
299
  tslib_1.__decorate([
300
+ (0, common_1.UseGuards)(auth_guard_1.AuthOrAnonymousJwtGuard),
315
301
  (0, common_1.Get)('attachments/:id'),
316
302
  tslib_1.__param(0, (0, common_1.Param)('id')),
317
303
  tslib_1.__param(1, (0, common_1.Req)()),
318
304
  tslib_1.__param(2, (0, common_1.Res)()),
305
+ tslib_1.__param(3, (0, nestjs_1.User)()),
319
306
  tslib_1.__metadata("design:type", Function),
320
- tslib_1.__metadata("design:paramtypes", [String, Object, Object]),
307
+ tslib_1.__metadata("design:paramtypes", [String, Object, Object, Object]),
321
308
  tslib_1.__metadata("design:returntype", Promise)
322
309
  ], CrudController.prototype, "downloadAttachment", null);
323
310
  tslib_1.__decorate([
311
+ (0, common_1.UseGuards)(auth_guard_1.AuthJwtGuard),
324
312
  (0, common_1.Delete)('attachments/:id'),
325
313
  tslib_1.__param(0, (0, common_1.Param)('id')),
314
+ tslib_1.__param(1, (0, nestjs_1.User)()),
326
315
  tslib_1.__metadata("design:type", Function),
327
- tslib_1.__metadata("design:paramtypes", [String]),
316
+ tslib_1.__metadata("design:paramtypes", [String, Object]),
328
317
  tslib_1.__metadata("design:returntype", Promise)
329
318
  ], CrudController.prototype, "deleteAttachment", null);
330
319
  exports.CrudController = CrudController = CrudController_1 = tslib_1.__decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"crud.controller.js","sourceRoot":"","sources":["../../../../../../../../../packages/crud/shell/nestjs/src/lib/controllers/crud/crud.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crud.controller.js","sourceRoot":"","sources":["../../../../../../../../../packages/crud/shell/nestjs/src/lib/controllers/crud/crud.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Request } from 'express';
2
+ /** Buffer a single bounded file so rejected multipart requests never reach storage. */
3
+ export declare function readAttachment(request: Request, limits: {
4
+ maxBytes: number;
5
+ maxFields: number;
6
+ }): Promise<{
7
+ data: Buffer;
8
+ fileName: string;
9
+ mimeType: string;
10
+ encoding: string;
11
+ }>;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readAttachment = readAttachment;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const busboy_1 = tslib_1.__importDefault(require("busboy"));
7
+ /** Buffer a single bounded file so rejected multipart requests never reach storage. */
8
+ function readAttachment(request, limits) {
9
+ return new Promise((resolve, reject) => {
10
+ let parser;
11
+ try {
12
+ parser = (0, busboy_1.default)({
13
+ headers: request.headers,
14
+ limits: {
15
+ fileSize: limits.maxBytes + 1,
16
+ files: 1,
17
+ fields: limits.maxFields,
18
+ // busboy emits partsLimit on reaching the count, so allow one spare part:
19
+ // the file plus the fields stay under it and anything more is rejected.
20
+ parts: 2 + limits.maxFields,
21
+ },
22
+ });
23
+ }
24
+ catch {
25
+ reject(new common_1.BadRequestException('Invalid multipart upload'));
26
+ return;
27
+ }
28
+ const chunks = [];
29
+ let info;
30
+ let settled = false;
31
+ const aborted = () => fail(new common_1.BadRequestException('Upload interrupted'));
32
+ const cleanup = () => {
33
+ request.off('aborted', aborted);
34
+ request.off('error', fail);
35
+ };
36
+ const fail = (error) => {
37
+ if (settled)
38
+ return;
39
+ settled = true;
40
+ cleanup();
41
+ request.unpipe(parser);
42
+ request.resume();
43
+ // Busboy can emit its file event while parsing; let that callback unwind.
44
+ queueMicrotask(() => parser.destroy());
45
+ reject(error);
46
+ };
47
+ const limit = () => fail(new common_1.PayloadTooLargeException(`One file up to ${limits.maxBytes} bytes and ${limits.maxFields} form fields are allowed`));
48
+ parser.on('file', (_field, file, metadata) => {
49
+ info = metadata;
50
+ file.on('error', fail);
51
+ file.on('limit', limit);
52
+ file.on('data', (chunk) => {
53
+ if (!settled)
54
+ chunks.push(chunk);
55
+ });
56
+ });
57
+ parser.on('filesLimit', limit);
58
+ parser.on('fieldsLimit', limit);
59
+ parser.on('partsLimit', limit);
60
+ parser.on('error', () => fail(new common_1.BadRequestException('Invalid multipart upload')));
61
+ parser.on('finish', () => {
62
+ if (settled)
63
+ return;
64
+ if (!info)
65
+ return fail(new common_1.BadRequestException('A file is required'));
66
+ settled = true;
67
+ cleanup();
68
+ resolve({
69
+ data: Buffer.concat(chunks),
70
+ fileName: info.filename,
71
+ mimeType: info.mimeType,
72
+ encoding: info.encoding,
73
+ });
74
+ });
75
+ request.once('aborted', aborted);
76
+ request.once('error', fail);
77
+ request.pipe(parser);
78
+ });
79
+ }
80
+ //# sourceMappingURL=read-attachment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-attachment.js","sourceRoot":"","sources":["../../../../../../../../../packages/crud/shell/nestjs/src/lib/controllers/crud/read-attachment.ts"],"names":[],"mappings":"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"}