@carlonicora/nestjs-neo4jsonapi 6.4.0 → 6.5.1
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/dist/agents/graph/services/graph.search.service.d.ts +6 -0
- package/dist/agents/graph/services/graph.search.service.d.ts.map +1 -1
- package/dist/agents/graph/services/graph.search.service.js +51 -10
- package/dist/agents/graph/services/graph.search.service.js.map +1 -1
- package/dist/common/interfaces/s3.key-access.policy.interface.d.ts +6 -1
- package/dist/common/interfaces/s3.key-access.policy.interface.d.ts.map +1 -1
- package/dist/common/interfaces/s3.key-access.policy.interface.js +6 -1
- package/dist/common/interfaces/s3.key-access.policy.interface.js.map +1 -1
- package/dist/core/security/services/security.service.d.ts +4 -0
- package/dist/core/security/services/security.service.d.ts.map +1 -1
- package/dist/core/security/services/security.service.js +5 -1
- package/dist/core/security/services/security.service.js.map +1 -1
- package/dist/core/websocket/gateways/event.gateway.d.ts.map +1 -1
- package/dist/core/websocket/gateways/event.gateway.js +18 -9
- package/dist/core/websocket/gateways/event.gateway.js.map +1 -1
- package/dist/core/websocket/services/presence.cron.service.d.ts.map +1 -1
- package/dist/core/websocket/services/presence.cron.service.js +3 -2
- package/dist/core/websocket/services/presence.cron.service.js.map +1 -1
- package/dist/core/websocket/services/websocket.service.d.ts +23 -1
- package/dist/core/websocket/services/websocket.service.d.ts.map +1 -1
- package/dist/core/websocket/services/websocket.service.js +37 -4
- package/dist/core/websocket/services/websocket.service.js.map +1 -1
- package/dist/foundations/auth/controllers/auth.controller.d.ts +2 -2
- package/dist/foundations/auth/controllers/auth.controller.d.ts.map +1 -1
- package/dist/foundations/auth/controllers/auth.controller.js +8 -6
- package/dist/foundations/auth/controllers/auth.controller.js.map +1 -1
- package/dist/foundations/auth/events/auth.events.d.ts +5 -0
- package/dist/foundations/auth/events/auth.events.d.ts.map +1 -1
- package/dist/foundations/auth/repositories/auth.repository.d.ts +11 -0
- package/dist/foundations/auth/repositories/auth.repository.d.ts.map +1 -1
- package/dist/foundations/auth/repositories/auth.repository.js +37 -0
- package/dist/foundations/auth/repositories/auth.repository.js.map +1 -1
- package/dist/foundations/auth/services/auth.service.d.ts +2 -2
- package/dist/foundations/auth/services/auth.service.d.ts.map +1 -1
- package/dist/foundations/auth/services/auth.service.js +19 -13
- package/dist/foundations/auth/services/auth.service.js.map +1 -1
- package/dist/foundations/community/repositories/community.repository.d.ts +6 -0
- package/dist/foundations/community/repositories/community.repository.d.ts.map +1 -1
- package/dist/foundations/community/repositories/community.repository.js +42 -9
- package/dist/foundations/community/repositories/community.repository.js.map +1 -1
- package/dist/foundations/company/services/company.service.d.ts +3 -1
- package/dist/foundations/company/services/company.service.d.ts.map +1 -1
- package/dist/foundations/company/services/company.service.js +8 -2
- package/dist/foundations/company/services/company.service.js.map +1 -1
- package/dist/foundations/how-to/controllers/how-to.controller.d.ts +4 -0
- package/dist/foundations/how-to/controllers/how-to.controller.d.ts.map +1 -1
- package/dist/foundations/how-to/controllers/how-to.controller.js +12 -0
- package/dist/foundations/how-to/controllers/how-to.controller.js.map +1 -1
- package/dist/foundations/role/controllers/role.controller.d.ts.map +1 -1
- package/dist/foundations/role/controllers/role.controller.js +8 -0
- package/dist/foundations/role/controllers/role.controller.js.map +1 -1
- package/dist/foundations/s3/controllers/s3.controller.d.ts +3 -8
- package/dist/foundations/s3/controllers/s3.controller.d.ts.map +1 -1
- package/dist/foundations/s3/controllers/s3.controller.js +10 -29
- package/dist/foundations/s3/controllers/s3.controller.js.map +1 -1
- package/dist/foundations/s3/index.d.ts +1 -0
- package/dist/foundations/s3/index.d.ts.map +1 -1
- package/dist/foundations/s3/index.js +1 -0
- package/dist/foundations/s3/index.js.map +1 -1
- package/dist/foundations/s3/s3.service.module.d.ts +2 -1
- package/dist/foundations/s3/s3.service.module.d.ts.map +1 -1
- package/dist/foundations/s3/s3.service.module.js +5 -3
- package/dist/foundations/s3/s3.service.module.js.map +1 -1
- package/dist/foundations/s3/services/s3-client-key.service.d.ts +64 -0
- package/dist/foundations/s3/services/s3-client-key.service.d.ts.map +1 -0
- package/dist/foundations/s3/services/s3-client-key.service.js +120 -0
- package/dist/foundations/s3/services/s3-client-key.service.js.map +1 -0
- package/dist/foundations/user/controllers/user.controller.d.ts +20 -2
- package/dist/foundations/user/controllers/user.controller.d.ts.map +1 -1
- package/dist/foundations/user/controllers/user.controller.js +89 -35
- package/dist/foundations/user/controllers/user.controller.js.map +1 -1
- package/dist/foundations/user/repositories/user.repository.d.ts +35 -0
- package/dist/foundations/user/repositories/user.repository.d.ts.map +1 -1
- package/dist/foundations/user/repositories/user.repository.js +60 -13
- package/dist/foundations/user/repositories/user.repository.js.map +1 -1
- package/dist/foundations/user/services/user.service.d.ts +21 -1
- package/dist/foundations/user/services/user.service.d.ts.map +1 -1
- package/dist/foundations/user/services/user.service.js +37 -3
- package/dist/foundations/user/services/user.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.service.module.d.ts","sourceRoot":"","sources":["../../../src/foundations/s3/s3.service.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"s3.service.module.d.ts","sourceRoot":"","sources":["../../../src/foundations/s3/s3.service.module.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAIa,eAAe;CAAG"}
|
|
@@ -9,11 +9,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.S3ServiceModule = void 0;
|
|
10
10
|
const common_1 = require("@nestjs/common");
|
|
11
11
|
const s3_cipher_service_1 = require("./services/s3-cipher.service");
|
|
12
|
+
const s3_client_key_service_1 = require("./services/s3-client-key.service");
|
|
12
13
|
const s3_service_1 = require("./services/s3.service");
|
|
13
14
|
/**
|
|
14
15
|
* S3 Service Module
|
|
15
16
|
*
|
|
16
|
-
* Provides S3Service (and the S3CipherService it depends on) and
|
|
17
|
+
* Provides S3Service (and the S3CipherService it depends on) and S3ClientKeyService (the S3 key access
|
|
18
|
+
* check for client-supplied keys) and NOTHING else — no controller, no serialiser.
|
|
17
19
|
*
|
|
18
20
|
* WHY THIS EXISTS: S3Service used to be registered TWICE — once by S3Module,
|
|
19
21
|
* and once directly in MigratorModule's `providers` (so the migrator could
|
|
@@ -42,8 +44,8 @@ let S3ServiceModule = class S3ServiceModule {
|
|
|
42
44
|
exports.S3ServiceModule = S3ServiceModule;
|
|
43
45
|
exports.S3ServiceModule = S3ServiceModule = __decorate([
|
|
44
46
|
(0, common_1.Module)({
|
|
45
|
-
providers: [s3_service_1.S3Service, s3_cipher_service_1.S3CipherService],
|
|
46
|
-
exports: [s3_service_1.S3Service, s3_cipher_service_1.S3CipherService],
|
|
47
|
+
providers: [s3_service_1.S3Service, s3_cipher_service_1.S3CipherService, s3_client_key_service_1.S3ClientKeyService],
|
|
48
|
+
exports: [s3_service_1.S3Service, s3_cipher_service_1.S3CipherService, s3_client_key_service_1.S3ClientKeyService],
|
|
47
49
|
})
|
|
48
50
|
], S3ServiceModule);
|
|
49
51
|
//# sourceMappingURL=s3.service.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.service.module.js","sourceRoot":"","sources":["../../../src/foundations/s3/s3.service.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,oEAA+D;AAC/D,sDAAkD;AAElD
|
|
1
|
+
{"version":3,"file":"s3.service.module.js","sourceRoot":"","sources":["../../../src/foundations/s3/s3.service.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,oEAA+D;AAC/D,4EAAsE;AACtE,sDAAkD;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAKI,IAAM,eAAe,GAArB,MAAM,eAAe;CAAG,CAAA;AAAlB,0CAAe;0BAAf,eAAe;IAJ3B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,sBAAS,EAAE,mCAAe,EAAE,0CAAkB,CAAC;QAC3D,OAAO,EAAE,CAAC,sBAAS,EAAE,mCAAe,EAAE,0CAAkB,CAAC;KAC1D,CAAC;GACW,eAAe,CAAG"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { ClsService } from "nestjs-cls";
|
|
2
|
+
import { S3KeyAccessPolicy, S3KeyAction } from "../../../common/interfaces/s3.key-access.policy.interface";
|
|
3
|
+
/**
|
|
4
|
+
* Runs the bound `S3_KEY_ACCESS_POLICY` on an object key for the current
|
|
5
|
+
* caller (`userId`, `companyId` and `roles` from the request CLS context, the
|
|
6
|
+
* same values the repositories scope by).
|
|
7
|
+
*
|
|
8
|
+
* Two entry points:
|
|
9
|
+
*
|
|
10
|
+
* - `assertKeyAccess` — the `/s3` routes (presign, sign, delete). A malformed
|
|
11
|
+
* key is refused (400) whether or not a policy is bound.
|
|
12
|
+
* - `assertClientKey` — a key the CLIENT sent in a request body (an avatar, a
|
|
13
|
+
* logo, an uploaded file the entity will point at), run by a service before
|
|
14
|
+
* the key is stored or read server-side.
|
|
15
|
+
*
|
|
16
|
+
* When no policy is bound, `assertClientKey` allows every value, exactly as
|
|
17
|
+
* before the check existed: an application that wants body keys checked binds
|
|
18
|
+
* `S3_KEY_ACCESS_POLICY`.
|
|
19
|
+
*/
|
|
20
|
+
export declare class S3ClientKeyService {
|
|
21
|
+
private readonly clsService;
|
|
22
|
+
private readonly keyPolicy?;
|
|
23
|
+
constructor(clsService: ClsService, keyPolicy?: S3KeyAccessPolicy);
|
|
24
|
+
/**
|
|
25
|
+
* Rejects a malformed key (400) whether or not a policy is bound, then asks
|
|
26
|
+
* the bound policy, if any, and rejects a refusal (403).
|
|
27
|
+
*/
|
|
28
|
+
assertKeyAccess(params: {
|
|
29
|
+
key: unknown;
|
|
30
|
+
action: S3KeyAction;
|
|
31
|
+
isPublic: boolean | string | undefined;
|
|
32
|
+
}): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Service-side check for a key the CLIENT sent in a request body (a
|
|
35
|
+
* document url, an avatar, a logo, an uploaded file…), run before the key is
|
|
36
|
+
* stored or read. The stored key is later signed for whoever reads the
|
|
37
|
+
* entity, so a key the caller may not download must never be accepted.
|
|
38
|
+
*
|
|
39
|
+
* Absent values pass (nothing to check). An absolute http(s) URL is not an
|
|
40
|
+
* S3 key and passes untouched: the callers already branch on it, or store
|
|
41
|
+
* it as a literal link (the web user editor sends back the signed avatar
|
|
42
|
+
* URL it was given).
|
|
43
|
+
*
|
|
44
|
+
* No policy bound: every value passes, as before (see the class comment).
|
|
45
|
+
*
|
|
46
|
+
* Otherwise a malformed key (`isWellFormedS3Key`) is refused with a 400,
|
|
47
|
+
* and the bound policy decides with `action` (default `download`, since the
|
|
48
|
+
* stored key is signed for every reader) and `isPublic: false`; a refusal
|
|
49
|
+
* is a 403.
|
|
50
|
+
*
|
|
51
|
+
* `folder` is set by the avatar / image / logo fields: the key must then sit
|
|
52
|
+
* in that field's own folder, `companies/<cid>/<folder>/…` (`users` for the
|
|
53
|
+
* avatar, `companies` for the logo), so such a field cannot point at another
|
|
54
|
+
* kind of file (a recording, an export) of the same company. No
|
|
55
|
+
* Administrator bypass on the folder; the policy still decides the company.
|
|
56
|
+
*/
|
|
57
|
+
assertClientKey(params: {
|
|
58
|
+
key: string | null | undefined;
|
|
59
|
+
action?: S3KeyAction;
|
|
60
|
+
folder?: string;
|
|
61
|
+
}): Promise<void>;
|
|
62
|
+
private _canAccess;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=s3-client-key.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-client-key.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/s3/services/s3-client-key.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAGL,iBAAiB,EACjB,WAAW,EACZ,MAAM,2DAA2D,CAAC;AAEnE;;;;;;;;;;;;;;;;GAgBG;AACH,qBACa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAG3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAHV,UAAU,EAAE,UAAU,EAGtB,SAAS,CAAC,EAAE,iBAAiB;IAGhD;;;OAGG;IACG,eAAe,CAAC,MAAM,EAAE;QAC5B,GAAG,EAAE,OAAO,CAAC;QACb,MAAM,EAAE,WAAW,CAAC;QACpB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;KACxC,GAAG,OAAO,CAAC,IAAI,CAAC;IAejB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,eAAe,CAAC,MAAM,EAAE;QAC5B,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;QAC/B,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,IAAI,CAAC;YAoBH,UAAU;CAUzB"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.S3ClientKeyService = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const nestjs_cls_1 = require("nestjs-cls");
|
|
18
|
+
const s3_key_access_policy_interface_1 = require("../../../common/interfaces/s3.key-access.policy.interface");
|
|
19
|
+
/**
|
|
20
|
+
* Runs the bound `S3_KEY_ACCESS_POLICY` on an object key for the current
|
|
21
|
+
* caller (`userId`, `companyId` and `roles` from the request CLS context, the
|
|
22
|
+
* same values the repositories scope by).
|
|
23
|
+
*
|
|
24
|
+
* Two entry points:
|
|
25
|
+
*
|
|
26
|
+
* - `assertKeyAccess` — the `/s3` routes (presign, sign, delete). A malformed
|
|
27
|
+
* key is refused (400) whether or not a policy is bound.
|
|
28
|
+
* - `assertClientKey` — a key the CLIENT sent in a request body (an avatar, a
|
|
29
|
+
* logo, an uploaded file the entity will point at), run by a service before
|
|
30
|
+
* the key is stored or read server-side.
|
|
31
|
+
*
|
|
32
|
+
* When no policy is bound, `assertClientKey` allows every value, exactly as
|
|
33
|
+
* before the check existed: an application that wants body keys checked binds
|
|
34
|
+
* `S3_KEY_ACCESS_POLICY`.
|
|
35
|
+
*/
|
|
36
|
+
let S3ClientKeyService = class S3ClientKeyService {
|
|
37
|
+
constructor(clsService, keyPolicy) {
|
|
38
|
+
this.clsService = clsService;
|
|
39
|
+
this.keyPolicy = keyPolicy;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Rejects a malformed key (400) whether or not a policy is bound, then asks
|
|
43
|
+
* the bound policy, if any, and rejects a refusal (403).
|
|
44
|
+
*/
|
|
45
|
+
async assertKeyAccess(params) {
|
|
46
|
+
if (!(0, s3_key_access_policy_interface_1.isWellFormedS3Key)(params.key))
|
|
47
|
+
throw new common_1.BadRequestException("Invalid S3 key");
|
|
48
|
+
if (!this.keyPolicy)
|
|
49
|
+
return;
|
|
50
|
+
const allowed = await this._canAccess({
|
|
51
|
+
key: params.key,
|
|
52
|
+
action: params.action,
|
|
53
|
+
// Query params arrive as strings: "true" is the only truthy value the clients send.
|
|
54
|
+
isPublic: params.isPublic === true || params.isPublic === "true",
|
|
55
|
+
});
|
|
56
|
+
if (!allowed)
|
|
57
|
+
throw new common_1.ForbiddenException("You cannot access this file.");
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Service-side check for a key the CLIENT sent in a request body (a
|
|
61
|
+
* document url, an avatar, a logo, an uploaded file…), run before the key is
|
|
62
|
+
* stored or read. The stored key is later signed for whoever reads the
|
|
63
|
+
* entity, so a key the caller may not download must never be accepted.
|
|
64
|
+
*
|
|
65
|
+
* Absent values pass (nothing to check). An absolute http(s) URL is not an
|
|
66
|
+
* S3 key and passes untouched: the callers already branch on it, or store
|
|
67
|
+
* it as a literal link (the web user editor sends back the signed avatar
|
|
68
|
+
* URL it was given).
|
|
69
|
+
*
|
|
70
|
+
* No policy bound: every value passes, as before (see the class comment).
|
|
71
|
+
*
|
|
72
|
+
* Otherwise a malformed key (`isWellFormedS3Key`) is refused with a 400,
|
|
73
|
+
* and the bound policy decides with `action` (default `download`, since the
|
|
74
|
+
* stored key is signed for every reader) and `isPublic: false`; a refusal
|
|
75
|
+
* is a 403.
|
|
76
|
+
*
|
|
77
|
+
* `folder` is set by the avatar / image / logo fields: the key must then sit
|
|
78
|
+
* in that field's own folder, `companies/<cid>/<folder>/…` (`users` for the
|
|
79
|
+
* avatar, `companies` for the logo), so such a field cannot point at another
|
|
80
|
+
* kind of file (a recording, an export) of the same company. No
|
|
81
|
+
* Administrator bypass on the folder; the policy still decides the company.
|
|
82
|
+
*/
|
|
83
|
+
async assertClientKey(params) {
|
|
84
|
+
const key = params.key;
|
|
85
|
+
if (key === undefined || key === null || key === "")
|
|
86
|
+
return;
|
|
87
|
+
if (/^https?:\/\//i.test(key))
|
|
88
|
+
return;
|
|
89
|
+
if (!this.keyPolicy)
|
|
90
|
+
return;
|
|
91
|
+
if (!(0, s3_key_access_policy_interface_1.isWellFormedS3Key)(key))
|
|
92
|
+
throw new common_1.BadRequestException("Invalid S3 key");
|
|
93
|
+
if (params.folder !== undefined) {
|
|
94
|
+
const segments = key.split("/");
|
|
95
|
+
if (segments[0] !== "companies" || segments[2] !== params.folder || segments.length < 5)
|
|
96
|
+
throw new common_1.ForbiddenException("You cannot reference this file.");
|
|
97
|
+
}
|
|
98
|
+
const allowed = await this._canAccess({ key, action: params.action ?? "download", isPublic: false });
|
|
99
|
+
if (!allowed)
|
|
100
|
+
throw new common_1.ForbiddenException("You cannot reference this file.");
|
|
101
|
+
}
|
|
102
|
+
async _canAccess(params) {
|
|
103
|
+
return await this.keyPolicy.canAccess({
|
|
104
|
+
key: params.key,
|
|
105
|
+
action: params.action,
|
|
106
|
+
isPublic: params.isPublic,
|
|
107
|
+
userId: this.clsService.get("userId"),
|
|
108
|
+
companyId: this.clsService.get("companyId"),
|
|
109
|
+
roles: this.clsService.get("roles") ?? [],
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
exports.S3ClientKeyService = S3ClientKeyService;
|
|
114
|
+
exports.S3ClientKeyService = S3ClientKeyService = __decorate([
|
|
115
|
+
(0, common_1.Injectable)(),
|
|
116
|
+
__param(1, (0, common_1.Optional)()),
|
|
117
|
+
__param(1, (0, common_1.Inject)(s3_key_access_policy_interface_1.S3_KEY_ACCESS_POLICY)),
|
|
118
|
+
__metadata("design:paramtypes", [nestjs_cls_1.ClsService, Object])
|
|
119
|
+
], S3ClientKeyService);
|
|
120
|
+
//# sourceMappingURL=s3-client-key.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-client-key.service.js","sourceRoot":"","sources":["../../../../src/foundations/s3/services/s3-client-key.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,12 +22,21 @@ export declare class UserController {
|
|
|
22
22
|
private readonly relevancyService;
|
|
23
23
|
private readonly cypherService;
|
|
24
24
|
constructor(users: UserService, security: SecurityService, companyService: CompanyService, cacheService: CacheService, clsService: ClsService, relevancyService: RelevancyService<User>, cypherService: UserCypherService);
|
|
25
|
+
/** Platform administrator: the global Administrator role. */
|
|
26
|
+
private isPlatformAdmin;
|
|
27
|
+
/** Administrator OR CompanyAdministrator. */
|
|
28
|
+
private isAnyAdmin;
|
|
25
29
|
findBySearch(request: AuthenticatedRequest, reply: FastifyReply, query: any, search?: string, includeDeleted?: boolean, contentIds?: string): Promise<void>;
|
|
26
30
|
findOneByUserId(req: any, userId: string): Promise<import("../../..").JsonApiSingleDocument>;
|
|
27
31
|
findFullUser(request: AuthenticatedRequest, reply: FastifyReply): Promise<void>;
|
|
28
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Admin lookup (the user editor's duplicate-email check). Bound to the
|
|
34
|
+
* caller's company: a user of another company answers 404, like a missing
|
|
35
|
+
* one. Only a platform administrator looks up across companies.
|
|
36
|
+
*/
|
|
37
|
+
findOneByEmail(request: AuthenticatedRequest, email: string): Promise<import("../../..").JsonApiSingleDocument>;
|
|
29
38
|
findByCompany(request: AuthenticatedRequest, reply: FastifyReply, companyId: string, query: any, search?: string, includeDeleted?: boolean, isDeleted?: boolean): Promise<void>;
|
|
30
|
-
createUser(request: any, body: UserPostDTO, reply: FastifyReply, lng?: string): Promise<
|
|
39
|
+
createUser(request: any, body: UserPostDTO, reply: FastifyReply, lng?: string): Promise<void>;
|
|
31
40
|
put(request: any, userId: string, body: UserPutDTO, reply: FastifyReply): Promise<void>;
|
|
32
41
|
reactivateUser(request: any, userId: string, reply: FastifyReply): Promise<void>;
|
|
33
42
|
updateUserAvatar(request: any, userId: string, body: UserPatchAvatarDTO, reply: FastifyReply): Promise<void>;
|
|
@@ -40,6 +49,15 @@ export declare class UserController {
|
|
|
40
49
|
sendInvitationEmail(request: any, userId: string): Promise<void>;
|
|
41
50
|
delete(request: any, userId: string): Promise<void>;
|
|
42
51
|
findUserByRole(req: any, query: any, roleId: string, notInRole?: boolean, search?: string): Promise<import("../../..").JsonApiListDocument>;
|
|
52
|
+
/**
|
|
53
|
+
* Role grants are never self-service.
|
|
54
|
+
* - Administrator is a PLATFORM grant: only a platform administrator may
|
|
55
|
+
* give or take it.
|
|
56
|
+
* - Any other role: Administrator or CompanyAdministrator. A
|
|
57
|
+
* CompanyAdministrator acts inside their CLS company only; the repository
|
|
58
|
+
* matches the target user through BELONGS_TO that company.
|
|
59
|
+
*/
|
|
60
|
+
private assertCanManageRole;
|
|
43
61
|
addUserToRole(req: any, roleId: string, userId: string, reply: FastifyReply): Promise<void>;
|
|
44
62
|
removeUserToRole(req: any, roleId: string, userId: string): Promise<void>;
|
|
45
63
|
findContentsRelevantForContent(query: any, contentId: string): Promise<import("../../..").JsonApiListDocument>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.controller.d.ts","sourceRoot":"","sources":["../../../../src/foundations/user/controllers/user.controller.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4DAA4D,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAG1E,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAE9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,qBAEa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;gBANb,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB,CAAC,IAAI,CAAC,EACxC,aAAa,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"user.controller.d.ts","sourceRoot":"","sources":["../../../../src/foundations/user/controllers/user.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,17 @@ let UserController = class UserController {
|
|
|
45
45
|
this.relevancyService = relevancyService;
|
|
46
46
|
this.cypherService = cypherService;
|
|
47
47
|
}
|
|
48
|
+
/** Platform administrator: the global Administrator role. */
|
|
49
|
+
isPlatformAdmin(user) {
|
|
50
|
+
return this.security.isUserInRoles({ user: user, roles: [system_roles_1.RoleId.Administrator] });
|
|
51
|
+
}
|
|
52
|
+
/** Administrator OR CompanyAdministrator. */
|
|
53
|
+
isAnyAdmin(user) {
|
|
54
|
+
return this.security.isUserInRoles({
|
|
55
|
+
user: user,
|
|
56
|
+
roles: [system_roles_1.RoleId.Administrator, system_roles_1.RoleId.CompanyAdministrator],
|
|
57
|
+
});
|
|
58
|
+
}
|
|
48
59
|
async findBySearch(request, reply, query, search, includeDeleted, contentIds) {
|
|
49
60
|
const isAdmin = this.security.isUserInRoles({
|
|
50
61
|
user: request.user,
|
|
@@ -80,10 +91,24 @@ let UserController = class UserController {
|
|
|
80
91
|
});
|
|
81
92
|
reply.send(response);
|
|
82
93
|
}
|
|
83
|
-
|
|
84
|
-
|
|
94
|
+
/**
|
|
95
|
+
* Admin lookup (the user editor's duplicate-email check). Bound to the
|
|
96
|
+
* caller's company: a user of another company answers 404, like a missing
|
|
97
|
+
* one. Only a platform administrator looks up across companies.
|
|
98
|
+
*/
|
|
99
|
+
async findOneByEmail(request, email) {
|
|
100
|
+
if (this.isPlatformAdmin(request.user))
|
|
101
|
+
return this.users.findByEmailInCompany({ email: email });
|
|
102
|
+
const companyId = request.user?.companyId;
|
|
103
|
+
if (!companyId)
|
|
104
|
+
throw new common_1.ForbiddenException("No company in context");
|
|
105
|
+
return this.users.findByEmailInCompany({ email: email, companyId: companyId });
|
|
85
106
|
}
|
|
86
107
|
async findByCompany(request, reply, companyId, query, search, includeDeleted, isDeleted) {
|
|
108
|
+
// The URL company replaces the CLS company below, so only the caller's own
|
|
109
|
+
// company (or a platform administrator) may be listed.
|
|
110
|
+
if (request.user?.companyId !== companyId && !this.isPlatformAdmin(request.user))
|
|
111
|
+
throw new common_1.ForbiddenException("You cannot list the users of another company");
|
|
87
112
|
this.clsService.set("companyId", companyId);
|
|
88
113
|
const response = await this.users.findManyByCompany({
|
|
89
114
|
query: query,
|
|
@@ -95,16 +120,17 @@ let UserController = class UserController {
|
|
|
95
120
|
reply.send(response);
|
|
96
121
|
}
|
|
97
122
|
async createUser(request, body, reply, lng) {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
catch {
|
|
102
|
-
return this.users.findByEmail({ email: body.data.attributes.email });
|
|
103
|
-
}
|
|
123
|
+
// 409 when the email is taken. It used to answer with that user's full
|
|
124
|
+
// record, whatever company they belonged to.
|
|
125
|
+
await this.users.expectNotExists({ email: body.data.attributes.email });
|
|
104
126
|
let forceCompanyAdmin = false;
|
|
105
127
|
if (!body.included?.length) {
|
|
106
128
|
if (!body.data.relationships?.company?.data?.id)
|
|
107
129
|
throw new common_1.HttpException("A new user needs a company relationship or an included company", common_1.HttpStatus.BAD_REQUEST);
|
|
130
|
+
// A CompanyAdministrator creates users in their own company only: any
|
|
131
|
+
// other id would let them mint an account (with roles) in another tenant.
|
|
132
|
+
if (body.data.relationships.company.data.id !== request.user?.companyId && !this.isPlatformAdmin(request.user))
|
|
133
|
+
throw new common_1.ForbiddenException("You cannot create users in another company");
|
|
108
134
|
await this.companyService.validate({
|
|
109
135
|
companyId: body.data.relationships.company.data.id,
|
|
110
136
|
});
|
|
@@ -123,26 +149,31 @@ let UserController = class UserController {
|
|
|
123
149
|
reply.send(response);
|
|
124
150
|
}
|
|
125
151
|
async put(request, userId, body, reply) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
});
|
|
152
|
+
const isCurrentUser = request.user.userId === userId;
|
|
153
|
+
const isAdmin = this.isAnyAdmin(request.user);
|
|
154
|
+
if (!isCurrentUser && !isAdmin)
|
|
155
|
+
throw new common_1.ForbiddenException("You are not allowed to edit this user");
|
|
156
|
+
// Not self: the repository only reaches a user BELONGING_TO the CLS company.
|
|
132
157
|
const response = await this.users.putUser({
|
|
133
158
|
data: body.data,
|
|
134
159
|
isAdmin: isAdmin,
|
|
135
|
-
isCurrentUser:
|
|
160
|
+
isCurrentUser: isCurrentUser,
|
|
136
161
|
});
|
|
137
162
|
reply.send(response);
|
|
138
163
|
}
|
|
139
164
|
async reactivateUser(request, userId, reply) {
|
|
140
165
|
this.security.validateAdmin({ user: request.user });
|
|
141
|
-
const response = await this.users.reactivate({
|
|
166
|
+
const response = await this.users.reactivate({
|
|
167
|
+
userId: userId,
|
|
168
|
+
isPlatformAdmin: this.isPlatformAdmin(request.user),
|
|
169
|
+
});
|
|
142
170
|
reply.send(response);
|
|
143
171
|
}
|
|
144
172
|
async updateUserAvatar(request, userId, body, reply) {
|
|
145
|
-
const
|
|
173
|
+
const isSelf = request.user?.userId === userId;
|
|
174
|
+
if (!isSelf && !this.isAnyAdmin(request.user))
|
|
175
|
+
throw new common_1.ForbiddenException("You are not allowed to edit this user");
|
|
176
|
+
const response = await this.users.patchAvatar({ data: body.data, isSelf: isSelf });
|
|
146
177
|
reply.send(response);
|
|
147
178
|
}
|
|
148
179
|
/**
|
|
@@ -159,7 +190,10 @@ let UserController = class UserController {
|
|
|
159
190
|
reply.send(response);
|
|
160
191
|
}
|
|
161
192
|
async updateUserRates(request, userId, body, reply) {
|
|
162
|
-
const response = await this.users.patchRate({
|
|
193
|
+
const response = await this.users.patchRate({
|
|
194
|
+
data: body.data,
|
|
195
|
+
isPlatformAdmin: this.isPlatformAdmin(request.user),
|
|
196
|
+
});
|
|
163
197
|
reply.send(response);
|
|
164
198
|
}
|
|
165
199
|
async sendInvitationEmail(request, userId) {
|
|
@@ -167,8 +201,12 @@ let UserController = class UserController {
|
|
|
167
201
|
await this.users.sendInvitationEmail({ userId: userId });
|
|
168
202
|
}
|
|
169
203
|
async delete(request, userId) {
|
|
204
|
+
if (!this.isAnyAdmin(request.user))
|
|
205
|
+
throw new common_1.ForbiddenException("You are not allowed to delete this user");
|
|
206
|
+
// Non-platform callers only reach users BELONGING_TO their CLS company.
|
|
170
207
|
await this.users.deleteUser({
|
|
171
208
|
userId: userId,
|
|
209
|
+
isPlatformAdmin: this.isPlatformAdmin(request.user),
|
|
172
210
|
});
|
|
173
211
|
}
|
|
174
212
|
async findUserByRole(req, query, roleId, notInRole, search) {
|
|
@@ -190,33 +228,42 @@ let UserController = class UserController {
|
|
|
190
228
|
isAdmin: isAdmin,
|
|
191
229
|
});
|
|
192
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Role grants are never self-service.
|
|
233
|
+
* - Administrator is a PLATFORM grant: only a platform administrator may
|
|
234
|
+
* give or take it.
|
|
235
|
+
* - Any other role: Administrator or CompanyAdministrator. A
|
|
236
|
+
* CompanyAdministrator acts inside their CLS company only; the repository
|
|
237
|
+
* matches the target user through BELONGS_TO that company.
|
|
238
|
+
*/
|
|
239
|
+
assertCanManageRole(req, roleId) {
|
|
240
|
+
if (roleId === system_roles_1.RoleId.Administrator) {
|
|
241
|
+
if (!this.isPlatformAdmin(req.user))
|
|
242
|
+
throw new common_1.ForbiddenException("Only a platform administrator can manage the Administrator role");
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
if (!this.isAnyAdmin(req.user))
|
|
246
|
+
throw new common_1.ForbiddenException("You are not allowed to manage roles");
|
|
247
|
+
if (!this.isPlatformAdmin(req.user) && !this.clsService.get("companyId"))
|
|
248
|
+
throw new common_1.ForbiddenException("You are not allowed to manage roles");
|
|
249
|
+
}
|
|
193
250
|
async addUserToRole(req, roleId, userId, reply) {
|
|
194
|
-
|
|
195
|
-
user: req.user,
|
|
196
|
-
roles: [system_roles_1.RoleId.Administrator, system_roles_1.RoleId.CompanyAdministrator],
|
|
197
|
-
});
|
|
198
|
-
if (!isAdmin && req.user.userId !== userId)
|
|
199
|
-
throw new common_1.HttpException("You are not allowed to edit this user", common_1.HttpStatus.FORBIDDEN);
|
|
251
|
+
this.assertCanManageRole(req, roleId);
|
|
200
252
|
const response = await this.users.addUserToRole({
|
|
201
253
|
userId: userId,
|
|
202
254
|
roleId: roleId,
|
|
203
|
-
returnsFull:
|
|
255
|
+
returnsFull: true,
|
|
204
256
|
});
|
|
205
257
|
reply.send(response);
|
|
206
258
|
await this.cacheService.invalidateByElement(user_meta_1.userMeta.endpoint, userId);
|
|
207
259
|
await this.cacheService.invalidateByElement(role_meta_1.roleMeta.endpoint, roleId);
|
|
208
260
|
}
|
|
209
261
|
async removeUserToRole(req, roleId, userId) {
|
|
210
|
-
|
|
211
|
-
user: req.user,
|
|
212
|
-
roles: [system_roles_1.RoleId.Administrator, system_roles_1.RoleId.CompanyAdministrator],
|
|
213
|
-
});
|
|
214
|
-
if (!isAdmin && req.user.userId !== userId)
|
|
215
|
-
throw new common_1.HttpException("You are not allowed to edit this user", common_1.HttpStatus.FORBIDDEN);
|
|
262
|
+
this.assertCanManageRole(req, roleId);
|
|
216
263
|
await this.users.removeUserFromRole({
|
|
217
264
|
roleId: roleId,
|
|
218
265
|
userId: userId,
|
|
219
|
-
returnsFull:
|
|
266
|
+
returnsFull: true,
|
|
220
267
|
});
|
|
221
268
|
await this.cacheService.invalidateByElement(user_meta_1.userMeta.endpoint, userId);
|
|
222
269
|
await this.cacheService.invalidateByElement(role_meta_1.roleMeta.endpoint, roleId);
|
|
@@ -260,9 +307,11 @@ __decorate([
|
|
|
260
307
|
], UserController.prototype, "findFullUser", null);
|
|
261
308
|
__decorate([
|
|
262
309
|
(0, common_1.Get)(`${user_meta_1.userMeta.endpoint}/email/:email`),
|
|
263
|
-
|
|
310
|
+
(0, roles_decorator_1.Roles)(system_roles_1.RoleId.Administrator, system_roles_1.RoleId.CompanyAdministrator),
|
|
311
|
+
__param(0, (0, common_1.Req)()),
|
|
312
|
+
__param(1, (0, common_1.Param)("email")),
|
|
264
313
|
__metadata("design:type", Function),
|
|
265
|
-
__metadata("design:paramtypes", [String]),
|
|
314
|
+
__metadata("design:paramtypes", [Object, String]),
|
|
266
315
|
__metadata("design:returntype", Promise)
|
|
267
316
|
], UserController.prototype, "findOneByEmail", null);
|
|
268
317
|
__decorate([
|
|
@@ -291,7 +340,10 @@ __decorate([
|
|
|
291
340
|
__metadata("design:returntype", Promise)
|
|
292
341
|
], UserController.prototype, "createUser", null);
|
|
293
342
|
__decorate([
|
|
294
|
-
(0, common_1.Put)(`${user_meta_1.userMeta.endpoint}/:userId`)
|
|
343
|
+
(0, common_1.Put)(`${user_meta_1.userMeta.endpoint}/:userId`)
|
|
344
|
+
// The service writes body.data.id: it must be the URL id (412 otherwise).
|
|
345
|
+
,
|
|
346
|
+
(0, validate_id_decorator_1.ValidateId)("userId"),
|
|
295
347
|
(0, cache_invalidate_decorator_1.CacheInvalidate)(user_meta_1.userMeta, "userId"),
|
|
296
348
|
__param(0, (0, common_1.Request)()),
|
|
297
349
|
__param(1, (0, common_1.Param)("userId")),
|
|
@@ -313,6 +365,7 @@ __decorate([
|
|
|
313
365
|
], UserController.prototype, "reactivateUser", null);
|
|
314
366
|
__decorate([
|
|
315
367
|
(0, common_1.Patch)(`${user_meta_1.userMeta.endpoint}/:userId/avatar`),
|
|
368
|
+
(0, validate_id_decorator_1.ValidateId)("userId"),
|
|
316
369
|
(0, cache_invalidate_decorator_1.CacheInvalidate)(user_meta_1.userMeta, "userId"),
|
|
317
370
|
__param(0, (0, common_1.Request)()),
|
|
318
371
|
__param(1, (0, common_1.Param)("userId")),
|
|
@@ -337,6 +390,7 @@ __decorate([
|
|
|
337
390
|
__decorate([
|
|
338
391
|
(0, common_1.Patch)(`${user_meta_1.userMeta.endpoint}/:userId/rates`),
|
|
339
392
|
(0, roles_decorator_1.Roles)(system_roles_1.RoleId.CompanyAdministrator),
|
|
393
|
+
(0, validate_id_decorator_1.ValidateId)("userId"),
|
|
340
394
|
(0, cache_invalidate_decorator_1.CacheInvalidate)(user_meta_1.userMeta, "userId"),
|
|
341
395
|
__param(0, (0, common_1.Request)()),
|
|
342
396
|
__param(1, (0, common_1.Param)("userId")),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.controller.js","sourceRoot":"","sources":["../../../../src/foundations/user/controllers/user.controller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"user.controller.js","sourceRoot":"","sources":["../../../../src/foundations/user/controllers/user.controller.ts"],"names":[],"mappings":"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"}
|