@lenne.tech/nest-server 11.34.1 → 11.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/.claude/rules/architecture.md +3 -1
  2. package/.claude/rules/configurable-features.md +3 -3
  3. package/.claude/rules/role-system.md +281 -0
  4. package/CLAUDE.md +11 -1
  5. package/FRAMEWORK-API.md +7 -3
  6. package/dist/core/common/decorators/nested-type.registry.d.ts +2 -0
  7. package/dist/core/common/decorators/nested-type.registry.js +17 -0
  8. package/dist/core/common/decorators/nested-type.registry.js.map +1 -0
  9. package/dist/core/common/decorators/restricted.decorator.d.ts +2 -1
  10. package/dist/core/common/decorators/restricted.decorator.js +52 -16
  11. package/dist/core/common/decorators/restricted.decorator.js.map +1 -1
  12. package/dist/core/common/decorators/restrictions-checked.marker.d.ts +4 -0
  13. package/dist/core/common/decorators/restrictions-checked.marker.js +30 -0
  14. package/dist/core/common/decorators/restrictions-checked.marker.js.map +1 -0
  15. package/dist/core/common/decorators/unified-field.decorator.d.ts +1 -1
  16. package/dist/core/common/decorators/unified-field.decorator.js +6 -3
  17. package/dist/core/common/decorators/unified-field.decorator.js.map +1 -1
  18. package/dist/core/common/enums/role.enum.d.ts +8 -0
  19. package/dist/core/common/enums/role.enum.js +28 -1
  20. package/dist/core/common/enums/role.enum.js.map +1 -1
  21. package/dist/core/common/helpers/execution-context-request.helper.d.ts +7 -0
  22. package/dist/core/common/helpers/execution-context-request.helper.js +31 -0
  23. package/dist/core/common/helpers/execution-context-request.helper.js.map +1 -0
  24. package/dist/core/common/helpers/graphql-ws-context.helper.d.ts +15 -0
  25. package/dist/core/common/helpers/graphql-ws-context.helper.js +96 -0
  26. package/dist/core/common/helpers/graphql-ws-context.helper.js.map +1 -0
  27. package/dist/core/common/helpers/gridfs.helper.js +1 -1
  28. package/dist/core/common/helpers/gridfs.helper.js.map +1 -1
  29. package/dist/core/common/interceptors/check-security.interceptor.js +2 -1
  30. package/dist/core/common/interceptors/check-security.interceptor.js.map +1 -1
  31. package/dist/core/common/interceptors/response-model.interceptor.js +3 -2
  32. package/dist/core/common/interceptors/response-model.interceptor.js.map +1 -1
  33. package/dist/core/common/interfaces/server-options.interface.d.ts +5 -0
  34. package/dist/core/common/plugins/mongoose-system-role.plugin.d.ts +1 -0
  35. package/dist/core/common/plugins/mongoose-system-role.plugin.js +106 -0
  36. package/dist/core/common/plugins/mongoose-system-role.plugin.js.map +1 -0
  37. package/dist/core/common/plugins/mongoose-tenant.plugin.js +134 -9
  38. package/dist/core/common/plugins/mongoose-tenant.plugin.js.map +1 -1
  39. package/dist/core/common/services/core-s3.service.js +4 -1
  40. package/dist/core/common/services/core-s3.service.js.map +1 -1
  41. package/dist/core/common/services/core-tenant-context.registry.d.ts +10 -0
  42. package/dist/core/common/services/core-tenant-context.registry.js +12 -0
  43. package/dist/core/common/services/core-tenant-context.registry.js.map +1 -0
  44. package/dist/core/modules/auth/guards/roles.guard.d.ts +1 -1
  45. package/dist/core/modules/auth/guards/roles.guard.js +2 -2
  46. package/dist/core/modules/auth/guards/roles.guard.js.map +1 -1
  47. package/dist/core/modules/better-auth/better-auth-roles.guard.js +2 -10
  48. package/dist/core/modules/better-auth/better-auth-roles.guard.js.map +1 -1
  49. package/dist/core/modules/file/core-file.service.d.ts +3 -1
  50. package/dist/core/modules/file/core-file.service.js +62 -7
  51. package/dist/core/modules/file/core-file.service.js.map +1 -1
  52. package/dist/core/modules/file/file-access.helper.d.ts +18 -0
  53. package/dist/core/modules/file/file-access.helper.js +46 -0
  54. package/dist/core/modules/file/file-access.helper.js.map +1 -0
  55. package/dist/core/modules/file/file-metadata.helper.js +1 -1
  56. package/dist/core/modules/file/file-metadata.helper.js.map +1 -1
  57. package/dist/core/modules/file/file-roles.config.d.ts +10 -0
  58. package/dist/core/modules/file/file-roles.config.js +78 -0
  59. package/dist/core/modules/file/file-roles.config.js.map +1 -0
  60. package/dist/core/modules/file/file-roles.helper.d.ts +2 -2
  61. package/dist/core/modules/file/file-roles.helper.js +8 -20
  62. package/dist/core/modules/file/file-roles.helper.js.map +1 -1
  63. package/dist/core/modules/tenant/core-role-scope.registry.d.ts +28 -0
  64. package/dist/core/modules/tenant/core-role-scope.registry.js +93 -0
  65. package/dist/core/modules/tenant/core-role-scope.registry.js.map +1 -0
  66. package/dist/core/modules/tenant/core-tenant.guard.d.ts +5 -0
  67. package/dist/core/modules/tenant/core-tenant.guard.js +37 -11
  68. package/dist/core/modules/tenant/core-tenant.guard.js.map +1 -1
  69. package/dist/core/modules/tenant/core-tenant.helpers.d.ts +9 -1
  70. package/dist/core/modules/tenant/core-tenant.helpers.js +65 -4
  71. package/dist/core/modules/tenant/core-tenant.helpers.js.map +1 -1
  72. package/dist/core/modules/tenant/core-tenant.module.js +5 -0
  73. package/dist/core/modules/tenant/core-tenant.module.js.map +1 -1
  74. package/dist/core/modules/tenant/core-tenant.service.d.ts +1 -0
  75. package/dist/core/modules/tenant/core-tenant.service.js +25 -0
  76. package/dist/core/modules/tenant/core-tenant.service.js.map +1 -1
  77. package/dist/core/modules/tus/core-tus.service.d.ts +2 -0
  78. package/dist/core/modules/tus/core-tus.service.js +34 -4
  79. package/dist/core/modules/tus/core-tus.service.js.map +1 -1
  80. package/dist/core/modules/tus/index.d.ts +1 -0
  81. package/dist/core/modules/tus/index.js +1 -0
  82. package/dist/core/modules/tus/index.js.map +1 -1
  83. package/dist/core/modules/tus/tus.constants.d.ts +1 -0
  84. package/dist/core/modules/tus/tus.constants.js +2 -1
  85. package/dist/core/modules/tus/tus.constants.js.map +1 -1
  86. package/dist/core/modules/user/core-user.service.js +5 -0
  87. package/dist/core/modules/user/core-user.service.js.map +1 -1
  88. package/dist/core/modules/user/inputs/core-user.input.js +8 -0
  89. package/dist/core/modules/user/inputs/core-user.input.js.map +1 -1
  90. package/dist/core.module.js +10 -0
  91. package/dist/core.module.js.map +1 -1
  92. package/dist/index.d.ts +3 -0
  93. package/dist/index.js +3 -0
  94. package/dist/index.js.map +1 -1
  95. package/dist/server/modules/file/file.service.js +4 -1
  96. package/dist/server/modules/file/file.service.js.map +1 -1
  97. package/dist/test/test.helper.d.ts +1 -0
  98. package/dist/test/test.helper.js +26 -6
  99. package/dist/test/test.helper.js.map +1 -1
  100. package/dist/tsconfig.build.tsbuildinfo +1 -1
  101. package/docs/REQUEST-LIFECYCLE.md +60 -1
  102. package/migration-guides/11.34.x-to-11.35.x.md +832 -0
  103. package/package.json +1 -1
  104. package/src/core/common/decorators/nested-type.registry.ts +42 -0
  105. package/src/core/common/decorators/restricted.decorator.ts +149 -21
  106. package/src/core/common/decorators/restrictions-checked.marker.ts +87 -0
  107. package/src/core/common/decorators/unified-field.decorator.ts +4 -3
  108. package/src/core/common/enums/role.enum.ts +116 -0
  109. package/src/core/common/helpers/execution-context-request.helper.ts +102 -0
  110. package/src/core/common/helpers/graphql-ws-context.helper.ts +192 -0
  111. package/src/core/common/helpers/gridfs.helper.ts +18 -2
  112. package/src/core/common/interceptors/check-security.interceptor.ts +4 -1
  113. package/src/core/common/interceptors/response-model.interceptor.ts +3 -2
  114. package/src/core/common/interfaces/server-options.interface.ts +139 -7
  115. package/src/core/common/plugins/mongoose-system-role.plugin.ts +193 -0
  116. package/src/core/common/plugins/mongoose-tenant.plugin.ts +244 -12
  117. package/src/core/common/services/core-s3.service.ts +9 -1
  118. package/src/core/common/services/core-tenant-context.registry.ts +50 -0
  119. package/src/core/modules/auth/guards/roles.guard.ts +7 -5
  120. package/src/core/modules/better-auth/better-auth-roles.guard.ts +7 -13
  121. package/src/core/modules/file/INTEGRATION-CHECKLIST.md +95 -1
  122. package/src/core/modules/file/README.md +61 -0
  123. package/src/core/modules/file/core-file.service.ts +166 -9
  124. package/src/core/modules/file/file-access.helper.ts +149 -0
  125. package/src/core/modules/file/file-metadata.helper.ts +13 -5
  126. package/src/core/modules/file/file-roles.config.ts +202 -0
  127. package/src/core/modules/file/file-roles.helper.ts +11 -40
  128. package/src/core/modules/tenant/README.md +20 -1
  129. package/src/core/modules/tenant/core-role-scope.registry.ts +195 -0
  130. package/src/core/modules/tenant/core-tenant.guard.ts +92 -12
  131. package/src/core/modules/tenant/core-tenant.helpers.ts +139 -7
  132. package/src/core/modules/tenant/core-tenant.module.ts +12 -0
  133. package/src/core/modules/tenant/core-tenant.service.ts +56 -0
  134. package/src/core/modules/tus/README.md +46 -7
  135. package/src/core/modules/tus/core-tus.service.ts +94 -5
  136. package/src/core/modules/tus/index.ts +1 -0
  137. package/src/core/modules/tus/tus.constants.ts +17 -1
  138. package/src/core/modules/user/core-user.service.ts +12 -0
  139. package/src/core/modules/user/inputs/core-user.input.ts +28 -2
  140. package/src/core.module.ts +62 -1
  141. package/src/index.ts +3 -0
  142. package/src/server/modules/file/file.service.ts +45 -2
  143. package/src/test/test.helper.ts +54 -11
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.roleScopeRegistry = exports.CoreRoleScopeRegistry = exports.RoleScope = void 0;
4
+ const role_enum_1 = require("../../common/enums/role.enum");
5
+ const config_service_1 = require("../../common/services/config.service");
6
+ const core_tenant_enums_1 = require("./core-tenant.enums");
7
+ var RoleScope;
8
+ (function (RoleScope) {
9
+ RoleScope["GLOBAL"] = "global";
10
+ RoleScope["SYSTEM"] = "system";
11
+ RoleScope["TENANT"] = "tenant";
12
+ RoleScope["UNKNOWN"] = "unknown";
13
+ })(RoleScope || (exports.RoleScope = RoleScope = {}));
14
+ class CoreRoleScopeRegistry {
15
+ sources = [];
16
+ clear() {
17
+ this.sources.length = 0;
18
+ }
19
+ conflicts() {
20
+ const global = this.collect((source) => source.globalRoles());
21
+ const tenant = this.collect((source) => source.tenantRoles());
22
+ return [...global].filter((role) => tenant.has(role)).sort();
23
+ }
24
+ isTenantRole(role) {
25
+ return this.scopeOf(role) === RoleScope.TENANT;
26
+ }
27
+ register(source) {
28
+ this.sources.push(source);
29
+ }
30
+ scopeOf(role) {
31
+ if (typeof role !== 'string') {
32
+ return RoleScope.UNKNOWN;
33
+ }
34
+ if ((0, role_enum_1.isSystemRole)(role) || (0, role_enum_1.looksLikeSystemRole)(role)) {
35
+ return RoleScope.SYSTEM;
36
+ }
37
+ if (role_enum_1.GLOBAL_ONLY_ROLES.includes(role) || this.collect((source) => source.globalRoles()).has(role)) {
38
+ return RoleScope.GLOBAL;
39
+ }
40
+ if (this.collect((source) => source.tenantRoles()).has(role)) {
41
+ return RoleScope.TENANT;
42
+ }
43
+ return RoleScope.UNKNOWN;
44
+ }
45
+ hasTenantKnowledge() {
46
+ return this.collect((source) => source.tenantRoles()).size > 0;
47
+ }
48
+ split(requiredRoles) {
49
+ const result = { global: [], system: [], tenant: [], unknown: [] };
50
+ for (const role of requiredRoles ?? []) {
51
+ switch (this.scopeOf(role)) {
52
+ case RoleScope.GLOBAL:
53
+ result.global.push(role);
54
+ break;
55
+ case RoleScope.SYSTEM:
56
+ result.system.push(role);
57
+ break;
58
+ case RoleScope.TENANT:
59
+ result.tenant.push(role);
60
+ break;
61
+ default:
62
+ result.unknown.push(role);
63
+ }
64
+ }
65
+ return result;
66
+ }
67
+ configSource() {
68
+ return {
69
+ globalRoles: () => config_service_1.ConfigService.configFastButReadOnly?.multiTenancy?.globalOnlyRoles ?? [],
70
+ tenantRoles: () => {
71
+ const config = config_service_1.ConfigService.configFastButReadOnly?.multiTenancy;
72
+ return [
73
+ ...Object.keys(config?.roleHierarchy ?? core_tenant_enums_1.DEFAULT_ROLE_HIERARCHY),
74
+ ...(config?.additionalMembershipRoles ?? []),
75
+ ];
76
+ },
77
+ };
78
+ }
79
+ collect(pick) {
80
+ const collected = new Set();
81
+ for (const source of [this.configSource(), ...this.sources]) {
82
+ for (const role of pick(source) ?? []) {
83
+ if (typeof role === 'string' && role.length) {
84
+ collected.add(role);
85
+ }
86
+ }
87
+ }
88
+ return collected;
89
+ }
90
+ }
91
+ exports.CoreRoleScopeRegistry = CoreRoleScopeRegistry;
92
+ exports.roleScopeRegistry = new CoreRoleScopeRegistry();
93
+ //# sourceMappingURL=core-role-scope.registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-role-scope.registry.js","sourceRoot":"","sources":["../../../../src/core/modules/tenant/core-role-scope.registry.ts"],"names":[],"mappings":";;;AAAA,4DAAoG;AACpG,yEAAqE;AACrE,2DAA6D;AAkB7D,IAAY,SAYX;AAZD,WAAY,SAAS;IAEnB,8BAAiB,CAAA;IAGjB,8BAAiB,CAAA;IAGjB,8BAAiB,CAAA;IAGjB,gCAAmB,CAAA;AACrB,CAAC,EAZW,SAAS,yBAAT,SAAS,QAYpB;AA8BD,MAAa,qBAAqB;IACf,OAAO,GAAsB,EAAE,CAAC;IAGjD,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1B,CAAC;IAQD,SAAS;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/D,CAAC;IAGD,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC;IACjD,CAAC;IAGD,QAAQ,CAAC,MAAuB;QAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAQD,OAAO,CAAC,IAAY;QAClB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC,OAAO,CAAC;QAC3B,CAAC;QACD,IAAI,IAAA,wBAAY,EAAC,IAAI,CAAC,IAAI,IAAA,+BAAmB,EAAC,IAAI,CAAC,EAAE,CAAC;YACpD,OAAO,SAAS,CAAC,MAAM,CAAC;QAC1B,CAAC;QACD,IAAI,6BAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACjG,OAAO,SAAS,CAAC,MAAM,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,OAAO,SAAS,CAAC,MAAM,CAAC;QAC1B,CAAC;QACD,OAAO,SAAS,CAAC,OAAO,CAAC;IAC3B,CAAC;IAQD,kBAAkB;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACjE,CAAC;IAUD,KAAK,CAAC,aAAuB;QAC3B,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,EAAc,EAAE,MAAM,EAAE,EAAc,EAAE,MAAM,EAAE,EAAc,EAAE,OAAO,EAAE,EAAc,EAAE,CAAC;QACnH,KAAK,MAAM,IAAI,IAAI,aAAa,IAAI,EAAE,EAAE,CAAC;YACvC,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,KAAK,SAAS,CAAC,MAAM;oBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzB,MAAM;gBACR,KAAK,SAAS,CAAC,MAAM;oBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzB,MAAM;gBACR,KAAK,SAAS,CAAC,MAAM;oBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzB,MAAM;gBACR;oBACE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAWO,YAAY;QAClB,OAAO;YACL,WAAW,EAAE,GAAG,EAAE,CAAC,8BAAa,CAAC,qBAAqB,EAAE,YAAY,EAAE,eAAe,IAAI,EAAE;YAC3F,WAAW,EAAE,GAAG,EAAE;gBAChB,MAAM,MAAM,GAAG,8BAAa,CAAC,qBAAqB,EAAE,YAAY,CAAC;gBACjE,OAAO;oBACL,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,0CAAsB,CAAC;oBAC/D,GAAG,CAAC,MAAM,EAAE,yBAAyB,IAAI,EAAE,CAAC;iBAC7C,CAAC;YACJ,CAAC;SACF,CAAC;IACJ,CAAC;IAEO,OAAO,CAAC,IAAmD;QACjE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC5C,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AA3HD,sDA2HC;AASY,QAAA,iBAAiB,GAAG,IAAI,qBAAqB,EAAE,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { CanActivate, ExecutionContext, OnApplicationBootstrap, OnModuleDestroy } from '@nestjs/common';
2
2
  import { Reflector } from '@nestjs/core';
3
3
  import { Model } from 'mongoose';
4
+ import { ResolvedTenantContext } from '../../common/services/core-tenant-context.registry';
4
5
  import { CoreRedisService } from '../../common/services/core-redis.service';
5
6
  import { CoreTenantMemberModel } from './core-tenant-member.model';
6
7
  interface TenantCacheInvalidation {
@@ -21,6 +22,10 @@ export declare class CoreTenantGuard implements CanActivate, OnApplicationBootst
21
22
  private cleanupInterval;
22
23
  private lastSeenConfig;
23
24
  constructor(reflector: Reflector, memberModel: Model<CoreTenantMemberModel>, redisService?: CoreRedisService);
25
+ resolveTenantContext(user: {
26
+ id: string;
27
+ roles?: string[];
28
+ } | undefined, headerTenantId?: string): Promise<ResolvedTenantContext>;
24
29
  onApplicationBootstrap(): Promise<void>;
25
30
  onModuleDestroy(): void;
26
31
  invalidateUser(userId: string): void;
@@ -20,7 +20,9 @@ const graphql_1 = require("@nestjs/graphql");
20
20
  const mongoose_1 = require("@nestjs/mongoose");
21
21
  const mongoose_2 = require("mongoose");
22
22
  const role_enum_1 = require("../../common/enums/role.enum");
23
+ const execution_context_request_helper_1 = require("../../common/helpers/execution-context-request.helper");
23
24
  const config_service_1 = require("../../common/services/config.service");
25
+ const core_tenant_context_registry_1 = require("../../common/services/core-tenant-context.registry");
24
26
  const core_redis_service_1 = require("../../common/services/core-redis.service");
25
27
  const error_codes_1 = require("../error-code/error-codes");
26
28
  const core_tenant_decorators_1 = require("./core-tenant.decorators");
@@ -48,6 +50,35 @@ let CoreTenantGuard = class CoreTenantGuard {
48
50
  if (this.cleanupInterval.unref) {
49
51
  this.cleanupInterval.unref();
50
52
  }
53
+ (0, core_tenant_context_registry_1.setTenantContextResolver)({
54
+ resolve: (user, headerTenantId) => this.resolveTenantContext(user, headerTenantId),
55
+ });
56
+ }
57
+ async resolveTenantContext(user, headerTenantId) {
58
+ const config = config_service_1.ConfigService.configFastButReadOnly?.multiTenancy;
59
+ if (!config || config.enabled === false) {
60
+ return {};
61
+ }
62
+ const trimmed = headerTenantId && typeof headerTenantId === 'string' && headerTenantId.length <= 128
63
+ ? headerTenantId.trim()
64
+ : undefined;
65
+ const adminBypass = config.adminBypass !== false;
66
+ if (adminBypass && user?.roles?.includes(role_enum_1.RoleEnum.ADMIN)) {
67
+ return trimmed ? { isAdminBypass: true, tenantId: trimmed } : { isAdminBypass: true };
68
+ }
69
+ if (!user?.id) {
70
+ return {};
71
+ }
72
+ if (trimmed) {
73
+ const membership = await this.findMembershipCached(user.id, trimmed);
74
+ if (!membership) {
75
+ return {};
76
+ }
77
+ return { tenantId: trimmed, tenantRole: membership.role };
78
+ }
79
+ const carrier = { user: { id: user.id } };
80
+ await this.resolveUserTenantIds(carrier);
81
+ return { tenantIds: carrier.tenantIds ?? [] };
51
82
  }
52
83
  async onApplicationBootstrap() {
53
84
  if (!this.redisService?.enabled) {
@@ -197,7 +228,11 @@ let CoreTenantGuard = class CoreTenantGuard {
197
228
  }
198
229
  const memberRole = membership.role;
199
230
  if (checkableRoles.length > 0) {
200
- if (!(0, core_tenant_helpers_1.checkRoleAccess)(checkableRoles, undefined, memberRole)) {
231
+ const { global: globalRoles } = (0, core_tenant_helpers_1.resolveGlobalAndTenantRoles)(checkableRoles);
232
+ const tenantRoles = (0, core_tenant_helpers_1.tenantSatisfiableRoles)(checkableRoles);
233
+ const satisfiedGlobally = globalRoles.some((r) => user.roles?.includes(r));
234
+ const satisfiedByTenant = tenantRoles.length > 0 && (0, core_tenant_helpers_1.checkRoleAccess)(tenantRoles, undefined, memberRole);
235
+ if (!satisfiedGlobally && !satisfiedByTenant) {
201
236
  throw new common_1.ForbiddenException('Insufficient tenant role');
202
237
  }
203
238
  }
@@ -268,16 +303,7 @@ let CoreTenantGuard = class CoreTenantGuard {
268
303
  }
269
304
  }
270
305
  getRequest(context) {
271
- if (context.getType() === 'graphql') {
272
- const ctx = graphql_1.GqlExecutionContext.create(context);
273
- return ctx.getContext()?.req;
274
- }
275
- try {
276
- return context.switchToHttp().getRequest();
277
- }
278
- catch {
279
- return null;
280
- }
306
+ return (0, execution_context_request_helper_1.resolveGuardRequest)(context, (ctx) => graphql_1.GqlExecutionContext.create(ctx).getContext()) ?? null;
281
307
  }
282
308
  applyInvalidation(message) {
283
309
  let parsed;
@@ -1 +1 @@
1
- {"version":3,"file":"core-tenant.guard.js","sourceRoot":"","sources":["../../../../src/core/modules/tenant/core-tenant.guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core-tenant.guard.js","sourceRoot":"","sources":["../../../../src/core/modules/tenant/core-tenant.guard.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,14 @@
1
+ import { RoleScopeSource } from './core-role-scope.registry';
1
2
  export declare function mergeRolesMetadata(meta: (string[] | undefined)[]): string[];
2
3
  export declare function getRoleHierarchy(): Record<string, number>;
3
- export declare function isSystemRole(role: string): boolean;
4
+ export { GLOBAL_ONLY_ROLES, isForbiddenMembershipRole, isGlobalOnlyRole, isSystemRole, looksLikeGlobalOnlyRole, looksLikeSystemRole, SYSTEM_ROLE_PREFIX, } from '../../common/enums/role.enum';
5
+ export declare const configRoleScopeSource: RoleScopeSource;
6
+ export declare function assertRoleVocabularyIsCoherent(): void;
7
+ export declare function resolveGlobalAndTenantRoles(requiredRoles: string[]): {
8
+ global: string[];
9
+ tenant: string[];
10
+ };
11
+ export declare function tenantSatisfiableRoles(requiredRoles: string[]): string[];
4
12
  export declare function isMultiTenancyActive(): boolean;
5
13
  export declare function isHierarchyRole(role: string): boolean;
6
14
  export declare function getMinRequiredLevel(roles: string[]): number | undefined;
@@ -1,23 +1,84 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.configRoleScopeSource = exports.SYSTEM_ROLE_PREFIX = exports.looksLikeSystemRole = exports.looksLikeGlobalOnlyRole = exports.isSystemRole = exports.isGlobalOnlyRole = exports.isForbiddenMembershipRole = exports.GLOBAL_ONLY_ROLES = void 0;
3
4
  exports.mergeRolesMetadata = mergeRolesMetadata;
4
5
  exports.getRoleHierarchy = getRoleHierarchy;
5
- exports.isSystemRole = isSystemRole;
6
+ exports.assertRoleVocabularyIsCoherent = assertRoleVocabularyIsCoherent;
7
+ exports.resolveGlobalAndTenantRoles = resolveGlobalAndTenantRoles;
8
+ exports.tenantSatisfiableRoles = tenantSatisfiableRoles;
6
9
  exports.isMultiTenancyActive = isMultiTenancyActive;
7
10
  exports.isHierarchyRole = isHierarchyRole;
8
11
  exports.getMinRequiredLevel = getMinRequiredLevel;
9
12
  exports.checkRoleAccess = checkRoleAccess;
13
+ const role_enum_1 = require("../../common/enums/role.enum");
10
14
  const config_service_1 = require("../../common/services/config.service");
15
+ const core_role_scope_registry_1 = require("./core-role-scope.registry");
11
16
  const core_tenant_enums_1 = require("./core-tenant.enums");
12
- const SYSTEM_ROLE_PREFIX = 's_';
13
17
  function mergeRolesMetadata(meta) {
14
18
  return meta[0] ? (meta[1] ? [...meta[0], ...meta[1]] : meta[0]) : meta[1] || [];
15
19
  }
16
20
  function getRoleHierarchy() {
17
21
  return config_service_1.ConfigService.configFastButReadOnly?.multiTenancy?.roleHierarchy ?? core_tenant_enums_1.DEFAULT_ROLE_HIERARCHY;
18
22
  }
19
- function isSystemRole(role) {
20
- return role.startsWith(SYSTEM_ROLE_PREFIX);
23
+ var role_enum_2 = require("../../common/enums/role.enum");
24
+ Object.defineProperty(exports, "GLOBAL_ONLY_ROLES", { enumerable: true, get: function () { return role_enum_2.GLOBAL_ONLY_ROLES; } });
25
+ Object.defineProperty(exports, "isForbiddenMembershipRole", { enumerable: true, get: function () { return role_enum_2.isForbiddenMembershipRole; } });
26
+ Object.defineProperty(exports, "isGlobalOnlyRole", { enumerable: true, get: function () { return role_enum_2.isGlobalOnlyRole; } });
27
+ Object.defineProperty(exports, "isSystemRole", { enumerable: true, get: function () { return role_enum_2.isSystemRole; } });
28
+ Object.defineProperty(exports, "looksLikeGlobalOnlyRole", { enumerable: true, get: function () { return role_enum_2.looksLikeGlobalOnlyRole; } });
29
+ Object.defineProperty(exports, "looksLikeSystemRole", { enumerable: true, get: function () { return role_enum_2.looksLikeSystemRole; } });
30
+ Object.defineProperty(exports, "SYSTEM_ROLE_PREFIX", { enumerable: true, get: function () { return role_enum_2.SYSTEM_ROLE_PREFIX; } });
31
+ exports.configRoleScopeSource = {
32
+ globalRoles: () => config_service_1.ConfigService.configFastButReadOnly?.multiTenancy?.globalOnlyRoles ?? [],
33
+ tenantRoles: () => {
34
+ const config = config_service_1.ConfigService.configFastButReadOnly?.multiTenancy;
35
+ return [
36
+ ...Object.keys(config?.roleHierarchy ?? core_tenant_enums_1.DEFAULT_ROLE_HIERARCHY),
37
+ ...(config?.additionalMembershipRoles ?? []),
38
+ ];
39
+ },
40
+ };
41
+ function assertRoleVocabularyIsCoherent() {
42
+ const config = config_service_1.ConfigService.configFastButReadOnly?.multiTenancy;
43
+ if (!config || config.enabled === false) {
44
+ return;
45
+ }
46
+ const hierarchy = Object.keys(config.roleHierarchy ?? core_tenant_enums_1.DEFAULT_ROLE_HIERARCHY);
47
+ const additional = config.additionalMembershipRoles ?? [];
48
+ const declaredGlobal = config.globalOnlyRoles ?? [];
49
+ const reserved = [...hierarchy, ...additional].filter((role) => (0, role_enum_1.isForbiddenMembershipRole)(role));
50
+ if (reserved.length) {
51
+ throw new Error(`multiTenancy: tenant role(s) [${reserved.join(', ')}] use a reserved framework role name. ` +
52
+ 'A tenant role of that name would be compared against the framework role by exact string match, ' +
53
+ 'letting a tenant owner grant themselves platform authority. Rename them (e.g. "tenantAdmin") ' +
54
+ 'and declare platform-wide roles via multiTenancy.globalOnlyRoles.');
55
+ }
56
+ const both = declaredGlobal.filter((role) => hierarchy.includes(role) || additional.includes(role));
57
+ if (both.length) {
58
+ throw new Error(`multiTenancy: role(s) [${both.join(', ')}] are declared BOTH in globalOnlyRoles and as tenant roles. ` +
59
+ 'Each role must resolve against exactly one source (user.roles for global, membership.role for tenant).');
60
+ }
61
+ const systemGlobals = declaredGlobal.filter((role) => (0, role_enum_1.looksLikeSystemRole)(role));
62
+ if (systemGlobals.length) {
63
+ throw new Error(`multiTenancy.globalOnlyRoles contains system role(s) [${systemGlobals.join(', ')}]. ` +
64
+ 'System roles are runtime-context checks and are never stored or granted.');
65
+ }
66
+ }
67
+ function resolveGlobalAndTenantRoles(requiredRoles) {
68
+ const global = [];
69
+ const tenant = [];
70
+ for (const role of requiredRoles ?? []) {
71
+ const scope = core_role_scope_registry_1.roleScopeRegistry.scopeOf(role);
72
+ (scope === core_role_scope_registry_1.RoleScope.GLOBAL || (0, role_enum_1.isGlobalOnlyRole)(role) ? global : tenant).push(role);
73
+ }
74
+ return { global, tenant };
75
+ }
76
+ function tenantSatisfiableRoles(requiredRoles) {
77
+ const candidates = resolveGlobalAndTenantRoles(requiredRoles).tenant;
78
+ if (!config_service_1.ConfigService.configFastButReadOnly?.multiTenancy?.strictMembershipRoles) {
79
+ return candidates;
80
+ }
81
+ return candidates.filter((role) => core_role_scope_registry_1.roleScopeRegistry.isTenantRole(role));
21
82
  }
22
83
  function isMultiTenancyActive() {
23
84
  const config = config_service_1.ConfigService.configFastButReadOnly?.multiTenancy;
@@ -1 +1 @@
1
- {"version":3,"file":"core-tenant.helpers.js","sourceRoot":"","sources":["../../../../src/core/modules/tenant/core-tenant.helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core-tenant.helpers.js","sourceRoot":"","sources":["../../../../src/core/modules/tenant/core-tenant.helpers.ts"],"names":[],"mappings":"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"}
@@ -11,12 +11,17 @@ exports.CoreTenantModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
12
  const core_1 = require("@nestjs/core");
13
13
  const mongoose_1 = require("@nestjs/mongoose");
14
+ const core_role_scope_registry_1 = require("./core-role-scope.registry");
14
15
  const core_tenant_member_model_1 = require("./core-tenant-member.model");
15
16
  const core_tenant_enums_1 = require("./core-tenant.enums");
17
+ const core_tenant_helpers_1 = require("./core-tenant.helpers");
16
18
  const core_tenant_guard_1 = require("./core-tenant.guard");
17
19
  const core_tenant_service_1 = require("./core-tenant.service");
18
20
  let CoreTenantModule = CoreTenantModule_1 = class CoreTenantModule {
19
21
  static forRoot(options = {}) {
22
+ core_role_scope_registry_1.roleScopeRegistry.clear();
23
+ core_role_scope_registry_1.roleScopeRegistry.register(core_tenant_helpers_1.configRoleScopeSource);
24
+ (0, core_tenant_helpers_1.assertRoleVocabularyIsCoherent)();
20
25
  const MemberModel = options.memberModel || core_tenant_member_model_1.CoreTenantMemberModel;
21
26
  const Guard = options.guard || core_tenant_guard_1.CoreTenantGuard;
22
27
  const Service = options.service || core_tenant_service_1.CoreTenantService;
@@ -1 +1 @@
1
- {"version":3,"file":"core-tenant.module.js","sourceRoot":"","sources":["../../../../src/core/modules/tenant/core-tenant.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAkF;AAClF,uCAAyC;AACzC,+CAAgF;AAGhF,yEAAmE;AACnE,2DAAgE;AAChE,2DAAsD;AACtD,+DAA0D;AAkDnD,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAC3B,MAAM,CAAC,OAAO,CAAC,UAAmC,EAAE;QAClD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,gDAAqB,CAAC;QACjE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,mCAAe,CAAC;QAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,uCAAiB,CAAC;QACrD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,6CAAyB,CAAC;QAEjE,MAAM,YAAY,GAAG,wBAAa,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAG/D,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAEtD,MAAM,SAAS,GAAU;YACvB;gBACE,OAAO,EAAE,uCAAiB;gBAC1B,QAAQ,EAAE,OAAO;aAClB;YAMD,KAAK;YACL,GAAG,CAAC,KAAK,KAAK,mCAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,mCAAe,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YACxF,EAAE,OAAO,EAAE,gBAAS,EAAE,WAAW,EAAE,KAAK,EAAE;SAC3C,CAAC;QAIF,IAAI,SAAS,KAAK,6CAAyB,EAAE,CAAC;YAC5C,SAAS,CAAC,IAAI,CAAC;gBACb,OAAO,EAAE,IAAA,wBAAa,EAAC,6CAAyB,CAAC;gBACjD,UAAU,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,KAAK;gBACxC,MAAM,EAAE,CAAC,IAAA,wBAAa,EAAC,SAAS,CAAC,CAAC;aACnC,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,uCAAiB,CAAC;YAC5B,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,yBAAc,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;YACjF,MAAM,EAAE,kBAAgB;YACxB,SAAS;SACV,CAAC;IACJ,CAAC;CACF,CAAA;AA/CY,4CAAgB;2BAAhB,gBAAgB;IAF5B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,gBAAgB,CA+C5B"}
1
+ {"version":3,"file":"core-tenant.module.js","sourceRoot":"","sources":["../../../../src/core/modules/tenant/core-tenant.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAkF;AAClF,uCAAyC;AACzC,+CAAgF;AAGhF,yEAA+D;AAC/D,yEAAmE;AACnE,2DAAgE;AAChE,+DAA8F;AAC9F,2DAAsD;AACtD,+DAA0D;AAkDnD,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAC3B,MAAM,CAAC,OAAO,CAAC,UAAmC,EAAE;QAOlD,4CAAiB,CAAC,KAAK,EAAE,CAAC;QAC1B,4CAAiB,CAAC,QAAQ,CAAC,2CAAqB,CAAC,CAAC;QAClD,IAAA,oDAA8B,GAAE,CAAC;QAEjC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,gDAAqB,CAAC;QACjE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,mCAAe,CAAC;QAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,uCAAiB,CAAC;QACrD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,6CAAyB,CAAC;QAEjE,MAAM,YAAY,GAAG,wBAAa,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAG/D,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAEtD,MAAM,SAAS,GAAU;YACvB;gBACE,OAAO,EAAE,uCAAiB;gBAC1B,QAAQ,EAAE,OAAO;aAClB;YAMD,KAAK;YACL,GAAG,CAAC,KAAK,KAAK,mCAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,mCAAe,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YACxF,EAAE,OAAO,EAAE,gBAAS,EAAE,WAAW,EAAE,KAAK,EAAE;SAC3C,CAAC;QAIF,IAAI,SAAS,KAAK,6CAAyB,EAAE,CAAC;YAC5C,SAAS,CAAC,IAAI,CAAC;gBACb,OAAO,EAAE,IAAA,wBAAa,EAAC,6CAAyB,CAAC;gBACjD,UAAU,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,KAAK;gBACxC,MAAM,EAAE,CAAC,IAAA,wBAAa,EAAC,SAAS,CAAC,CAAC;aACnC,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,uCAAiB,CAAC;YAC5B,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,yBAAc,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;YACjF,MAAM,EAAE,kBAAgB;YACxB,SAAS;SACV,CAAC;IACJ,CAAC;CACF,CAAA;AAzDY,4CAAgB;2BAAhB,gBAAgB;IAF5B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,gBAAgB,CAyD5B"}
@@ -17,3 +17,4 @@ export declare class CoreTenantService {
17
17
  updateMemberRole(tenantId: string, userId: string, role: string): Promise<CoreTenantMemberModel>;
18
18
  assertNotLastOwner(tenantId: string, userId: string): Promise<void>;
19
19
  }
20
+ export declare function assertAssignableMembershipRole(role: string): void;
@@ -14,9 +14,11 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
14
  var CoreTenantService_1;
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.CoreTenantService = void 0;
17
+ exports.assertAssignableMembershipRole = assertAssignableMembershipRole;
17
18
  const common_1 = require("@nestjs/common");
18
19
  const mongoose_1 = require("@nestjs/mongoose");
19
20
  const mongoose_2 = require("mongoose");
21
+ const role_enum_1 = require("../../common/enums/role.enum");
20
22
  const config_service_1 = require("../../common/services/config.service");
21
23
  const request_context_service_1 = require("../../common/services/request-context.service");
22
24
  const core_tenant_enums_1 = require("./core-tenant.enums");
@@ -63,6 +65,7 @@ let CoreTenantService = CoreTenantService_1 = class CoreTenantService {
63
65
  throw new common_1.BadRequestException('userId must not be empty');
64
66
  }
65
67
  const effectiveRole = role ?? this.getDefaultRole();
68
+ assertAssignableMembershipRole(effectiveRole);
66
69
  const existing = await this.getMembership(tenantId, userId);
67
70
  if (existing) {
68
71
  if (existing.status === core_tenant_enums_1.TenantMemberStatus.ACTIVE) {
@@ -125,6 +128,7 @@ let CoreTenantService = CoreTenantService_1 = class CoreTenantService {
125
128
  if (!role?.trim()) {
126
129
  throw new common_1.BadRequestException('role must not be empty');
127
130
  }
131
+ assertAssignableMembershipRole(role);
128
132
  const highestRole = this.getHighestRole();
129
133
  const existing = await this.getMembership(tenantId, userId);
130
134
  if (existing?.role === highestRole && role !== highestRole) {
@@ -167,4 +171,25 @@ exports.CoreTenantService = CoreTenantService = CoreTenantService_1 = __decorate
167
171
  __metadata("design:paramtypes", [mongoose_2.Model,
168
172
  core_tenant_guard_1.CoreTenantGuard])
169
173
  ], CoreTenantService);
174
+ function assertAssignableMembershipRole(role) {
175
+ if ((0, role_enum_1.looksLikeSystemRole)(role)) {
176
+ throw new common_1.BadRequestException(`A system role (${role_enum_1.SYSTEM_ROLE_PREFIX}*) must never be used as a tenant membership role: ${role}`);
177
+ }
178
+ if ((0, role_enum_1.looksLikeGlobalOnlyRole)(role)) {
179
+ throw new common_1.BadRequestException(`"${role}" is a global role and must never be used as a tenant membership role — ` +
180
+ 'use a tenant-specific name such as "tenantAdmin" instead');
181
+ }
182
+ const config = config_service_1.ConfigService.configFastButReadOnly?.multiTenancy;
183
+ if (config?.strictMembershipRoles) {
184
+ const declared = new Set([
185
+ ...Object.keys(config.roleHierarchy ?? core_tenant_enums_1.DEFAULT_ROLE_HIERARCHY),
186
+ ...(config.additionalMembershipRoles ?? []),
187
+ ]);
188
+ if (!declared.has(role)) {
189
+ throw new common_1.BadRequestException(`"${role}" is not a declared tenant role. Declared: [${[...declared].sort().join(', ')}]. ` +
190
+ 'Add it to multiTenancy.roleHierarchy or multiTenancy.additionalMembershipRoles, ' +
191
+ 'or disable multiTenancy.strictMembershipRoles.');
192
+ }
193
+ }
194
+ }
170
195
  //# sourceMappingURL=core-tenant.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"core-tenant.service.js","sourceRoot":"","sources":["../../../../src/core/modules/tenant/core-tenant.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core-tenant.service.js","sourceRoot":"","sources":["../../../../src/core/modules/tenant/core-tenant.service.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,8 @@ export declare class CoreTusService implements OnModuleDestroy, OnModuleInit {
42
42
  protected deleteStagedObjects(uploadId: string): Promise<void>;
43
43
  protected isMissingUploadError(error: any): boolean;
44
44
  protected onUploadTerminate(upload: Upload): Promise<void>;
45
+ protected readRequestUserId(req: any): string | undefined;
46
+ protected assertUploadOwnership(req: any, uploadId: string): Promise<void>;
45
47
  protected validateFileType(filetype: string | undefined): boolean;
46
48
  private createTusServer;
47
49
  private parseMetadata;
@@ -23,6 +23,7 @@ const core_s3_service_1 = require("../../common/services/core-s3.service");
23
23
  const file_storage_helper_1 = require("../file/file-storage.helper");
24
24
  const filesystem_file_helper_1 = require("../file/filesystem-file.helper");
25
25
  const s3_file_helper_1 = require("../file/s3-file.helper");
26
+ const tus_constants_1 = require("./tus.constants");
26
27
  const tus_redis_locker_1 = require("./tus-redis-locker");
27
28
  const tus_config_interface_1 = require("./interfaces/tus-config.interface");
28
29
  let CoreTusService = CoreTusService_1 = class CoreTusService {
@@ -87,6 +88,7 @@ let CoreTusService = CoreTusService_1 = class CoreTusService {
87
88
  const contentType = metadata.filetype || 'application/octet-stream';
88
89
  const fileMetadata = {
89
90
  originalMetadata: metadata,
91
+ ...(metadata[tus_constants_1.TUS_OWNER_METADATA_KEY] ? { ownerId: metadata[tus_constants_1.TUS_OWNER_METADATA_KEY] } : {}),
90
92
  tusUploadId: upload.id,
91
93
  uploadedAt: new Date(),
92
94
  };
@@ -249,6 +251,33 @@ let CoreTusService = CoreTusService_1 = class CoreTusService {
249
251
  this.logger.debug(`Upload ${upload.id} terminated`);
250
252
  await this.deleteStagedUpload(upload.id);
251
253
  }
254
+ readRequestUserId(req) {
255
+ const id = req?.user?.id ?? req?.runtime?.node?.req?.user?.id ?? req?.context?.user?.id;
256
+ return id === undefined || id === null || id === '' ? undefined : String(id);
257
+ }
258
+ async assertUploadOwnership(req, uploadId) {
259
+ if (!uploadId) {
260
+ return;
261
+ }
262
+ let owner;
263
+ try {
264
+ const upload = await this.tusServer?.datastore?.getUpload?.(uploadId);
265
+ const recorded = upload?.metadata?.[tus_constants_1.TUS_OWNER_METADATA_KEY];
266
+ owner = recorded === undefined || recorded === null ? undefined : String(recorded);
267
+ }
268
+ catch {
269
+ return;
270
+ }
271
+ if (!owner) {
272
+ return;
273
+ }
274
+ const caller = this.readRequestUserId(req);
275
+ if (caller && caller === owner) {
276
+ return;
277
+ }
278
+ this.logger.warn(`Refused tus request for upload ${uploadId}: caller is not its owner`);
279
+ throw Object.assign(new Error('Upload not found'), { body: 'Upload not found', status_code: 404 });
280
+ }
252
281
  validateFileType(filetype) {
253
282
  const allowedTypes = this.config.allowedTypes;
254
283
  if (!allowedTypes || allowedTypes.length === 0) {
@@ -278,10 +307,11 @@ let CoreTusService = CoreTusService_1 = class CoreTusService {
278
307
  datastore,
279
308
  ...(locker ? { locker } : {}),
280
309
  maxSize: this.config.maxSize,
281
- onUploadCreate: async (_req, upload) => {
310
+ onIncomingRequest: async (req, uploadId) => this.assertUploadOwnership(req, uploadId),
311
+ onUploadCreate: async (req, upload) => {
312
+ const metadata = { ...upload.metadata, [tus_constants_1.TUS_OWNER_METADATA_KEY]: this.readRequestUserId(req) ?? null };
282
313
  if (this.config.allowedTypes && this.config.allowedTypes.length > 0) {
283
- const metadata = this.parseMetadata(upload.metadata);
284
- const filetype = metadata.filetype;
314
+ const filetype = this.parseMetadata(upload.metadata).filetype;
285
315
  if (!this.validateFileType(filetype)) {
286
316
  const allowedList = this.config.allowedTypes.join(', ');
287
317
  this.logger.warn(`Upload rejected: file type '${filetype || 'unknown'}' not allowed. Allowed types: ${allowedList}`);
@@ -290,7 +320,7 @@ let CoreTusService = CoreTusService_1 = class CoreTusService {
290
320
  throw error;
291
321
  }
292
322
  }
293
- return {};
323
+ return { metadata };
294
324
  },
295
325
  onUploadFinish: async (_req, upload) => {
296
326
  try {