@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
|
@@ -10,6 +10,12 @@ export declare const GRAPH_FUZZY_MAX_RESULTS = 10;
|
|
|
10
10
|
export declare const GRAPH_SEMANTIC_MAX_RESULTS = 5;
|
|
11
11
|
export declare const GRAPH_RESOLVE_MAX_RESULTS = 10;
|
|
12
12
|
export declare const GRAPH_SEMANTIC_MIN_SCORE = 0.6;
|
|
13
|
+
/**
|
|
14
|
+
* Up to this many company/scope nodes of one label, the semantic tier ranks
|
|
15
|
+
* them by exact cosine (no recall cliff). Above it, it falls back to the
|
|
16
|
+
* vector-index over-fetch, which ranks globally and filters afterwards.
|
|
17
|
+
*/
|
|
18
|
+
export declare const GRAPH_EXACT_SCAN_MAX_SCOPED_NODES = 5000;
|
|
13
19
|
/**
|
|
14
20
|
* `exact`: the top candidate's summary (or id) equals the text, or an external
|
|
15
21
|
* source matched the text as an identifier (`RankedCandidate.exact`). `substring`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.search.service.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/services/graph.search.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAM3F,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,wBAAwB,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"graph.search.service.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/services/graph.search.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAM3F,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,OAAO,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AAE9E,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,gFAAgF,CAAC;AAEjH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0GAA0G;IAC1G,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAcD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,MAAM,GAAG,SAAS,CAGvF;AAaD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,eAAe,EAAE,EACxB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,GACnB,MAAM,GAAG,SAAS,CAmBpB;AASD,qBACa,kBAAkB;IAY3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAIxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IA3B5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAQ9D,OAAO,CAAC,sBAAsB,CAAqC;gBAGhD,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,mBAAmB,EAI5B,UAAU,EAAE,UAAU;IACvC;;;;;;;OAOG;IACc,QAAQ,CAAC,EAAE,qBAAqB;IAGnD;;;OAGG;IACH,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,kBAAkB;IAmB1B;;;OAGG;IACG,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAgG9E;;;;;;;;;;;;;OAaG;YACW,cAAc;YA4Bd,kBAAkB;IAsChC,iGAAiG;YACnF,wBAAwB;YAuBxB,oBAAoB;IAuDlC,OAAO,CAAC,cAAc;YAiBR,YAAY;YA4CZ,YAAY;CA8F3B"}
|
|
@@ -10,7 +10,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
};
|
|
11
11
|
var GraphSearchService_1;
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.GraphSearchService = exports.EXCLUDED_TYPES_NOTE = exports.GRAPH_SEMANTIC_MIN_SCORE = exports.GRAPH_RESOLVE_MAX_RESULTS = exports.GRAPH_SEMANTIC_MAX_RESULTS = exports.GRAPH_FUZZY_MAX_RESULTS = exports.GRAPH_EXACT_MAX_RESULTS = void 0;
|
|
13
|
+
exports.GraphSearchService = exports.EXCLUDED_TYPES_NOTE = exports.GRAPH_EXACT_SCAN_MAX_SCOPED_NODES = exports.GRAPH_SEMANTIC_MIN_SCORE = exports.GRAPH_RESOLVE_MAX_RESULTS = exports.GRAPH_SEMANTIC_MAX_RESULTS = exports.GRAPH_FUZZY_MAX_RESULTS = exports.GRAPH_EXACT_MAX_RESULTS = void 0;
|
|
14
14
|
exports.buildResolveDisambiguation = buildResolveDisambiguation;
|
|
15
15
|
exports.buildResolveRecommendation = buildResolveRecommendation;
|
|
16
16
|
const common_1 = require("@nestjs/common");
|
|
@@ -29,6 +29,12 @@ exports.GRAPH_SEMANTIC_MAX_RESULTS = 5;
|
|
|
29
29
|
exports.GRAPH_RESOLVE_MAX_RESULTS = 10;
|
|
30
30
|
exports.GRAPH_SEMANTIC_MIN_SCORE = 0.6;
|
|
31
31
|
const GRAPH_VECTOR_OVERFETCH = 50;
|
|
32
|
+
/**
|
|
33
|
+
* Up to this many company/scope nodes of one label, the semantic tier ranks
|
|
34
|
+
* them by exact cosine (no recall cliff). Above it, it falls back to the
|
|
35
|
+
* vector-index over-fetch, which ranks globally and filters afterwards.
|
|
36
|
+
*/
|
|
37
|
+
exports.GRAPH_EXACT_SCAN_MAX_SCOPED_NODES = 5000;
|
|
32
38
|
/** The sentence that accompanies `excludedTypes` on a resolve_entity reply. */
|
|
33
39
|
exports.EXCLUDED_TYPES_NOTE = "Personal communication types were not searched: pass types to include them.";
|
|
34
40
|
const normaliseSummary = (value) => value.trim().toLowerCase();
|
|
@@ -452,7 +458,42 @@ let GraphSearchService = GraphSearchService_1 = class GraphSearchService {
|
|
|
452
458
|
// Scope narrows the company predicate — it is appended to it, never a
|
|
453
459
|
// replacement. Every value stays parameterised.
|
|
454
460
|
const scopeClause = this.scopeClauseFor(params);
|
|
455
|
-
|
|
461
|
+
// The label is interpolated from the catalog entity, exactly as the index
|
|
462
|
+
// name is; every value stays parameterised.
|
|
463
|
+
const scopedMatch = `
|
|
464
|
+
MATCH (node:\`${params.entity.labelName}\`)
|
|
465
|
+
WHERE (node)-[:BELONGS_TO]->(:Company { id: $companyId })
|
|
466
|
+
AND node.name_embedding IS NOT NULL
|
|
467
|
+
${scopeClause?.cypher ?? ""}
|
|
468
|
+
`;
|
|
469
|
+
// How large is the company's (and scope's) set? The vector index ranks
|
|
470
|
+
// ALL companies first and filters afterwards, so identical content in
|
|
471
|
+
// other companies can push this company's matches out of the candidates.
|
|
472
|
+
// Small sets are ranked by exact cosine; the index only above the threshold.
|
|
473
|
+
const countResult = await this.neo4j.read(`
|
|
474
|
+
${scopedMatch}
|
|
475
|
+
RETURN count(node) AS scopedCount
|
|
476
|
+
`, { companyId: params.companyId, ...(scopeClause?.params ?? {}) });
|
|
477
|
+
const scopedCount = Number(countResult?.records?.[0]?.get("scopedCount") ?? 0);
|
|
478
|
+
if (scopedCount === 0)
|
|
479
|
+
return { matchMode: "none", items: [] };
|
|
480
|
+
const limit = Math.min(params.limit, exports.GRAPH_SEMANTIC_MAX_RESULTS);
|
|
481
|
+
const result = scopedCount <= exports.GRAPH_EXACT_SCAN_MAX_SCOPED_NODES
|
|
482
|
+
? await this.neo4j.read(`
|
|
483
|
+
${scopedMatch}
|
|
484
|
+
WITH node, vector.similarity.cosine(node.name_embedding, $queryEmbedding) AS score
|
|
485
|
+
WHERE score >= $minScore
|
|
486
|
+
RETURN node.id AS id, properties(node) AS properties, score
|
|
487
|
+
ORDER BY score DESC
|
|
488
|
+
LIMIT toInteger($limit)
|
|
489
|
+
`, {
|
|
490
|
+
queryEmbedding,
|
|
491
|
+
companyId: params.companyId,
|
|
492
|
+
minScore: exports.GRAPH_SEMANTIC_MIN_SCORE,
|
|
493
|
+
limit,
|
|
494
|
+
...(scopeClause?.params ?? {}),
|
|
495
|
+
})
|
|
496
|
+
: await this.neo4j.read(`
|
|
456
497
|
CALL db.index.vector.queryNodes($indexName, toInteger($overFetch), $queryEmbedding)
|
|
457
498
|
YIELD node, score
|
|
458
499
|
WHERE (node)-[:BELONGS_TO]->(:Company { id: $companyId })
|
|
@@ -462,14 +503,14 @@ let GraphSearchService = GraphSearchService_1 = class GraphSearchService {
|
|
|
462
503
|
ORDER BY score DESC
|
|
463
504
|
LIMIT toInteger($limit)
|
|
464
505
|
`, {
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
506
|
+
indexName,
|
|
507
|
+
overFetch: GRAPH_VECTOR_OVERFETCH,
|
|
508
|
+
queryEmbedding,
|
|
509
|
+
companyId: params.companyId,
|
|
510
|
+
minScore: exports.GRAPH_SEMANTIC_MIN_SCORE,
|
|
511
|
+
limit,
|
|
512
|
+
...(scopeClause?.params ?? {}),
|
|
513
|
+
});
|
|
473
514
|
const items = result.records.map((r) => ({
|
|
474
515
|
id: r.get("id"),
|
|
475
516
|
score: r.get("score"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.search.service.js","sourceRoot":"","sources":["../../../../src/agents/graph/services/graph.search.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"graph.search.service.js","sourceRoot":"","sources":["../../../../src/agents/graph/services/graph.search.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,12 @@
|
|
|
3
3
|
* caller may act on a client-supplied object key through the `/s3` routes.
|
|
4
4
|
*
|
|
5
5
|
* The token is optional. When unbound, the `/s3` routes accept every
|
|
6
|
-
* well-formed key, as before.
|
|
6
|
+
* well-formed key, as before.
|
|
7
|
+
*
|
|
8
|
+
* `S3ClientKeyService.assertClientKey` runs the same policy on keys that arrive
|
|
9
|
+
* in request BODIES (user avatar, company logo, app entities that store an
|
|
10
|
+
* uploaded key) before they are stored or read server-side. When unbound, it
|
|
11
|
+
* accepts every value, as before. Bind it from a `@Global()` application module so
|
|
7
12
|
* the package `S3Module`, which imports no app modules, can resolve it.
|
|
8
13
|
*/
|
|
9
14
|
/** What the caller wants to do with the key. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.key-access.policy.interface.d.ts","sourceRoot":"","sources":["../../../src/common/interfaces/s3.key-access.policy.interface.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"s3.key-access.policy.interface.d.ts","sourceRoot":"","sources":["../../../src/common/interfaces/s3.key-access.policy.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,gDAAgD;AAChD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjE;;;;;;;;;;OAUG;IACH,cAAc,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAEtC;;;;;;;;OAQG;IACH,aAAa,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACtC;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AAEnE;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAK7D"}
|
|
@@ -4,7 +4,12 @@
|
|
|
4
4
|
* caller may act on a client-supplied object key through the `/s3` routes.
|
|
5
5
|
*
|
|
6
6
|
* The token is optional. When unbound, the `/s3` routes accept every
|
|
7
|
-
* well-formed key, as before.
|
|
7
|
+
* well-formed key, as before.
|
|
8
|
+
*
|
|
9
|
+
* `S3ClientKeyService.assertClientKey` runs the same policy on keys that arrive
|
|
10
|
+
* in request BODIES (user avatar, company logo, app entities that store an
|
|
11
|
+
* uploaded key) before they are stored or read server-side. When unbound, it
|
|
12
|
+
* accepts every value, as before. Bind it from a `@Global()` application module so
|
|
8
13
|
* the package `S3Module`, which imports no app modules, can resolve it.
|
|
9
14
|
*/
|
|
10
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.key-access.policy.interface.js","sourceRoot":"","sources":["../../../src/common/interfaces/s3.key-access.policy.interface.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"s3.key-access.policy.interface.js","sourceRoot":"","sources":["../../../src/common/interfaces/s3.key-access.policy.interface.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAoEH,8CAKC;AApBD;;;GAGG;AACU,QAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAEnE;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAAC,GAAY;IAC5C,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -25,6 +25,10 @@ export declare class SecurityService {
|
|
|
25
25
|
}): string;
|
|
26
26
|
decodeJwt(token: string): any;
|
|
27
27
|
isCurrentUserCompanyAdmin(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Throws 403 unless the user holds Administrator or CompanyAdministrator.
|
|
30
|
+
* A plain Error here used to surface as a 500.
|
|
31
|
+
*/
|
|
28
32
|
validateAdmin(params: {
|
|
29
33
|
user: any;
|
|
30
34
|
}): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.service.d.ts","sourceRoot":"","sources":["../../../../src/core/security/services/security.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKxC,eAAO,MAAM,YAAY,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAInE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAU,UAAU,MAAM,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,CAEnF,CAAC;AAEF,qBACa,eAAe;IAExB,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU;IACzC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU;gBADtB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU;IAG3C,IAAI,sBAAsB,IAAI,IAAI,CAEjC;IAED,IAAI,eAAe,IAAI,IAAI,CAE1B;IAED,OAAO,CAAC,MAAM,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,MAAM;IAWV,IAAI,kCAAkC,IAAI,IAAI,CAE7C;IAED,0BAA0B,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAQ9D,IAAI,+BAA+B,IAAI,IAAI,CAE1C;IAED,uBAAuB,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAQ3D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG;IAI7B,yBAAyB,IAAI,OAAO;IAKpC,aAAa,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE,GAAG,IAAI;IAU1C,aAAa,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO;IAK9D,aAAa,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,MAAM,CAAA;KAAE,GAAG,MAAM;IAMtE;;;;;;;;;OASG;IACH,cAAc,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAYrE;;;;;;;OAOG;IACH,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;IAIrC;;OAEG;IACH,IAAI,sBAAsB,IAAI,IAAI,CAEjC;CACF"}
|
|
1
|
+
{"version":3,"file":"security.service.d.ts","sourceRoot":"","sources":["../../../../src/core/security/services/security.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKxC,eAAO,MAAM,YAAY,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAInE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAU,UAAU,MAAM,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,CAEnF,CAAC;AAEF,qBACa,eAAe;IAExB,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU;IACzC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU;gBADtB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU;IAG3C,IAAI,sBAAsB,IAAI,IAAI,CAEjC;IAED,IAAI,eAAe,IAAI,IAAI,CAE1B;IAED,OAAO,CAAC,MAAM,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,MAAM;IAWV,IAAI,kCAAkC,IAAI,IAAI,CAE7C;IAED,0BAA0B,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAQ9D,IAAI,+BAA+B,IAAI,IAAI,CAE1C;IAED,uBAAuB,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAQ3D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG;IAI7B,yBAAyB,IAAI,OAAO;IAKpC;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE,GAAG,IAAI;IAU1C,aAAa,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO;IAK9D,aAAa,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,MAAM,CAAA;KAAE,GAAG,MAAM;IAMtE;;;;;;;;;OASG;IACH,cAAc,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAYrE;;;;;;;OAOG;IACH,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;IAIrC;;OAEG;IACH,IAAI,sBAAsB,IAAI,IAAI,CAEjC;CACF"}
|
|
@@ -106,12 +106,16 @@ let SecurityService = class SecurityService {
|
|
|
106
106
|
const configurations = this.clsService.get("companyConfigurations");
|
|
107
107
|
return configurations?.hasRole(system_roles_1.SystemRoles.CompanyAdministrator) ?? false;
|
|
108
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Throws 403 unless the user holds Administrator or CompanyAdministrator.
|
|
111
|
+
* A plain Error here used to surface as a 500.
|
|
112
|
+
*/
|
|
109
113
|
validateAdmin(params) {
|
|
110
114
|
if (!this.isUserInRoles({
|
|
111
115
|
user: params.user,
|
|
112
116
|
roles: [system_roles_1.SystemRoles.Administrator, system_roles_1.SystemRoles.CompanyAdministrator],
|
|
113
117
|
}))
|
|
114
|
-
throw new
|
|
118
|
+
throw new common_1.ForbiddenException("User is not an admin");
|
|
115
119
|
}
|
|
116
120
|
isUserInRoles(params) {
|
|
117
121
|
if (!params.user || !params.user.roles)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.service.js","sourceRoot":"","sources":["../../../../src/core/security/services/security.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"security.service.js","sourceRoot":"","sources":["../../../../src/core/security/services/security.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.gateway.d.ts","sourceRoot":"","sources":["../../../../src/core/websocket/gateways/event.gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAmB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAGL,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EAId,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAkB,UAAU,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"event.gateway.d.ts","sourceRoot":"","sources":["../../../../src/core/websocket/gateways/event.gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAmB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAGL,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EAId,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAkB,UAAU,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAajE,qBASa,aAAc,YAAW,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,eAAe;IAO1G,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAX/B,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,cAAc,CAAS;gBAGZ,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,aAAa;IAG9C,SAAS;IAKH,gBAAgB,CAAC,MAAM,EAAE,MAAM;IAkC/B,gBAAgB,CAAC,MAAM,EAAE,MAAM;IA8B/B,eAAe;IAKf,eAAe,CAAoB,MAAM,EAAE,MAAM;;;;;;IASvD,aAAa,CACI,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,EAChC,MAAM,EAAE,MAAM,GAChC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE;IAU/B,OAAO,CAAC,yBAAyB;CAelC"}
|
|
@@ -24,6 +24,14 @@ const neo4j_service_1 = require("../../neo4j/services/neo4j.service");
|
|
|
24
24
|
const presence_service_1 = require("../services/presence.service");
|
|
25
25
|
const websocket_service_1 = require("../services/websocket.service");
|
|
26
26
|
const WS_BUILTIN_EVENTS = new Set(["message", "heartbeat"]);
|
|
27
|
+
/**
|
|
28
|
+
* Raw client events are re-emitted as `ws:<event>`. A raw event named `message:<x>`
|
|
29
|
+
* would land in the `ws:message:` namespace reserved for `message` frames (see
|
|
30
|
+
* WS_CLIENT_MESSAGE_EVENT_PREFIX), with a different payload shape, so it is dropped.
|
|
31
|
+
*/
|
|
32
|
+
function isReservedClientEvent(event) {
|
|
33
|
+
return WS_BUILTIN_EVENTS.has(event) || event.startsWith("message:");
|
|
34
|
+
}
|
|
27
35
|
let EventsGateway = class EventsGateway {
|
|
28
36
|
constructor(webSocketService, jwtService, cls, neo4j, logger, presenceService, eventEmitter) {
|
|
29
37
|
this.webSocketService = webSocketService;
|
|
@@ -52,14 +60,14 @@ let EventsGateway = class EventsGateway {
|
|
|
52
60
|
this.webSocketService.addClient(payload.userId, client);
|
|
53
61
|
// Set user as online
|
|
54
62
|
await this.presenceService.setUserOnline(payload.userId, payload.userName || payload.name, client.id);
|
|
55
|
-
//
|
|
56
|
-
const
|
|
63
|
+
// Presence goes to the user's company only, never to every socket.
|
|
64
|
+
const presencePayload = {
|
|
57
65
|
userId: payload.userId,
|
|
58
66
|
status: "online",
|
|
59
67
|
};
|
|
60
|
-
await this.webSocketService.
|
|
68
|
+
await this.webSocketService.sendPresenceToCompany(payload.companyId, presencePayload);
|
|
61
69
|
client.onAny((event, eventPayload) => {
|
|
62
|
-
if (
|
|
70
|
+
if (typeof event !== "string" || isReservedClientEvent(event))
|
|
63
71
|
return;
|
|
64
72
|
this.eventEmitter.emit(`ws:${event}`, { user: client.data.user, payload: eventPayload, client });
|
|
65
73
|
});
|
|
@@ -83,12 +91,12 @@ let EventsGateway = class EventsGateway {
|
|
|
83
91
|
await this.presenceService.setUserOffline(user.userId, client.id);
|
|
84
92
|
const status = await this.presenceService.getUserStatus(user.userId);
|
|
85
93
|
if (status.status === "offline") {
|
|
86
|
-
const
|
|
94
|
+
const presencePayload = {
|
|
87
95
|
userId: user.userId,
|
|
88
96
|
status: "offline",
|
|
89
97
|
lastSeen: status.lastActivity,
|
|
90
98
|
};
|
|
91
|
-
await this.webSocketService.
|
|
99
|
+
await this.webSocketService.sendPresenceToCompany(user.companyId, presencePayload);
|
|
92
100
|
}
|
|
93
101
|
}
|
|
94
102
|
catch (error) {
|
|
@@ -109,10 +117,11 @@ let EventsGateway = class EventsGateway {
|
|
|
109
117
|
}
|
|
110
118
|
handleMessage(data, client) {
|
|
111
119
|
const user = client.data.user;
|
|
112
|
-
|
|
120
|
+
// Client frames are re-emitted ONLY under the reserved `ws:message:<type>` namespace
|
|
121
|
+
// (WebSocketService.handleIncomingMessage); they can never reach an internal event.
|
|
122
|
+
const accepted = !!(user && user.userId && user.companyId) &&
|
|
113
123
|
this.webSocketService.handleIncomingMessage(user.companyId, user.userId, data);
|
|
114
|
-
}
|
|
115
|
-
return { event: "message", data: { status: "received" } };
|
|
124
|
+
return { event: "message", data: { status: accepted ? "received" : "rejected" } };
|
|
116
125
|
}
|
|
117
126
|
extractTokenFromHandshake(client) {
|
|
118
127
|
const token = client.handshake.auth?.token;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.gateway.js","sourceRoot":"","sources":["../../../../src/core/websocket/gateways/event.gateway.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAkE;AAClE,yDAAsD;AACtD,qCAAyC;AACzC,mDAS4B;AAC5B,2CAAwD;AACxD,yCAA2C;AAC3C,4EAA2E;AAC3E,sEAAkE;AAClE,mEAA+D;AAC/D,qEAAiE;AAEjE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"event.gateway.js","sourceRoot":"","sources":["../../../../src/core/websocket/gateways/event.gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presence.cron.service.d.ts","sourceRoot":"","sources":["../../../../src/core/websocket/services/presence.cron.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAC;AAE9F,qBACa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAHN,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,yBAAyB,EAC7C,MAAM,EAAE,iBAAiB;IAG5C;;OAEG;IAEG,aAAa;
|
|
1
|
+
{"version":3,"file":"presence.cron.service.d.ts","sourceRoot":"","sources":["../../../../src/core/websocket/services/presence.cron.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAC;AAE9F,qBACa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAHN,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,yBAAyB,EAC7C,MAAM,EAAE,iBAAiB;IAG5C;;OAEG;IAEG,aAAa;IA0BnB;;;OAGG;IAEG,qBAAqB;CAO5B"}
|
|
@@ -32,10 +32,11 @@ let PresenceCronService = class PresenceCronService {
|
|
|
32
32
|
const changedUsers = await this.presenceService.markIdleUsersAsAway();
|
|
33
33
|
if (changedUsers.length > 0) {
|
|
34
34
|
this.logger.log(`Marked ${changedUsers.length} users as idle`);
|
|
35
|
-
//
|
|
35
|
+
// Presence changes go to each user's company only, never to every socket.
|
|
36
36
|
for (const userId of changedUsers) {
|
|
37
37
|
const status = await this.presenceService.getUserStatus(userId);
|
|
38
|
-
await this.
|
|
38
|
+
const companyId = await this.redisClientStorage.getUserCompany(userId);
|
|
39
|
+
await this.webSocketService.sendPresenceToCompany(companyId, {
|
|
39
40
|
userId,
|
|
40
41
|
status: status.status,
|
|
41
42
|
lastSeen: status.lastActivity,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presence.cron.service.js","sourceRoot":"","sources":["../../../../src/core/websocket/services/presence.cron.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,+CAAwC;AACxC,4EAA2E;AAC3E,yDAAqD;AACrD,2DAAuD;AACvD,oGAA8F;AAGvF,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,YACmB,eAAgC,EAChC,gBAAkC,EAClC,kBAA6C,EAC7C,MAAyB;QAHzB,oBAAe,GAAf,eAAe,CAAiB;QAChC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,uBAAkB,GAAlB,kBAAkB,CAA2B;QAC7C,WAAM,GAAN,MAAM,CAAmB;IACzC,CAAC;IAEJ;;OAEG;IAEG,AAAN,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YAE5D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC;YAEtE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,YAAY,CAAC,MAAM,gBAAgB,CAAC,CAAC;gBAE/D,
|
|
1
|
+
{"version":3,"file":"presence.cron.service.js","sourceRoot":"","sources":["../../../../src/core/websocket/services/presence.cron.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,+CAAwC;AACxC,4EAA2E;AAC3E,yDAAqD;AACrD,2DAAuD;AACvD,oGAA8F;AAGvF,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,YACmB,eAAgC,EAChC,gBAAkC,EAClC,kBAA6C,EAC7C,MAAyB;QAHzB,oBAAe,GAAf,eAAe,CAAiB;QAChC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,uBAAkB,GAAlB,kBAAkB,CAA2B;QAC7C,WAAM,GAAN,MAAM,CAAmB;IACzC,CAAC;IAEJ;;OAEG;IAEG,AAAN,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YAE5D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC;YAEtE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,YAAY,CAAC,MAAM,gBAAgB,CAAC,CAAC;gBAE/D,0EAA0E;gBAC1E,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;oBAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;oBAChE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBAEvE,MAAM,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,EAAE;wBAC3D,MAAM;wBACN,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,QAAQ,EAAE,MAAM,CAAC,YAAY;qBAC9B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED;;;OAGG;IAEG,AAAN,KAAK,CAAC,qBAAqB;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF,CAAA;AAlDY,kDAAmB;AAYxB;IADL,IAAA,eAAI,EAAC,aAAa,CAAC;;;;wDAyBnB;AAOK;IADL,IAAA,eAAI,EAAC,WAAW,CAAC;;;;gEAOjB;8BAjDU,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;qCAGyB,kCAAe;QACd,oCAAgB;QACd,wDAAyB;QACrC,mCAAiB;GALjC,mBAAmB,CAkD/B"}
|
|
@@ -5,6 +5,19 @@ import { AppModeConfig } from "../../appmode/constants/app.mode.constant";
|
|
|
5
5
|
import { AppLoggingService } from "../../logging/services/logging.service";
|
|
6
6
|
import { RedisClientStorageService } from "../../redis/services/redis.client.storage.service";
|
|
7
7
|
import { NotificationMessage, RedisMessagingService } from "../../redis/services/redis.messaging.service";
|
|
8
|
+
/**
|
|
9
|
+
* Prefix under which client `message` frames are re-emitted on the in-process event bus.
|
|
10
|
+
*
|
|
11
|
+
* A socket client controls `message.type`, so it must never be emitted verbatim: that
|
|
12
|
+
* would let any connected user fire internal events ("redis.notification", trigger
|
|
13
|
+
* events, cache-invalidation events, ...). Listeners for client messages subscribe to
|
|
14
|
+
* `${WS_CLIENT_MESSAGE_EVENT_PREFIX}<type>`, e.g. `@OnEvent("ws:message:chat")`.
|
|
15
|
+
*/
|
|
16
|
+
export declare const WS_CLIENT_MESSAGE_EVENT_PREFIX = "ws:message:";
|
|
17
|
+
/** Allowed shape of a client-supplied message type (no wildcards, no whitespace, bounded). */
|
|
18
|
+
export declare const WS_CLIENT_MESSAGE_TYPE_PATTERN: RegExp;
|
|
19
|
+
/** Socket event carrying presence changes. Sent to the user's company only, never broadcast. */
|
|
20
|
+
export declare const WS_PRESENCE_EVENT = "user:presence";
|
|
8
21
|
/**
|
|
9
22
|
* WebSocket Service
|
|
10
23
|
*
|
|
@@ -39,10 +52,19 @@ export declare class WebSocketService implements OnModuleInit, OnModuleDestroy {
|
|
|
39
52
|
private sendMessageToCompanyDirect;
|
|
40
53
|
sendMessageToUser(userId: string, event: string, data: any): Promise<void>;
|
|
41
54
|
private sendMessageToUserDirect;
|
|
55
|
+
/**
|
|
56
|
+
* Presence of a user goes to the sockets of that user's company only. Without a
|
|
57
|
+
* company there is nobody entitled to see it, so nothing is sent.
|
|
58
|
+
*/
|
|
59
|
+
sendPresenceToCompany(companyId: string | null | undefined, data: any): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Re-emits a client `message` frame under the reserved `ws:message:` namespace.
|
|
62
|
+
* Returns false (and emits nothing) when the type is missing or malformed.
|
|
63
|
+
*/
|
|
42
64
|
handleIncomingMessage(companyId: string, userId: string, message: {
|
|
43
65
|
type: string;
|
|
44
66
|
message: any;
|
|
45
|
-
}):
|
|
67
|
+
}): boolean;
|
|
46
68
|
handleIncomingGoogleMeetPart(meetId: string, speakerName: string, timestamp: Date, message: any): void;
|
|
47
69
|
handleRedisNotification(notification: NotificationMessage): Promise<void>;
|
|
48
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.service.d.ts","sourceRoot":"","sources":["../../../../src/core/websocket/services/websocket.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,eAAe,EAAE,YAAY,EAAY,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAW,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAA2B,aAAa,EAAE,MAAM,2CAA2C,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AAE1G;;;;;;;;;;;;GAYG;AACH,qBACa,gBAAiB,YAAW,YAAY,EAAE,eAAe;IAMlE,OAAO,CAAC,QAAQ,CAAC,YAAY;IACL,OAAO,CAAC,QAAQ,CAAC,aAAa;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACX,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAT9C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,eAAe,CAAC,CAAiB;gBAGtB,YAAY,EAAE,aAAa,EACH,aAAa,EAAE,aAAa,EACpD,MAAM,EAAE,iBAAiB,EACb,kBAAkB,CAAC,EAAE,yBAAyB,EAC9C,cAAc,CAAC,EAAE,qBAAqB;IAGrE,YAAY;IAYZ,eAAe;IAMf,SAAS,CAAC,MAAM,EAAE,MAAM;IAIlB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAUxC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAmB3C,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAWxC,OAAO,CAAC,eAAe;IAMjB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;YAWxD,0BAA0B;IAelC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAWhE,OAAO,CAAC,uBAAuB;IAO/B,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE;
|
|
1
|
+
{"version":3,"file":"websocket.service.d.ts","sourceRoot":"","sources":["../../../../src/core/websocket/services/websocket.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,eAAe,EAAE,YAAY,EAAY,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAW,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAA2B,aAAa,EAAE,MAAM,2CAA2C,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AAE1G;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,gBAAgB,CAAC;AAE5D,8FAA8F;AAC9F,eAAO,MAAM,8BAA8B,QAAuC,CAAC;AAEnF,gGAAgG;AAChG,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,qBACa,gBAAiB,YAAW,YAAY,EAAE,eAAe;IAMlE,OAAO,CAAC,QAAQ,CAAC,YAAY;IACL,OAAO,CAAC,QAAQ,CAAC,aAAa;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACX,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAT9C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,eAAe,CAAC,CAAiB;gBAGtB,YAAY,EAAE,aAAa,EACH,aAAa,EAAE,aAAa,EACpD,MAAM,EAAE,iBAAiB,EACb,kBAAkB,CAAC,EAAE,yBAAyB,EAC9C,cAAc,CAAC,EAAE,qBAAqB;IAGrE,YAAY;IAYZ,eAAe;IAMf,SAAS,CAAC,MAAM,EAAE,MAAM;IAIlB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAUxC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAmB3C,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAWxC,OAAO,CAAC,eAAe;IAMjB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;YAWxD,0BAA0B;IAelC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAWhE,OAAO,CAAC,uBAAuB;IAO/B;;;OAGG;IACG,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,GAAG;IAK3E;;;OAGG;IACH,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO;IAW1G,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG;IAKzF,uBAAuB,CAAC,YAAY,EAAE,mBAAmB;CAiBhE"}
|
|
@@ -11,14 +11,28 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
+
var WebSocketService_1;
|
|
14
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.WebSocketService = void 0;
|
|
16
|
+
exports.WebSocketService = exports.WS_PRESENCE_EVENT = exports.WS_CLIENT_MESSAGE_TYPE_PATTERN = exports.WS_CLIENT_MESSAGE_EVENT_PREFIX = void 0;
|
|
16
17
|
const common_1 = require("@nestjs/common");
|
|
17
18
|
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
18
19
|
const app_mode_constant_1 = require("../../appmode/constants/app.mode.constant");
|
|
19
20
|
const logging_service_1 = require("../../logging/services/logging.service");
|
|
20
21
|
const redis_client_storage_service_1 = require("../../redis/services/redis.client.storage.service");
|
|
21
22
|
const redis_messaging_service_1 = require("../../redis/services/redis.messaging.service");
|
|
23
|
+
/**
|
|
24
|
+
* Prefix under which client `message` frames are re-emitted on the in-process event bus.
|
|
25
|
+
*
|
|
26
|
+
* A socket client controls `message.type`, so it must never be emitted verbatim: that
|
|
27
|
+
* would let any connected user fire internal events ("redis.notification", trigger
|
|
28
|
+
* events, cache-invalidation events, ...). Listeners for client messages subscribe to
|
|
29
|
+
* `${WS_CLIENT_MESSAGE_EVENT_PREFIX}<type>`, e.g. `@OnEvent("ws:message:chat")`.
|
|
30
|
+
*/
|
|
31
|
+
exports.WS_CLIENT_MESSAGE_EVENT_PREFIX = "ws:message:";
|
|
32
|
+
/** Allowed shape of a client-supplied message type (no wildcards, no whitespace, bounded). */
|
|
33
|
+
exports.WS_CLIENT_MESSAGE_TYPE_PATTERN = /^[A-Za-z0-9][A-Za-z0-9_.:-]{0,99}$/;
|
|
34
|
+
/** Socket event carrying presence changes. Sent to the user's company only, never broadcast. */
|
|
35
|
+
exports.WS_PRESENCE_EVENT = "user:presence";
|
|
22
36
|
/**
|
|
23
37
|
* WebSocket Service
|
|
24
38
|
*
|
|
@@ -32,7 +46,7 @@ const redis_messaging_service_1 = require("../../redis/services/redis.messaging.
|
|
|
32
46
|
* - Redis pub/sub for multi-instance support
|
|
33
47
|
* - Periodic cleanup of expired clients
|
|
34
48
|
*/
|
|
35
|
-
let WebSocketService = class WebSocketService {
|
|
49
|
+
let WebSocketService = WebSocketService_1 = class WebSocketService {
|
|
36
50
|
constructor(eventEmitter, appModeConfig, logger, redisClientStorage, redisMessaging) {
|
|
37
51
|
this.eventEmitter = eventEmitter;
|
|
38
52
|
this.appModeConfig = appModeConfig;
|
|
@@ -134,8 +148,27 @@ let WebSocketService = class WebSocketService {
|
|
|
134
148
|
clients.forEach((client) => client.emit(event, data));
|
|
135
149
|
}
|
|
136
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Presence of a user goes to the sockets of that user's company only. Without a
|
|
153
|
+
* company there is nobody entitled to see it, so nothing is sent.
|
|
154
|
+
*/
|
|
155
|
+
async sendPresenceToCompany(companyId, data) {
|
|
156
|
+
if (!companyId)
|
|
157
|
+
return;
|
|
158
|
+
await this.sendMessageToCompany(companyId, exports.WS_PRESENCE_EVENT, data);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Re-emits a client `message` frame under the reserved `ws:message:` namespace.
|
|
162
|
+
* Returns false (and emits nothing) when the type is missing or malformed.
|
|
163
|
+
*/
|
|
137
164
|
handleIncomingMessage(companyId, userId, message) {
|
|
138
|
-
|
|
165
|
+
const type = message?.type;
|
|
166
|
+
if (typeof type !== "string" || !exports.WS_CLIENT_MESSAGE_TYPE_PATTERN.test(type)) {
|
|
167
|
+
this.logger.warn(`Rejected websocket message with invalid type from user ${userId}`, WebSocketService_1.name);
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
this.eventEmitter.emit(`${exports.WS_CLIENT_MESSAGE_EVENT_PREFIX}${type}`, { companyId, userId, message });
|
|
171
|
+
return true;
|
|
139
172
|
}
|
|
140
173
|
handleIncomingGoogleMeetPart(meetId, speakerName, timestamp, message) {
|
|
141
174
|
this.eventEmitter.emit("googlemeet", { meetId, speakerName, timestamp, message });
|
|
@@ -165,7 +198,7 @@ __decorate([
|
|
|
165
198
|
__metadata("design:paramtypes", [Object]),
|
|
166
199
|
__metadata("design:returntype", Promise)
|
|
167
200
|
], WebSocketService.prototype, "handleRedisNotification", null);
|
|
168
|
-
exports.WebSocketService = WebSocketService = __decorate([
|
|
201
|
+
exports.WebSocketService = WebSocketService = WebSocketService_1 = __decorate([
|
|
169
202
|
(0, common_1.Injectable)(),
|
|
170
203
|
__param(1, (0, common_1.Inject)(app_mode_constant_1.APP_MODE_TOKEN)),
|
|
171
204
|
__param(3, (0, common_1.Optional)()),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.service.js","sourceRoot":"","sources":["../../../../src/core/websocket/services/websocket.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"websocket.service.js","sourceRoot":"","sources":["../../../../src/core/websocket/services/websocket.service.ts"],"names":[],"mappings":"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"}
|