@carlonicora/nestjs-neo4jsonapi 6.5.0 → 6.5.2
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/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/neo4j/abstracts/abstract.repository.d.ts.map +1 -1
- package/dist/core/neo4j/abstracts/abstract.repository.js +16 -4
- package/dist/core/neo4j/abstracts/abstract.repository.js.map +1 -1
- package/dist/core/neo4j/abstracts/abstract.service.d.ts +7 -0
- package/dist/core/neo4j/abstracts/abstract.service.d.ts.map +1 -1
- package/dist/core/neo4j/abstracts/abstract.service.js +27 -4
- package/dist/core/neo4j/abstracts/abstract.service.js.map +1 -1
- package/dist/core/neo4j/helpers/build-order-by.d.ts +12 -0
- package/dist/core/neo4j/helpers/build-order-by.d.ts.map +1 -1
- package/dist/core/neo4j/helpers/build-order-by.js +22 -0
- package/dist/core/neo4j/helpers/build-order-by.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/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.map +1 -1
- package/dist/foundations/auth/services/auth.service.js +15 -9
- package/dist/foundations/auth/services/auth.service.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/rbac/controllers/rbac-dev.controller.d.ts +9 -0
- package/dist/foundations/rbac/controllers/rbac-dev.controller.d.ts.map +1 -1
- package/dist/foundations/rbac/controllers/rbac-dev.controller.js +27 -3
- package/dist/foundations/rbac/controllers/rbac-dev.controller.js.map +1 -1
- package/dist/foundations/rbac/rbac.module.d.ts.map +1 -1
- package/dist/foundations/rbac/rbac.module.js +2 -1
- package/dist/foundations/rbac/rbac.module.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 +104 -38
- 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
|
@@ -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,24 +120,37 @@ 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
|
});
|
|
111
137
|
}
|
|
112
138
|
else {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
139
|
+
// Creating a company (with its credit balances) together with its first
|
|
140
|
+
// administrator is a platform operation. The new user always lands in
|
|
141
|
+
// that new company: before, the relationship could name any existing
|
|
142
|
+
// company and plant a CompanyAdministrator there.
|
|
143
|
+
if (!this.isPlatformAdmin(request.user))
|
|
144
|
+
throw new common_1.ForbiddenException("Only a platform administrator can create a company with a user");
|
|
145
|
+
const includedCompany = body.included[0];
|
|
146
|
+
const relatedCompanyId = body.data.relationships?.company?.data?.id;
|
|
147
|
+
if (relatedCompanyId && relatedCompanyId !== includedCompany.id)
|
|
148
|
+
throw new common_1.HttpException("The user's company must be the included company", common_1.HttpStatus.BAD_REQUEST);
|
|
149
|
+
await this.companyService.createCompanyFromDTO({ data: includedCompany });
|
|
150
|
+
body.data.relationships = {
|
|
151
|
+
...body.data.relationships,
|
|
152
|
+
company: { data: { type: company_meta_1.companyMeta.endpoint, id: includedCompany.id } },
|
|
153
|
+
};
|
|
116
154
|
forceCompanyAdmin = true;
|
|
117
155
|
}
|
|
118
156
|
const response = await this.users.createUser({
|
|
@@ -123,26 +161,31 @@ let UserController = class UserController {
|
|
|
123
161
|
reply.send(response);
|
|
124
162
|
}
|
|
125
163
|
async put(request, userId, body, reply) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
});
|
|
164
|
+
const isCurrentUser = request.user.userId === userId;
|
|
165
|
+
const isAdmin = this.isAnyAdmin(request.user);
|
|
166
|
+
if (!isCurrentUser && !isAdmin)
|
|
167
|
+
throw new common_1.ForbiddenException("You are not allowed to edit this user");
|
|
168
|
+
// Not self: the repository only reaches a user BELONGING_TO the CLS company.
|
|
132
169
|
const response = await this.users.putUser({
|
|
133
170
|
data: body.data,
|
|
134
171
|
isAdmin: isAdmin,
|
|
135
|
-
isCurrentUser:
|
|
172
|
+
isCurrentUser: isCurrentUser,
|
|
136
173
|
});
|
|
137
174
|
reply.send(response);
|
|
138
175
|
}
|
|
139
176
|
async reactivateUser(request, userId, reply) {
|
|
140
177
|
this.security.validateAdmin({ user: request.user });
|
|
141
|
-
const response = await this.users.reactivate({
|
|
178
|
+
const response = await this.users.reactivate({
|
|
179
|
+
userId: userId,
|
|
180
|
+
isPlatformAdmin: this.isPlatformAdmin(request.user),
|
|
181
|
+
});
|
|
142
182
|
reply.send(response);
|
|
143
183
|
}
|
|
144
184
|
async updateUserAvatar(request, userId, body, reply) {
|
|
145
|
-
const
|
|
185
|
+
const isSelf = request.user?.userId === userId;
|
|
186
|
+
if (!isSelf && !this.isAnyAdmin(request.user))
|
|
187
|
+
throw new common_1.ForbiddenException("You are not allowed to edit this user");
|
|
188
|
+
const response = await this.users.patchAvatar({ data: body.data, isSelf: isSelf });
|
|
146
189
|
reply.send(response);
|
|
147
190
|
}
|
|
148
191
|
/**
|
|
@@ -159,7 +202,10 @@ let UserController = class UserController {
|
|
|
159
202
|
reply.send(response);
|
|
160
203
|
}
|
|
161
204
|
async updateUserRates(request, userId, body, reply) {
|
|
162
|
-
const response = await this.users.patchRate({
|
|
205
|
+
const response = await this.users.patchRate({
|
|
206
|
+
data: body.data,
|
|
207
|
+
isPlatformAdmin: this.isPlatformAdmin(request.user),
|
|
208
|
+
});
|
|
163
209
|
reply.send(response);
|
|
164
210
|
}
|
|
165
211
|
async sendInvitationEmail(request, userId) {
|
|
@@ -167,8 +213,12 @@ let UserController = class UserController {
|
|
|
167
213
|
await this.users.sendInvitationEmail({ userId: userId });
|
|
168
214
|
}
|
|
169
215
|
async delete(request, userId) {
|
|
216
|
+
if (!this.isAnyAdmin(request.user))
|
|
217
|
+
throw new common_1.ForbiddenException("You are not allowed to delete this user");
|
|
218
|
+
// Non-platform callers only reach users BELONGING_TO their CLS company.
|
|
170
219
|
await this.users.deleteUser({
|
|
171
220
|
userId: userId,
|
|
221
|
+
isPlatformAdmin: this.isPlatformAdmin(request.user),
|
|
172
222
|
});
|
|
173
223
|
}
|
|
174
224
|
async findUserByRole(req, query, roleId, notInRole, search) {
|
|
@@ -190,33 +240,42 @@ let UserController = class UserController {
|
|
|
190
240
|
isAdmin: isAdmin,
|
|
191
241
|
});
|
|
192
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Role grants are never self-service.
|
|
245
|
+
* - Administrator is a PLATFORM grant: only a platform administrator may
|
|
246
|
+
* give or take it.
|
|
247
|
+
* - Any other role: Administrator or CompanyAdministrator. A
|
|
248
|
+
* CompanyAdministrator acts inside their CLS company only; the repository
|
|
249
|
+
* matches the target user through BELONGS_TO that company.
|
|
250
|
+
*/
|
|
251
|
+
assertCanManageRole(req, roleId) {
|
|
252
|
+
if (roleId === system_roles_1.RoleId.Administrator) {
|
|
253
|
+
if (!this.isPlatformAdmin(req.user))
|
|
254
|
+
throw new common_1.ForbiddenException("Only a platform administrator can manage the Administrator role");
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
if (!this.isAnyAdmin(req.user))
|
|
258
|
+
throw new common_1.ForbiddenException("You are not allowed to manage roles");
|
|
259
|
+
if (!this.isPlatformAdmin(req.user) && !this.clsService.get("companyId"))
|
|
260
|
+
throw new common_1.ForbiddenException("You are not allowed to manage roles");
|
|
261
|
+
}
|
|
193
262
|
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);
|
|
263
|
+
this.assertCanManageRole(req, roleId);
|
|
200
264
|
const response = await this.users.addUserToRole({
|
|
201
265
|
userId: userId,
|
|
202
266
|
roleId: roleId,
|
|
203
|
-
returnsFull:
|
|
267
|
+
returnsFull: true,
|
|
204
268
|
});
|
|
205
269
|
reply.send(response);
|
|
206
270
|
await this.cacheService.invalidateByElement(user_meta_1.userMeta.endpoint, userId);
|
|
207
271
|
await this.cacheService.invalidateByElement(role_meta_1.roleMeta.endpoint, roleId);
|
|
208
272
|
}
|
|
209
273
|
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);
|
|
274
|
+
this.assertCanManageRole(req, roleId);
|
|
216
275
|
await this.users.removeUserFromRole({
|
|
217
276
|
roleId: roleId,
|
|
218
277
|
userId: userId,
|
|
219
|
-
returnsFull:
|
|
278
|
+
returnsFull: true,
|
|
220
279
|
});
|
|
221
280
|
await this.cacheService.invalidateByElement(user_meta_1.userMeta.endpoint, userId);
|
|
222
281
|
await this.cacheService.invalidateByElement(role_meta_1.roleMeta.endpoint, roleId);
|
|
@@ -260,9 +319,11 @@ __decorate([
|
|
|
260
319
|
], UserController.prototype, "findFullUser", null);
|
|
261
320
|
__decorate([
|
|
262
321
|
(0, common_1.Get)(`${user_meta_1.userMeta.endpoint}/email/:email`),
|
|
263
|
-
|
|
322
|
+
(0, roles_decorator_1.Roles)(system_roles_1.RoleId.Administrator, system_roles_1.RoleId.CompanyAdministrator),
|
|
323
|
+
__param(0, (0, common_1.Req)()),
|
|
324
|
+
__param(1, (0, common_1.Param)("email")),
|
|
264
325
|
__metadata("design:type", Function),
|
|
265
|
-
__metadata("design:paramtypes", [String]),
|
|
326
|
+
__metadata("design:paramtypes", [Object, String]),
|
|
266
327
|
__metadata("design:returntype", Promise)
|
|
267
328
|
], UserController.prototype, "findOneByEmail", null);
|
|
268
329
|
__decorate([
|
|
@@ -291,7 +352,10 @@ __decorate([
|
|
|
291
352
|
__metadata("design:returntype", Promise)
|
|
292
353
|
], UserController.prototype, "createUser", null);
|
|
293
354
|
__decorate([
|
|
294
|
-
(0, common_1.Put)(`${user_meta_1.userMeta.endpoint}/:userId`)
|
|
355
|
+
(0, common_1.Put)(`${user_meta_1.userMeta.endpoint}/:userId`)
|
|
356
|
+
// The service writes body.data.id: it must be the URL id (412 otherwise).
|
|
357
|
+
,
|
|
358
|
+
(0, validate_id_decorator_1.ValidateId)("userId"),
|
|
295
359
|
(0, cache_invalidate_decorator_1.CacheInvalidate)(user_meta_1.userMeta, "userId"),
|
|
296
360
|
__param(0, (0, common_1.Request)()),
|
|
297
361
|
__param(1, (0, common_1.Param)("userId")),
|
|
@@ -313,6 +377,7 @@ __decorate([
|
|
|
313
377
|
], UserController.prototype, "reactivateUser", null);
|
|
314
378
|
__decorate([
|
|
315
379
|
(0, common_1.Patch)(`${user_meta_1.userMeta.endpoint}/:userId/avatar`),
|
|
380
|
+
(0, validate_id_decorator_1.ValidateId)("userId"),
|
|
316
381
|
(0, cache_invalidate_decorator_1.CacheInvalidate)(user_meta_1.userMeta, "userId"),
|
|
317
382
|
__param(0, (0, common_1.Request)()),
|
|
318
383
|
__param(1, (0, common_1.Param)("userId")),
|
|
@@ -337,6 +402,7 @@ __decorate([
|
|
|
337
402
|
__decorate([
|
|
338
403
|
(0, common_1.Patch)(`${user_meta_1.userMeta.endpoint}/:userId/rates`),
|
|
339
404
|
(0, roles_decorator_1.Roles)(system_roles_1.RoleId.CompanyAdministrator),
|
|
405
|
+
(0, validate_id_decorator_1.ValidateId)("userId"),
|
|
340
406
|
(0, cache_invalidate_decorator_1.CacheInvalidate)(user_meta_1.userMeta, "userId"),
|
|
341
407
|
__param(0, (0, common_1.Request)()),
|
|
342
408
|
__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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"}
|
|
@@ -47,6 +47,17 @@ export declare class UserRepository extends AbstractRepository<User, typeof User
|
|
|
47
47
|
};
|
|
48
48
|
}>;
|
|
49
49
|
constructor(neo4j: Neo4jService, securityService: SecurityService, clsService: ClsService, userCypherService: UserCypherService);
|
|
50
|
+
/**
|
|
51
|
+
* Binds `user` to `$userId` ONLY when that user belongs to the request
|
|
52
|
+
* company (`$companyId`, from CLS). With no company in context
|
|
53
|
+
* `$companyId` is null and the fragment matches nothing, so a by-id write
|
|
54
|
+
* can never reach a user of another tenant.
|
|
55
|
+
*
|
|
56
|
+
* Used with `query.query =` (assigned, not appended): the initQuery
|
|
57
|
+
* preamble also requires the CALLER to belong to the company, which a
|
|
58
|
+
* platform administrator acting through the x-companyid header does not.
|
|
59
|
+
*/
|
|
60
|
+
protected companyScopedUserMatch(): string;
|
|
50
61
|
/**
|
|
51
62
|
* `AbstractRepository.onModuleInit` creates the constraints and indexes
|
|
52
63
|
* declared by the descriptor. `defineEntity` only ever emits the `id` UNIQUE
|
|
@@ -159,12 +170,22 @@ export declare class UserRepository extends AbstractRepository<User, typeof User
|
|
|
159
170
|
userId: string;
|
|
160
171
|
source: SignupSource;
|
|
161
172
|
}): Promise<void>;
|
|
173
|
+
/**
|
|
174
|
+
* `isPlatformAdmin` reaches any user by id; otherwise only a user belonging
|
|
175
|
+
* to the request company is reactivated (see `companyScopedUserMatch`).
|
|
176
|
+
*/
|
|
162
177
|
reactivate(params: {
|
|
163
178
|
userId: string;
|
|
179
|
+
isPlatformAdmin?: boolean;
|
|
164
180
|
}): Promise<void>;
|
|
181
|
+
/**
|
|
182
|
+
* `isPlatformAdmin` reaches any user by id; otherwise only a user belonging
|
|
183
|
+
* to the request company is updated (see `companyScopedUserMatch`).
|
|
184
|
+
*/
|
|
165
185
|
patchRate(params: {
|
|
166
186
|
userId: string;
|
|
167
187
|
rate: number;
|
|
188
|
+
isPlatformAdmin?: boolean;
|
|
168
189
|
}): Promise<void>;
|
|
169
190
|
patchLanguage(params: {
|
|
170
191
|
userId: string;
|
|
@@ -179,12 +200,26 @@ export declare class UserRepository extends AbstractRepository<User, typeof User
|
|
|
179
200
|
userId?: string;
|
|
180
201
|
email?: string;
|
|
181
202
|
}): Promise<User | undefined>;
|
|
203
|
+
/**
|
|
204
|
+
* `isSelf` (the controller has checked the caller IS `userId`) matches the
|
|
205
|
+
* user by id, so a platform administrator without a company can still set
|
|
206
|
+
* their own avatar. Anyone else's avatar is reachable only inside the
|
|
207
|
+
* request company (see `companyScopedUserMatch`).
|
|
208
|
+
*/
|
|
182
209
|
patchAvatar(params: {
|
|
183
210
|
userId: string;
|
|
184
211
|
avatar: string;
|
|
212
|
+
isSelf?: boolean;
|
|
185
213
|
}): Promise<void>;
|
|
214
|
+
/**
|
|
215
|
+
* Soft-deletes a user. `isPlatformAdmin` reaches any user by id; otherwise
|
|
216
|
+
* only a user belonging to the request company (`$companyId`) is deleted.
|
|
217
|
+
* The previous unbound `MATCH (company:Company)` matched every company, so
|
|
218
|
+
* any caller could soft-delete any user on the platform.
|
|
219
|
+
*/
|
|
186
220
|
deleteUser(params: {
|
|
187
221
|
userId: string;
|
|
222
|
+
isPlatformAdmin?: boolean;
|
|
188
223
|
}): Promise<void>;
|
|
189
224
|
addUserToRole(params: {
|
|
190
225
|
userId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.repository.d.ts","sourceRoot":"","sources":["../../../../src/foundations/user/repositories/user.repository.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"user.repository.d.ts","sourceRoot":"","sources":["../../../../src/foundations/user/repositories/user.repository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2DAA2D,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AAYnF,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,OAAO,EAAwB,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAExF;;;;;;;;;;;;;;GAcG;AACH,qBACa,cAAe,SAAQ,kBAAkB,CAAC,IAAI,EAAE,OAAO,cAAc,CAAC,aAAa,CAAC;IAO7F,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB;IANzD,SAAS,CAAC,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;OAAkB;gBAG7C,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,UAAU,EACH,iBAAiB,EAAE,iBAAiB;IAKzD;;;;;;;;;OASG;IACH,SAAS,CAAC,sBAAsB,IAAI,MAAM;IAO1C;;;;;;;OAOG;IACG,YAAY;IAQZ,gBAAgB,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAmB9D,eAAe,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBhE;;;;OAIG;IACG,qBAAqB,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BhE,YAAY,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsDvD,YAAY,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B3E,WAAW,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC/E,UAAU,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBnD,QAAQ,CAAC,MAAM,EAAE;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,MAAM,CAAC,EAAE,sBAAsB,CAAC;KACjC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAgDb,oBAAoB,CAAC,MAAM,EAAE;QACjC,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAuBb,iBAAiB,CAAC,MAAM,EAAE;QAC9B,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,MAAM,CAAC,EAAE,sBAAsB,CAAC;KACjC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAoBb,UAAU,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,sBAAsB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IA0BtG,aAAa,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,sBAAsB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IA+BzG,UAAU,CAAC,MAAM,EAAE;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,GAAG,OAAO,CAAC,IAAI,CAAC;IAyDX,SAAS,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBpD,OAAO,CAAC,MAAM,EAAE;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,iFAAiF;QACjF,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkFX,YAAY,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9E;;;OAGG;IACG,eAAe,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBtF;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtF;;;OAGG;IACG,SAAS,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB7F,aAAa,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBhF;;;;OAIG;IACG,eAAe,CAAC,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAuB7F;;;;;OAKG;IACG,WAAW,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9F;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBhF,aAAa,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BxE,kBAAkB,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBnF;;;OAGG;IACG,0BAA0B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAiBnD;;;OAGG;IACG,mCAAmC,CAAC,MAAM,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IA0BhG;;;OAGG;IACG,qBAAqB,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;CAmB5E"}
|
|
@@ -49,6 +49,22 @@ let UserRepository = class UserRepository extends abstract_repository_1.Abstract
|
|
|
49
49
|
this.userCypherService = userCypherService;
|
|
50
50
|
this.descriptor = user_1.UserDescriptor;
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Binds `user` to `$userId` ONLY when that user belongs to the request
|
|
54
|
+
* company (`$companyId`, from CLS). With no company in context
|
|
55
|
+
* `$companyId` is null and the fragment matches nothing, so a by-id write
|
|
56
|
+
* can never reach a user of another tenant.
|
|
57
|
+
*
|
|
58
|
+
* Used with `query.query =` (assigned, not appended): the initQuery
|
|
59
|
+
* preamble also requires the CALLER to belong to the company, which a
|
|
60
|
+
* platform administrator acting through the x-companyid header does not.
|
|
61
|
+
*/
|
|
62
|
+
companyScopedUserMatch() {
|
|
63
|
+
return `
|
|
64
|
+
MATCH (company:Company {id: $companyId})
|
|
65
|
+
MATCH (user:User {id: $userId})-[:BELONGS_TO]->(company)
|
|
66
|
+
`;
|
|
67
|
+
}
|
|
52
68
|
/**
|
|
53
69
|
* `AbstractRepository.onModuleInit` creates the constraints and indexes
|
|
54
70
|
* declared by the descriptor. `defineEntity` only ever emits the `id` UNIQUE
|
|
@@ -483,10 +499,19 @@ let UserRepository = class UserRepository extends abstract_repository_1.Abstract
|
|
|
483
499
|
// anyone else's user this match is what confines a CompanyAdministrator to
|
|
484
500
|
// their own company. Roles are company-scoped, so the role block below stays
|
|
485
501
|
// gated on the company being matched.
|
|
502
|
+
//
|
|
503
|
+
// When the caller edits SOMEONE ELSE the user must also BELONG_TO that
|
|
504
|
+
// company: matching the company alone left `user` unbound to it, so a
|
|
505
|
+
// CompanyAdministrator could rewrite the email/password of any user on the
|
|
506
|
+
// platform by id.
|
|
486
507
|
const scopeToCompany = !!query.queryParams.companyId || !params.isSelf;
|
|
487
508
|
query.query = `
|
|
488
|
-
${
|
|
489
|
-
|
|
509
|
+
${!params.isSelf
|
|
510
|
+
? this.companyScopedUserMatch()
|
|
511
|
+
: `
|
|
512
|
+
${scopeToCompany ? `MATCH (company:Company {id: $companyId})` : ``}
|
|
513
|
+
MATCH (user:User {id: $userId})
|
|
514
|
+
`}
|
|
490
515
|
SET ${setClauses.join(", ")}
|
|
491
516
|
|
|
492
517
|
${scopeToCompany && params.isAdmin && params.roles !== undefined
|
|
@@ -541,18 +566,26 @@ let UserRepository = class UserRepository extends abstract_repository_1.Abstract
|
|
|
541
566
|
`;
|
|
542
567
|
await this.neo4j.writeOne(query);
|
|
543
568
|
}
|
|
569
|
+
/**
|
|
570
|
+
* `isPlatformAdmin` reaches any user by id; otherwise only a user belonging
|
|
571
|
+
* to the request company is reactivated (see `companyScopedUserMatch`).
|
|
572
|
+
*/
|
|
544
573
|
async reactivate(params) {
|
|
545
574
|
const query = this.neo4j.initQuery();
|
|
546
575
|
query.queryParams = {
|
|
547
576
|
...query.queryParams,
|
|
548
577
|
userId: params.userId,
|
|
549
578
|
};
|
|
550
|
-
query.query
|
|
551
|
-
MATCH (user:User {id: $userId})
|
|
579
|
+
query.query = `
|
|
580
|
+
${params.isPlatformAdmin ? `MATCH (user:User {id: $userId})` : this.companyScopedUserMatch()}
|
|
552
581
|
SET user.isDeleted = false
|
|
553
582
|
`;
|
|
554
583
|
await this.neo4j.writeOne(query);
|
|
555
584
|
}
|
|
585
|
+
/**
|
|
586
|
+
* `isPlatformAdmin` reaches any user by id; otherwise only a user belonging
|
|
587
|
+
* to the request company is updated (see `companyScopedUserMatch`).
|
|
588
|
+
*/
|
|
556
589
|
async patchRate(params) {
|
|
557
590
|
const query = this.neo4j.initQuery();
|
|
558
591
|
query.queryParams = {
|
|
@@ -560,8 +593,8 @@ let UserRepository = class UserRepository extends abstract_repository_1.Abstract
|
|
|
560
593
|
userId: params.userId,
|
|
561
594
|
rate: params.rate,
|
|
562
595
|
};
|
|
563
|
-
query.query
|
|
564
|
-
MATCH (user:User {id: $userId})
|
|
596
|
+
query.query = `
|
|
597
|
+
${params.isPlatformAdmin ? `MATCH (user:User {id: $userId})` : this.companyScopedUserMatch()}
|
|
565
598
|
SET user.rate = $rate,
|
|
566
599
|
user.updatedAt = datetime()
|
|
567
600
|
`;
|
|
@@ -608,6 +641,12 @@ let UserRepository = class UserRepository extends abstract_repository_1.Abstract
|
|
|
608
641
|
`;
|
|
609
642
|
return (await this.neo4j.readOne(query)) ?? undefined;
|
|
610
643
|
}
|
|
644
|
+
/**
|
|
645
|
+
* `isSelf` (the controller has checked the caller IS `userId`) matches the
|
|
646
|
+
* user by id, so a platform administrator without a company can still set
|
|
647
|
+
* their own avatar. Anyone else's avatar is reachable only inside the
|
|
648
|
+
* request company (see `companyScopedUserMatch`).
|
|
649
|
+
*/
|
|
611
650
|
async patchAvatar(params) {
|
|
612
651
|
const query = this.neo4j.initQuery();
|
|
613
652
|
query.queryParams = {
|
|
@@ -615,13 +654,19 @@ let UserRepository = class UserRepository extends abstract_repository_1.Abstract
|
|
|
615
654
|
userId: params.userId,
|
|
616
655
|
avatar: params.avatar,
|
|
617
656
|
};
|
|
618
|
-
query.query
|
|
619
|
-
MATCH (user:User {id: $userId})
|
|
657
|
+
query.query = `
|
|
658
|
+
${params.isSelf ? `MATCH (user:User {id: $userId})` : this.companyScopedUserMatch()}
|
|
620
659
|
SET user.avatar = $avatar,
|
|
621
660
|
user.updatedAt = datetime()
|
|
622
661
|
`;
|
|
623
662
|
await this.neo4j.writeOne(query);
|
|
624
663
|
}
|
|
664
|
+
/**
|
|
665
|
+
* Soft-deletes a user. `isPlatformAdmin` reaches any user by id; otherwise
|
|
666
|
+
* only a user belonging to the request company (`$companyId`) is deleted.
|
|
667
|
+
* The previous unbound `MATCH (company:Company)` matched every company, so
|
|
668
|
+
* any caller could soft-delete any user on the platform.
|
|
669
|
+
*/
|
|
625
670
|
async deleteUser(params) {
|
|
626
671
|
const query = this.neo4j.initQuery();
|
|
627
672
|
query.queryParams = {
|
|
@@ -629,10 +674,9 @@ let UserRepository = class UserRepository extends abstract_repository_1.Abstract
|
|
|
629
674
|
userId: params.userId,
|
|
630
675
|
};
|
|
631
676
|
query.query = `
|
|
632
|
-
MATCH (
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
`;
|
|
677
|
+
${params.isPlatformAdmin ? `MATCH (user:User {id: $userId})` : this.companyScopedUserMatch()}
|
|
678
|
+
SET user.isDeleted = true
|
|
679
|
+
`;
|
|
636
680
|
await this.neo4j.writeOne(query);
|
|
637
681
|
}
|
|
638
682
|
async addUserToRole(params) {
|
|
@@ -668,9 +712,12 @@ let UserRepository = class UserRepository extends abstract_repository_1.Abstract
|
|
|
668
712
|
userId: params.userId,
|
|
669
713
|
administratorRoleId: system_roles_1.RoleId.Administrator,
|
|
670
714
|
};
|
|
715
|
+
// A company role is removed only from a user who BELONGS_TO the request
|
|
716
|
+
// company, mirroring the grant in addUserToRole. Administrator lives on the
|
|
717
|
+
// platform membership (no IN_COMPANY) and needs no company.
|
|
671
718
|
query.query += `
|
|
672
719
|
MATCH (user:User {id: $userId})-[:HAS_MEMBERSHIP]->(rm_ms:Membership)
|
|
673
|
-
WHERE (rm_ms)-[:IN_COMPANY]->(:Company {id: $companyId})
|
|
720
|
+
WHERE ((user)-[:BELONGS_TO]->(:Company {id: $companyId}) AND (rm_ms)-[:IN_COMPANY]->(:Company {id: $companyId}))
|
|
674
721
|
OR ($roleId = $administratorRoleId AND NOT (rm_ms)-[:IN_COMPANY]->(:Company))
|
|
675
722
|
MATCH (rm_ms)-[rel:HAS_ROLE]->(:Role {id: $roleId})
|
|
676
723
|
DELETE rel
|