tabletcommand-backend-models 7.4.67 → 7.4.68
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/build/models/user.js +14 -0
- package/build/models/user.js.map +1 -1
- package/build/test/user.js +16 -0
- package/build/test/user.js.map +1 -1
- package/definitions/models/user.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/models/user.ts +16 -1
- package/src/test/user.ts +24 -4
package/build/models/user.js
CHANGED
|
@@ -314,6 +314,20 @@ function UserSchema(mongoose) {
|
|
|
314
314
|
}, {
|
|
315
315
|
name: "token_1_tokenExpireAt_1",
|
|
316
316
|
});
|
|
317
|
+
// IMPORTANT: This hook prepends a $match to EVERY User.aggregate() call.
|
|
318
|
+
// Users with invalid agencyId (null, "", "null", "undefined") are always excluded.
|
|
319
|
+
// If you need to query broken users for admin/audit purposes, use the collection directly:
|
|
320
|
+
// models.User.collection.aggregate([...])
|
|
321
|
+
modelSchema.pre("aggregate", function () {
|
|
322
|
+
this.pipeline().unshift({
|
|
323
|
+
$match: {
|
|
324
|
+
agencyId: {
|
|
325
|
+
$exists: true,
|
|
326
|
+
$nin: [null, "", "null", "undefined"]
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
});
|
|
317
331
|
return modelSchema;
|
|
318
332
|
}
|
|
319
333
|
async function UserModule(mongoose) {
|
package/build/models/user.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/models/user.ts"],"names":[],"mappings":";;AAcA,
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/models/user.ts"],"names":[],"mappings":"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"}
|
package/build/test/user.js
CHANGED
|
@@ -48,5 +48,21 @@ describe("User", function () {
|
|
|
48
48
|
chai_1.assert.equal(item.restrictedCommentsEnabled, true);
|
|
49
49
|
chai_1.assert.isTrue(sut.canBlockIncidents);
|
|
50
50
|
});
|
|
51
|
+
it("filters out invalid agencyId in aggregate", async function () {
|
|
52
|
+
const validAgencyId = new mongoose.Types.ObjectId();
|
|
53
|
+
await models.User.collection.insertMany([
|
|
54
|
+
{ email: "valid@test.com", nick: "valid", departmentId: "d_aggregate", agencyId: validAgencyId },
|
|
55
|
+
{ email: "missing@test.com", nick: "missing", departmentId: "d_aggregate" },
|
|
56
|
+
{ email: "null1@test.com", nick: "null1", departmentId: "d_aggregate", agencyId: null },
|
|
57
|
+
{ email: "empty@test.com", nick: "empty", departmentId: "d_aggregate", agencyId: "" },
|
|
58
|
+
{ email: "null2@test.com", nick: "null2", departmentId: "d_aggregate", agencyId: "null" },
|
|
59
|
+
{ email: "undef@test.com", nick: "undef", departmentId: "d_aggregate", agencyId: "undefined" }
|
|
60
|
+
]);
|
|
61
|
+
const results = await models.User.aggregate([
|
|
62
|
+
{ $match: { departmentId: "d_aggregate" } }
|
|
63
|
+
]);
|
|
64
|
+
chai_1.assert.equal(results.length, 1);
|
|
65
|
+
chai_1.assert.equal(results[0].email, "valid@test.com");
|
|
66
|
+
});
|
|
51
67
|
});
|
|
52
68
|
//# sourceMappingURL=user.js.map
|
package/build/test/user.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/test/user.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/test/user.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/models/user.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EAGf,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAqB,MAAM,eAAe,CAAC;AAE5D,MAAM,WAAW,IAAK,SAAQ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAAI;AAEnE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc;;;;;;;;
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/models/user.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EAGf,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAqB,MAAM,eAAe,CAAC;AAE5D,MAAM,WAAW,IAAK,SAAQ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAAI;AAEnE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc;;;;;;;;GA4VlD;AAED,wBAA8B,UAAU,CAAC,QAAQ,EAAE,cAAc;;;;SAGhE;AAED,MAAM,WAAW,SAAU,SAAQ,KAAK,CAAC,IAAI,CAAC;CAAI"}
|
package/package.json
CHANGED
package/src/models/user.ts
CHANGED
|
@@ -277,7 +277,7 @@ export function UserSchema(mongoose: MongooseModule) {
|
|
|
277
277
|
});
|
|
278
278
|
|
|
279
279
|
// NO _id on User schema?
|
|
280
|
-
modelSchema.virtual("id").get(function(this: MongooseDocument) {
|
|
280
|
+
modelSchema.virtual("id").get(function (this: MongooseDocument) {
|
|
281
281
|
return this._id.toHexString();
|
|
282
282
|
});
|
|
283
283
|
|
|
@@ -344,6 +344,21 @@ export function UserSchema(mongoose: MongooseModule) {
|
|
|
344
344
|
name: "token_1_tokenExpireAt_1",
|
|
345
345
|
});
|
|
346
346
|
|
|
347
|
+
// IMPORTANT: This hook prepends a $match to EVERY User.aggregate() call.
|
|
348
|
+
// Users with invalid agencyId (null, "", "null", "undefined") are always excluded.
|
|
349
|
+
// If you need to query broken users for admin/audit purposes, use the collection directly:
|
|
350
|
+
// models.User.collection.aggregate([...])
|
|
351
|
+
modelSchema.pre("aggregate", function (this: any) {
|
|
352
|
+
this.pipeline().unshift({
|
|
353
|
+
$match: {
|
|
354
|
+
agencyId: {
|
|
355
|
+
$exists: true,
|
|
356
|
+
$nin: [null, "", "null", "undefined"]
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
});
|
|
361
|
+
|
|
347
362
|
return modelSchema;
|
|
348
363
|
}
|
|
349
364
|
|
package/src/test/user.ts
CHANGED
|
@@ -3,10 +3,10 @@ import * as m from "../index";
|
|
|
3
3
|
import * as config from "./config";
|
|
4
4
|
import mockModule from "./mock";
|
|
5
5
|
|
|
6
|
-
describe("User", function() {
|
|
6
|
+
describe("User", function () {
|
|
7
7
|
let models: m.BackendModels, mongoose: m.MongooseModule;
|
|
8
8
|
let testItem: Partial<m.User>;
|
|
9
|
-
beforeEach(async function() {
|
|
9
|
+
beforeEach(async function () {
|
|
10
10
|
const c = await m.connect(config.url);
|
|
11
11
|
models = c.models;
|
|
12
12
|
mongoose = c.mongoose;
|
|
@@ -16,11 +16,11 @@ describe("User", function() {
|
|
|
16
16
|
});
|
|
17
17
|
testItem = mock.user;
|
|
18
18
|
});
|
|
19
|
-
afterEach(async function() {
|
|
19
|
+
afterEach(async function () {
|
|
20
20
|
await mongoose.disconnect();
|
|
21
21
|
});
|
|
22
22
|
|
|
23
|
-
it("is saved", async function() {
|
|
23
|
+
it("is saved", async function () {
|
|
24
24
|
const item = new models.User(testItem);
|
|
25
25
|
const sut = await item.save();
|
|
26
26
|
assert.isNotNull(sut.uuid);
|
|
@@ -49,4 +49,24 @@ describe("User", function() {
|
|
|
49
49
|
assert.equal(item.restrictedCommentsEnabled, true);
|
|
50
50
|
assert.isTrue(sut.canBlockIncidents);
|
|
51
51
|
});
|
|
52
|
+
|
|
53
|
+
it("filters out invalid agencyId in aggregate", async function () {
|
|
54
|
+
const validAgencyId = new mongoose.Types.ObjectId();
|
|
55
|
+
|
|
56
|
+
await models.User.collection.insertMany([
|
|
57
|
+
{ email: "valid@test.com", nick: "valid", departmentId: "d_aggregate", agencyId: validAgencyId },
|
|
58
|
+
{ email: "missing@test.com", nick: "missing", departmentId: "d_aggregate" },
|
|
59
|
+
{ email: "null1@test.com", nick: "null1", departmentId: "d_aggregate", agencyId: null },
|
|
60
|
+
{ email: "empty@test.com", nick: "empty", departmentId: "d_aggregate", agencyId: "" },
|
|
61
|
+
{ email: "null2@test.com", nick: "null2", departmentId: "d_aggregate", agencyId: "null" },
|
|
62
|
+
{ email: "undef@test.com", nick: "undef", departmentId: "d_aggregate", agencyId: "undefined" }
|
|
63
|
+
]);
|
|
64
|
+
|
|
65
|
+
const results = await models.User.aggregate([
|
|
66
|
+
{ $match: { departmentId: "d_aggregate" } }
|
|
67
|
+
]);
|
|
68
|
+
|
|
69
|
+
assert.equal(results.length, 1);
|
|
70
|
+
assert.equal(results[0].email, "valid@test.com");
|
|
71
|
+
});
|
|
52
72
|
});
|