@lenne.tech/nest-server 11.34.1 → 11.35.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.
Files changed (151) 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/file.helper.js +3 -2
  25. package/dist/core/common/helpers/file.helper.js.map +1 -1
  26. package/dist/core/common/helpers/graphql-ws-context.helper.d.ts +15 -0
  27. package/dist/core/common/helpers/graphql-ws-context.helper.js +96 -0
  28. package/dist/core/common/helpers/graphql-ws-context.helper.js.map +1 -0
  29. package/dist/core/common/helpers/gridfs.helper.js +1 -1
  30. package/dist/core/common/helpers/gridfs.helper.js.map +1 -1
  31. package/dist/core/common/interceptors/check-security.interceptor.js +2 -1
  32. package/dist/core/common/interceptors/check-security.interceptor.js.map +1 -1
  33. package/dist/core/common/interceptors/response-model.interceptor.js +3 -2
  34. package/dist/core/common/interceptors/response-model.interceptor.js.map +1 -1
  35. package/dist/core/common/interfaces/server-options.interface.d.ts +5 -0
  36. package/dist/core/common/plugins/mongoose-system-role.plugin.d.ts +1 -0
  37. package/dist/core/common/plugins/mongoose-system-role.plugin.js +106 -0
  38. package/dist/core/common/plugins/mongoose-system-role.plugin.js.map +1 -0
  39. package/dist/core/common/plugins/mongoose-tenant.plugin.js +134 -9
  40. package/dist/core/common/plugins/mongoose-tenant.plugin.js.map +1 -1
  41. package/dist/core/common/services/core-s3.service.js +4 -1
  42. package/dist/core/common/services/core-s3.service.js.map +1 -1
  43. package/dist/core/common/services/core-tenant-context.registry.d.ts +10 -0
  44. package/dist/core/common/services/core-tenant-context.registry.js +12 -0
  45. package/dist/core/common/services/core-tenant-context.registry.js.map +1 -0
  46. package/dist/core/modules/auth/guards/roles.guard.d.ts +1 -1
  47. package/dist/core/modules/auth/guards/roles.guard.js +2 -2
  48. package/dist/core/modules/auth/guards/roles.guard.js.map +1 -1
  49. package/dist/core/modules/better-auth/better-auth-roles.guard.js +2 -10
  50. package/dist/core/modules/better-auth/better-auth-roles.guard.js.map +1 -1
  51. package/dist/core/modules/file/core-file-access-audit.initializer.d.ts +13 -0
  52. package/dist/core/modules/file/core-file-access-audit.initializer.js +109 -0
  53. package/dist/core/modules/file/core-file-access-audit.initializer.js.map +1 -0
  54. package/dist/core/modules/file/core-file.service.d.ts +3 -1
  55. package/dist/core/modules/file/core-file.service.js +62 -7
  56. package/dist/core/modules/file/core-file.service.js.map +1 -1
  57. package/dist/core/modules/file/file-access.helper.d.ts +18 -0
  58. package/dist/core/modules/file/file-access.helper.js +46 -0
  59. package/dist/core/modules/file/file-access.helper.js.map +1 -0
  60. package/dist/core/modules/file/file-metadata.helper.js +1 -1
  61. package/dist/core/modules/file/file-metadata.helper.js.map +1 -1
  62. package/dist/core/modules/file/file-roles.config.d.ts +31 -0
  63. package/dist/core/modules/file/file-roles.config.js +127 -0
  64. package/dist/core/modules/file/file-roles.config.js.map +1 -0
  65. package/dist/core/modules/file/file-roles.helper.d.ts +2 -2
  66. package/dist/core/modules/file/file-roles.helper.js +16 -34
  67. package/dist/core/modules/file/file-roles.helper.js.map +1 -1
  68. package/dist/core/modules/tenant/core-role-scope.registry.d.ts +28 -0
  69. package/dist/core/modules/tenant/core-role-scope.registry.js +93 -0
  70. package/dist/core/modules/tenant/core-role-scope.registry.js.map +1 -0
  71. package/dist/core/modules/tenant/core-tenant.guard.d.ts +5 -0
  72. package/dist/core/modules/tenant/core-tenant.guard.js +37 -11
  73. package/dist/core/modules/tenant/core-tenant.guard.js.map +1 -1
  74. package/dist/core/modules/tenant/core-tenant.helpers.d.ts +9 -1
  75. package/dist/core/modules/tenant/core-tenant.helpers.js +65 -4
  76. package/dist/core/modules/tenant/core-tenant.helpers.js.map +1 -1
  77. package/dist/core/modules/tenant/core-tenant.module.js +5 -0
  78. package/dist/core/modules/tenant/core-tenant.module.js.map +1 -1
  79. package/dist/core/modules/tenant/core-tenant.service.d.ts +1 -0
  80. package/dist/core/modules/tenant/core-tenant.service.js +25 -0
  81. package/dist/core/modules/tenant/core-tenant.service.js.map +1 -1
  82. package/dist/core/modules/tus/core-tus.service.d.ts +2 -0
  83. package/dist/core/modules/tus/core-tus.service.js +34 -4
  84. package/dist/core/modules/tus/core-tus.service.js.map +1 -1
  85. package/dist/core/modules/tus/index.d.ts +1 -0
  86. package/dist/core/modules/tus/index.js +1 -0
  87. package/dist/core/modules/tus/index.js.map +1 -1
  88. package/dist/core/modules/tus/tus.constants.d.ts +1 -0
  89. package/dist/core/modules/tus/tus.constants.js +2 -1
  90. package/dist/core/modules/tus/tus.constants.js.map +1 -1
  91. package/dist/core/modules/user/core-user.service.js +5 -0
  92. package/dist/core/modules/user/core-user.service.js.map +1 -1
  93. package/dist/core/modules/user/inputs/core-user.input.js +8 -0
  94. package/dist/core/modules/user/inputs/core-user.input.js.map +1 -1
  95. package/dist/core.module.js +13 -1
  96. package/dist/core.module.js.map +1 -1
  97. package/dist/index.d.ts +7 -0
  98. package/dist/index.js +7 -0
  99. package/dist/index.js.map +1 -1
  100. package/dist/server/modules/file/file.service.js +4 -1
  101. package/dist/server/modules/file/file.service.js.map +1 -1
  102. package/dist/test/test.helper.d.ts +1 -0
  103. package/dist/test/test.helper.js +26 -6
  104. package/dist/test/test.helper.js.map +1 -1
  105. package/dist/tsconfig.build.tsbuildinfo +1 -1
  106. package/docs/REQUEST-LIFECYCLE.md +60 -1
  107. package/migration-guides/11.34.x-to-11.35.x.md +846 -0
  108. package/migration-guides/11.35.0-to-11.35.1.md +152 -0
  109. package/package.json +1 -1
  110. package/src/core/common/decorators/nested-type.registry.ts +42 -0
  111. package/src/core/common/decorators/restricted.decorator.ts +149 -21
  112. package/src/core/common/decorators/restrictions-checked.marker.ts +87 -0
  113. package/src/core/common/decorators/unified-field.decorator.ts +4 -3
  114. package/src/core/common/enums/role.enum.ts +116 -0
  115. package/src/core/common/helpers/execution-context-request.helper.ts +102 -0
  116. package/src/core/common/helpers/file.helper.ts +11 -5
  117. package/src/core/common/helpers/graphql-ws-context.helper.ts +192 -0
  118. package/src/core/common/helpers/gridfs.helper.ts +18 -2
  119. package/src/core/common/interceptors/check-security.interceptor.ts +4 -1
  120. package/src/core/common/interceptors/response-model.interceptor.ts +3 -2
  121. package/src/core/common/interfaces/server-options.interface.ts +139 -7
  122. package/src/core/common/plugins/mongoose-system-role.plugin.ts +193 -0
  123. package/src/core/common/plugins/mongoose-tenant.plugin.ts +244 -12
  124. package/src/core/common/services/core-s3.service.ts +9 -1
  125. package/src/core/common/services/core-tenant-context.registry.ts +50 -0
  126. package/src/core/modules/auth/guards/roles.guard.ts +7 -5
  127. package/src/core/modules/better-auth/better-auth-roles.guard.ts +7 -13
  128. package/src/core/modules/file/INTEGRATION-CHECKLIST.md +95 -1
  129. package/src/core/modules/file/README.md +71 -0
  130. package/src/core/modules/file/core-file-access-audit.initializer.ts +164 -0
  131. package/src/core/modules/file/core-file.service.ts +166 -9
  132. package/src/core/modules/file/file-access.helper.ts +149 -0
  133. package/src/core/modules/file/file-metadata.helper.ts +13 -5
  134. package/src/core/modules/file/file-roles.config.ts +357 -0
  135. package/src/core/modules/file/file-roles.helper.ts +24 -60
  136. package/src/core/modules/tenant/README.md +20 -1
  137. package/src/core/modules/tenant/core-role-scope.registry.ts +195 -0
  138. package/src/core/modules/tenant/core-tenant.guard.ts +92 -12
  139. package/src/core/modules/tenant/core-tenant.helpers.ts +139 -7
  140. package/src/core/modules/tenant/core-tenant.module.ts +12 -0
  141. package/src/core/modules/tenant/core-tenant.service.ts +56 -0
  142. package/src/core/modules/tus/README.md +46 -7
  143. package/src/core/modules/tus/core-tus.service.ts +94 -5
  144. package/src/core/modules/tus/index.ts +1 -0
  145. package/src/core/modules/tus/tus.constants.ts +17 -1
  146. package/src/core/modules/user/core-user.service.ts +12 -0
  147. package/src/core/modules/user/inputs/core-user.input.ts +28 -2
  148. package/src/core.module.ts +72 -3
  149. package/src/index.ts +7 -0
  150. package/src/server/modules/file/file.service.ts +45 -2
  151. package/src/test/test.helper.ts +54 -11
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FILE_ROLE_MEMBERS = exports.FILE_ROLE_DEFAULTS = void 0;
4
+ exports.resolveRoles = resolveRoles;
5
+ exports.hasDeclaredFilePolicy = hasDeclaredFilePolicy;
6
+ exports.warnOnPresignedDownloadsWithRestrictedRoles = warnOnPresignedDownloadsWithRestrictedRoles;
7
+ exports.warnOnUndecidedFileAccess = warnOnUndecidedFileAccess;
8
+ exports.warnOnUndecidedEffectiveFileAccess = warnOnUndecidedEffectiveFileAccess;
9
+ const common_1 = require("@nestjs/common");
10
+ const role_enum_1 = require("../../common/enums/role.enum");
11
+ const logger = new common_1.Logger('CoreFileRoles');
12
+ exports.FILE_ROLE_DEFAULTS = {
13
+ deleteRoles: [role_enum_1.RoleEnum.ADMIN],
14
+ downloadRoles: [role_enum_1.RoleEnum.ADMIN],
15
+ uploadRoles: [role_enum_1.RoleEnum.ADMIN],
16
+ };
17
+ exports.FILE_ROLE_MEMBERS = [
18
+ { className: 'CoreFileController', key: 'downloadRoles', method: 'getFileById' },
19
+ { className: 'CoreFileController', key: 'downloadRoles', method: 'getFile' },
20
+ { className: 'CoreFileResolver', key: 'downloadRoles', method: 'getFileInfo' },
21
+ { className: 'CoreFileResolver', key: 'uploadRoles', method: 'uploadFile' },
22
+ { className: 'CoreFileResolver', key: 'uploadRoles', method: 'uploadFiles' },
23
+ { className: 'CoreFileResolver', key: 'deleteRoles', method: 'deleteFile' },
24
+ ];
25
+ function resolveRoles(key, config) {
26
+ const configured = config?.[key];
27
+ if (configured === undefined) {
28
+ return exports.FILE_ROLE_DEFAULTS[key];
29
+ }
30
+ if (!Array.isArray(configured) || configured.length === 0 || configured.some((role) => typeof role !== 'string')) {
31
+ logger.warn(`Ignoring file.${key}: expected a non-empty array of role strings, got ${JSON.stringify(configured)}. ` +
32
+ `Falling back to ${JSON.stringify(exports.FILE_ROLE_DEFAULTS[key])}.`);
33
+ return exports.FILE_ROLE_DEFAULTS[key];
34
+ }
35
+ return configured;
36
+ }
37
+ function hasDeclaredFilePolicy(options) {
38
+ return options.hasPerFileRule || !!(options.fileConfig?.access && options.fileConfig.access !== 'custom');
39
+ }
40
+ function warnOnPresignedDownloadsWithRestrictedRoles(s3Config, fileConfig) {
41
+ const presigned = s3Config?.presignedDownloads;
42
+ const presignedEnabled = presigned === true || (!!presigned && typeof presigned === 'object' && presigned.enabled !== false);
43
+ if (!presignedEnabled) {
44
+ return undefined;
45
+ }
46
+ const downloadRoles = resolveRoles('downloadRoles', fileConfig);
47
+ if (downloadRoles.includes(role_enum_1.RoleEnum.S_EVERYONE)) {
48
+ return undefined;
49
+ }
50
+ const message = `s3.presignedDownloads is enabled while file.downloadRoles restricts downloads to ` +
51
+ `${JSON.stringify(downloadRoles)}. A presigned URL is a BEARER capability: it is authorized ` +
52
+ `once, at issue time, and afterwards anyone holding it can fetch the object with no session, ` +
53
+ `from any IP, until it expires — the grant cannot be revoked in between, and it survives in ` +
54
+ `browser history, Referer headers and proxy logs. The role check therefore applies to ` +
55
+ `obtaining the link, not to reading the file. If these files are sensitive (personal or ` +
56
+ `medical data), set s3.presignedDownloads: false so the API streams them and re-checks ` +
57
+ `rights on every request.`;
58
+ logger.warn(message);
59
+ return message;
60
+ }
61
+ function warnOnUndecidedFileAccess(options) {
62
+ const { fileConfig, hasPerFileRule, multiTenancyEnabled } = options;
63
+ if (hasDeclaredFilePolicy({ fileConfig, hasPerFileRule })) {
64
+ return undefined;
65
+ }
66
+ const widened = [];
67
+ for (const key of ['deleteRoles', 'downloadRoles', 'uploadRoles']) {
68
+ const roles = resolveRoles(key, fileConfig);
69
+ if (roles.some((role) => role !== role_enum_1.RoleEnum.ADMIN)) {
70
+ widened.push(`file.${key}=${JSON.stringify(roles)}`);
71
+ }
72
+ }
73
+ if (!widened.length) {
74
+ return undefined;
75
+ }
76
+ const tenantNote = multiTenancyEnabled
77
+ ? ' multiTenancy is active, and the leak crosses tenants too: the file stores are reached outside ' +
78
+ 'Mongoose, so mongooseTenantPlugin never scopes them and these role names resolve against ' +
79
+ 'user.roles — a GLOBAL attribute — never against membership.role.'
80
+ : '';
81
+ const message = `The file gate is open beyond platform admins (${widened.join(', ')}), but no per-file policy is ` +
82
+ `declared: file.access is unset and CoreFileService.checkRights() is not overridden. Every holder ` +
83
+ `of such a role can therefore read, overwrite or delete EVERY file — and file ids are not secret, ` +
84
+ `they are ENUMERABLE (an ObjectId shares a per-process random part and an incrementing counter, so ` +
85
+ `one own upload reveals the neighbourhood), with no rate limit on the file routes.${tenantNote} ` +
86
+ `Declare the project class with file.access ('public' | 'authenticated' | 'owner' | 'tenant'), or ` +
87
+ `override checkRights() — see src/core/modules/file/README.md § Access control.`;
88
+ logger.warn(message);
89
+ return message;
90
+ }
91
+ function warnOnUndecidedEffectiveFileAccess(options) {
92
+ const { fileConfig, handlers, hasPerFileRule, multiTenancyEnabled } = options;
93
+ if (hasDeclaredFilePolicy({ fileConfig, hasPerFileRule })) {
94
+ return undefined;
95
+ }
96
+ const findings = [];
97
+ for (const handler of handlers) {
98
+ const configured = resolveRoles(handler.key, fileConfig);
99
+ const unexplained = handler.roles.filter((role) => role !== role_enum_1.RoleEnum.ADMIN && !configured.includes(role));
100
+ if (unexplained.length) {
101
+ findings.push(`${handler.member} → ${JSON.stringify([...new Set(unexplained)])}`);
102
+ }
103
+ }
104
+ if (!findings.length) {
105
+ return undefined;
106
+ }
107
+ const tenantNote = multiTenancyEnabled
108
+ ? ' multiTenancy is active, and the leak crosses tenants too: the file stores are reached outside ' +
109
+ 'Mongoose, so mongooseTenantPlugin never scopes them and these role names resolve against ' +
110
+ 'user.roles — a GLOBAL attribute — never against membership.role.'
111
+ : '';
112
+ const message = `A registered file endpoint is open beyond platform admins through roles declared in your own ` +
113
+ `class, not through configuration (${findings.join(', ')}), and no per-file policy is declared: ` +
114
+ `file.access is unset and CoreFileService.checkRights() is not overridden. Because the member is ` +
115
+ `RE-DECLARED, file.downloadRoles/uploadRoles/deleteRoles do NOT apply to it — decorator metadata ` +
116
+ `lives on the function object, so your override keeps its own @Roles() and the configuration ` +
117
+ `never reaches the route. Every holder of such a role can therefore read, overwrite or delete ` +
118
+ `EVERY file — and file ids are not secret, they are ENUMERABLE (an ObjectId shares a per-process ` +
119
+ `random part and an incrementing counter, so one own upload reveals the neighbourhood), with no ` +
120
+ `rate limit on the file routes.${tenantNote} Either inherit the member instead of re-declaring ` +
121
+ `it, so the knobs apply, or declare the per-file policy with file.access ` +
122
+ `('public' | 'authenticated' | 'owner' | 'tenant') or an overridden checkRights() — see ` +
123
+ `src/core/modules/file/README.md § Access control.`;
124
+ logger.warn(message);
125
+ return message;
126
+ }
127
+ //# sourceMappingURL=file-roles.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-roles.config.js","sourceRoot":"","sources":["../../../../src/core/modules/file/file-roles.config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { IFileConfig } from '../../common/interfaces/server-options.interface';
2
- export type FileRoleKey = 'deleteRoles' | 'downloadRoles' | 'uploadRoles';
3
- export declare const FILE_ROLE_DEFAULTS: Record<FileRoleKey, string[]>;
2
+ export { FILE_ROLE_DEFAULTS, FILE_ROLE_MEMBERS, resolveRoles, warnOnPresignedDownloadsWithRestrictedRoles, warnOnUndecidedEffectiveFileAccess, warnOnUndecidedFileAccess, } from './file-roles.config';
3
+ export type { FileEndpointClassName, FileRoleKey, ObservedFileHandler } from './file-roles.config';
4
4
  export declare function applyFileRoles(config?: IFileConfig): void;
@@ -1,50 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FILE_ROLE_DEFAULTS = void 0;
3
+ exports.warnOnUndecidedFileAccess = exports.warnOnUndecidedEffectiveFileAccess = exports.warnOnPresignedDownloadsWithRestrictedRoles = exports.resolveRoles = exports.FILE_ROLE_MEMBERS = exports.FILE_ROLE_DEFAULTS = void 0;
4
4
  exports.applyFileRoles = applyFileRoles;
5
5
  const common_1 = require("@nestjs/common");
6
- const role_enum_1 = require("../../common/enums/role.enum");
7
6
  const core_file_controller_1 = require("./core-file.controller");
8
7
  const core_file_resolver_1 = require("./core-file.resolver");
8
+ const file_roles_config_1 = require("./file-roles.config");
9
9
  const logger = new common_1.Logger('CoreFileRoles');
10
- exports.FILE_ROLE_DEFAULTS = {
11
- deleteRoles: [role_enum_1.RoleEnum.ADMIN],
12
- downloadRoles: [role_enum_1.RoleEnum.ADMIN],
13
- uploadRoles: [role_enum_1.RoleEnum.ADMIN],
10
+ var file_roles_config_2 = require("./file-roles.config");
11
+ Object.defineProperty(exports, "FILE_ROLE_DEFAULTS", { enumerable: true, get: function () { return file_roles_config_2.FILE_ROLE_DEFAULTS; } });
12
+ Object.defineProperty(exports, "FILE_ROLE_MEMBERS", { enumerable: true, get: function () { return file_roles_config_2.FILE_ROLE_MEMBERS; } });
13
+ Object.defineProperty(exports, "resolveRoles", { enumerable: true, get: function () { return file_roles_config_2.resolveRoles; } });
14
+ Object.defineProperty(exports, "warnOnPresignedDownloadsWithRestrictedRoles", { enumerable: true, get: function () { return file_roles_config_2.warnOnPresignedDownloadsWithRestrictedRoles; } });
15
+ Object.defineProperty(exports, "warnOnUndecidedEffectiveFileAccess", { enumerable: true, get: function () { return file_roles_config_2.warnOnUndecidedEffectiveFileAccess; } });
16
+ Object.defineProperty(exports, "warnOnUndecidedFileAccess", { enumerable: true, get: function () { return file_roles_config_2.warnOnUndecidedFileAccess; } });
17
+ const ENDPOINT_PROTOTYPES = {
18
+ CoreFileController: core_file_controller_1.CoreFileController.prototype,
19
+ CoreFileResolver: core_file_resolver_1.CoreFileResolver.prototype,
14
20
  };
15
- const ROLE_TARGETS = [
16
- {
17
- key: 'downloadRoles',
18
- member: 'CoreFileController.getFileById',
19
- owner: () => core_file_controller_1.CoreFileController.prototype.getFileById,
20
- },
21
- { key: 'downloadRoles', member: 'CoreFileController.getFile', owner: () => core_file_controller_1.CoreFileController.prototype.getFile },
22
- { key: 'downloadRoles', member: 'CoreFileResolver.getFileInfo', owner: () => core_file_resolver_1.CoreFileResolver.prototype.getFileInfo },
23
- { key: 'uploadRoles', member: 'CoreFileResolver.uploadFile', owner: () => core_file_resolver_1.CoreFileResolver.prototype.uploadFile },
24
- { key: 'uploadRoles', member: 'CoreFileResolver.uploadFiles', owner: () => core_file_resolver_1.CoreFileResolver.prototype.uploadFiles },
25
- { key: 'deleteRoles', member: 'CoreFileResolver.deleteFile', owner: () => core_file_resolver_1.CoreFileResolver.prototype.deleteFile },
26
- ];
27
- function resolveRoles(key, config) {
28
- const configured = config?.[key];
29
- if (configured === undefined) {
30
- return exports.FILE_ROLE_DEFAULTS[key];
31
- }
32
- if (!Array.isArray(configured) || configured.length === 0 || configured.some((role) => typeof role !== 'string')) {
33
- logger.warn(`Ignoring file.${key}: expected a non-empty array of role strings, got ${JSON.stringify(configured)}. ` +
34
- `Falling back to ${JSON.stringify(exports.FILE_ROLE_DEFAULTS[key])}.`);
35
- return exports.FILE_ROLE_DEFAULTS[key];
36
- }
37
- return configured;
38
- }
39
21
  function applyFileRoles(config) {
40
22
  const resolved = new Map();
41
- for (const { key, member, owner } of ROLE_TARGETS) {
23
+ for (const { className, key, method } of file_roles_config_1.FILE_ROLE_MEMBERS) {
42
24
  if (!resolved.has(key)) {
43
- resolved.set(key, resolveRoles(key, config));
25
+ resolved.set(key, (0, file_roles_config_1.resolveRoles)(key, config));
44
26
  }
45
- const target = owner();
27
+ const target = ENDPOINT_PROTOTYPES[className][method];
46
28
  if (typeof target !== 'function') {
47
- logger.warn(`Cannot apply file.${key}: ${member} is not a function — skipping.`);
29
+ logger.warn(`Cannot apply file.${key}: ${className}.${method} is not a function — skipping.`);
48
30
  continue;
49
31
  }
50
32
  Reflect.defineMetadata('roles', resolved.get(key), target);
@@ -1 +1 @@
1
- {"version":3,"file":"file-roles.helper.js","sourceRoot":"","sources":["../../../../src/core/modules/file/file-roles.helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-roles.helper.js","sourceRoot":"","sources":["../../../../src/core/modules/file/file-roles.helper.ts"],"names":[],"mappings":";;;AAyDA,wCAgBC;AAzED,2CAAwC;AAGxC,iEAA4D;AAC5D,6DAAwD;AACxD,2DAA0G;AAE1G,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,eAAe,CAAC,CAAC;AAK3C,yDAO6B;AAN3B,uHAAA,kBAAkB,OAAA;AAClB,sHAAA,iBAAiB,OAAA;AACjB,iHAAA,YAAY,OAAA;AACZ,gJAAA,2CAA2C,OAAA;AAC3C,uIAAA,kCAAkC,OAAA;AAClC,8HAAA,yBAAyB,OAAA;AAW3B,MAAM,mBAAmB,GAA2C;IAClE,kBAAkB,EAAE,yCAAkB,CAAC,SAAS;IAChD,gBAAgB,EAAE,qCAAgB,CAAC,SAAS;CAC7C,CAAC;AAyBF,SAAgB,cAAc,CAAC,MAAoB;IACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAElD,KAAK,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,qCAAiB,EAAE,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAA,gCAAY,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,MAAM,GAAI,mBAAmB,CAAC,SAAS,CAA6B,CAAC,MAAM,CAAC,CAAC;QACnF,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,qBAAqB,GAAG,KAAK,SAAS,IAAI,MAAM,gCAAgC,CAAC,CAAC;YAC9F,SAAS;QACX,CAAC;QAED,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
@@ -0,0 +1,28 @@
1
+ export declare enum RoleScope {
2
+ GLOBAL = "global",
3
+ SYSTEM = "system",
4
+ TENANT = "tenant",
5
+ UNKNOWN = "unknown"
6
+ }
7
+ export interface RoleScopeSource {
8
+ globalRoles(): Iterable<string>;
9
+ tenantRoles(): Iterable<string>;
10
+ }
11
+ export declare class CoreRoleScopeRegistry {
12
+ private readonly sources;
13
+ clear(): void;
14
+ conflicts(): string[];
15
+ isTenantRole(role: string): boolean;
16
+ register(source: RoleScopeSource): void;
17
+ scopeOf(role: string): RoleScope;
18
+ hasTenantKnowledge(): boolean;
19
+ split(requiredRoles: string[]): {
20
+ global: string[];
21
+ system: string[];
22
+ tenant: string[];
23
+ unknown: string[];
24
+ };
25
+ private configSource;
26
+ private collect;
27
+ }
28
+ export declare const roleScopeRegistry: CoreRoleScopeRegistry;
@@ -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":"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"}
@@ -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;