n8n 1.117.2 → 1.118.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 (97) hide show
  1. package/dist/auth/auth.service.d.ts +2 -1
  2. package/dist/auth/auth.service.js +5 -2
  3. package/dist/auth/auth.service.js.map +1 -1
  4. package/dist/build.tsbuildinfo +1 -1
  5. package/dist/controllers/project.controller.d.ts +2 -0
  6. package/dist/controllers/users.controller.d.ts +1 -1
  7. package/dist/environments.ee/source-control/source-control-export.service.ee.d.ts +1 -1
  8. package/dist/environments.ee/source-control/source-control-export.service.ee.js +16 -4
  9. package/dist/environments.ee/source-control/source-control-export.service.ee.js.map +1 -1
  10. package/dist/environments.ee/source-control/source-control-import.service.ee.d.ts +10 -3
  11. package/dist/environments.ee/source-control/source-control-import.service.ee.js +49 -20
  12. package/dist/environments.ee/source-control/source-control-import.service.ee.js.map +1 -1
  13. package/dist/environments.ee/source-control/source-control-status.service.ee.d.ts +8 -6
  14. package/dist/environments.ee/source-control/source-control-status.service.ee.js +25 -3
  15. package/dist/environments.ee/source-control/source-control-status.service.ee.js.map +1 -1
  16. package/dist/environments.ee/source-control/source-control.controller.ee.d.ts +8 -8
  17. package/dist/environments.ee/source-control/source-control.service.ee.d.ts +5 -6
  18. package/dist/environments.ee/source-control/source-control.service.ee.js +11 -8
  19. package/dist/environments.ee/source-control/source-control.service.ee.js.map +1 -1
  20. package/dist/environments.ee/source-control/types/exportable-project.d.ts +2 -0
  21. package/dist/environments.ee/source-control/types/exportable-variable.d.ts +7 -0
  22. package/dist/environments.ee/source-control/types/exportable-variable.js +3 -0
  23. package/dist/environments.ee/source-control/types/exportable-variable.js.map +1 -0
  24. package/dist/environments.ee/variables/variables.service.ee.d.ts +4 -1
  25. package/dist/environments.ee/variables/variables.service.ee.js +11 -4
  26. package/dist/environments.ee/variables/variables.service.ee.js.map +1 -1
  27. package/dist/executions/execution.service.d.ts +1 -0
  28. package/dist/executions/execution.service.js +15 -0
  29. package/dist/executions/execution.service.js.map +1 -1
  30. package/dist/modules/chat-hub/chat-hub.constants.d.ts +1 -0
  31. package/dist/modules/chat-hub/chat-hub.constants.js +13 -0
  32. package/dist/modules/chat-hub/chat-hub.constants.js.map +1 -0
  33. package/dist/modules/chat-hub/chat-hub.controller.js +26 -30
  34. package/dist/modules/chat-hub/chat-hub.controller.js.map +1 -1
  35. package/dist/modules/chat-hub/chat-hub.service.d.ts +17 -9
  36. package/dist/modules/chat-hub/chat-hub.service.js +308 -110
  37. package/dist/modules/chat-hub/chat-hub.service.js.map +1 -1
  38. package/dist/modules/chat-hub/chat-hub.types.d.ts +5 -2
  39. package/dist/modules/chat-hub/chat-message.repository.d.ts +3 -3
  40. package/dist/modules/chat-hub/chat-message.repository.js +18 -12
  41. package/dist/modules/chat-hub/chat-message.repository.js.map +1 -1
  42. package/dist/modules/chat-hub/chat-session.repository.d.ts +1 -1
  43. package/dist/modules/chat-hub/chat-session.repository.js +9 -8
  44. package/dist/modules/chat-hub/chat-session.repository.js.map +1 -1
  45. package/dist/modules/chat-hub/context-limits.d.ts +3 -3
  46. package/dist/modules/chat-hub/context-limits.js.map +1 -1
  47. package/dist/modules/chat-hub/dto/chat-models-request.dto.d.ts +1 -1
  48. package/dist/modules/chat-hub/stream-capturer.d.ts +3 -0
  49. package/dist/modules/chat-hub/stream-capturer.js +31 -0
  50. package/dist/modules/chat-hub/stream-capturer.js.map +1 -0
  51. package/dist/modules/mcp/mcp.controller.d.ts +1 -1
  52. package/dist/modules/mcp/mcp.controller.js +5 -20
  53. package/dist/modules/mcp/mcp.controller.js.map +1 -1
  54. package/dist/modules/mcp/mcp.service.d.ts +3 -1
  55. package/dist/modules/mcp/mcp.service.js +7 -4
  56. package/dist/modules/mcp/mcp.service.js.map +1 -1
  57. package/dist/modules/mcp/mcp.types.d.ts +5 -0
  58. package/dist/modules/mcp/tools/get-workflow-details.tool.d.ts +2 -1
  59. package/dist/modules/mcp/tools/get-workflow-details.tool.js +32 -5
  60. package/dist/modules/mcp/tools/get-workflow-details.tool.js.map +1 -1
  61. package/dist/modules/mcp/tools/search-workflows.tool.d.ts +2 -1
  62. package/dist/modules/mcp/tools/search-workflows.tool.js +39 -15
  63. package/dist/modules/mcp/tools/search-workflows.tool.js.map +1 -1
  64. package/dist/modules/provisioning.ee/provisioning.controller.ee.d.ts +1 -0
  65. package/dist/modules/provisioning.ee/provisioning.controller.ee.js +13 -0
  66. package/dist/modules/provisioning.ee/provisioning.controller.ee.js.map +1 -1
  67. package/dist/modules/provisioning.ee/provisioning.service.ee.d.ts +18 -2
  68. package/dist/modules/provisioning.ee/provisioning.service.ee.js +196 -2
  69. package/dist/modules/provisioning.ee/provisioning.service.ee.js.map +1 -1
  70. package/dist/public-api/v1/openapi.yml +41 -41
  71. package/dist/scaling/constants.d.ts +2 -2
  72. package/dist/scaling/pubsub/pubsub.event-map.d.ts +1 -0
  73. package/dist/scaling/pubsub/pubsub.types.d.ts +2 -1
  74. package/dist/server.d.ts +1 -0
  75. package/dist/server.js +10 -3
  76. package/dist/server.js.map +1 -1
  77. package/dist/services/frontend.service.d.ts +6 -1
  78. package/dist/services/frontend.service.js +21 -0
  79. package/dist/services/frontend.service.js.map +1 -1
  80. package/dist/sso.ee/oidc/oidc.service.ee.d.ts +4 -1
  81. package/dist/sso.ee/oidc/oidc.service.ee.js +21 -5
  82. package/dist/sso.ee/oidc/oidc.service.ee.js.map +1 -1
  83. package/dist/sso.ee/saml/routes/saml.controller.ee.d.ts +4 -1
  84. package/dist/sso.ee/saml/routes/saml.controller.ee.js +9 -2
  85. package/dist/sso.ee/saml/routes/saml.controller.ee.js.map +1 -1
  86. package/dist/sso.ee/saml/saml-helpers.js +2 -0
  87. package/dist/sso.ee/saml/saml-helpers.js.map +1 -1
  88. package/dist/sso.ee/saml/saml.service.ee.js +9 -0
  89. package/dist/sso.ee/saml/saml.service.ee.js.map +1 -1
  90. package/dist/telemetry/index.d.ts +3 -2
  91. package/dist/telemetry/index.js +7 -2
  92. package/dist/telemetry/index.js.map +1 -1
  93. package/dist/workflows/workflow-finder.service.d.ts +1 -0
  94. package/dist/workflows/workflows.controller.d.ts +8 -1
  95. package/dist/workflows/workflows.controller.js +20 -2
  96. package/dist/workflows/workflows.controller.js.map +1 -1
  97. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"get-workflow-details.tool.js","sourceRoot":"","sources":["../../../../src/modules/mcp/tools/get-workflow-details.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-workflow-details.tool.js","sourceRoot":"","sources":["../../../../src/modules/mcp/tools/get-workflow-details.tool.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { type User } from '@n8n/db';
2
2
  import z from 'zod';
3
3
  import type { ToolDefinition, SearchWorkflowsParams, SearchWorkflowsResult } from '../mcp.types';
4
+ import type { Telemetry } from '../../../telemetry';
4
5
  import type { WorkflowService } from '../../../workflows/workflow.service';
5
6
  declare const inputSchema: {
6
7
  limit: z.ZodOptional<z.ZodNumber>;
@@ -8,6 +9,6 @@ declare const inputSchema: {
8
9
  name: z.ZodOptional<z.ZodString>;
9
10
  projectId: z.ZodOptional<z.ZodString>;
10
11
  };
11
- export declare const createSearchWorkflowsTool: (user: User, workflowService: WorkflowService) => ToolDefinition<typeof inputSchema>;
12
+ export declare const createSearchWorkflowsTool: (user: User, workflowService: WorkflowService, telemetry: Telemetry) => ToolDefinition<typeof inputSchema>;
12
13
  export declare function searchWorkflows(user: User, workflowService: WorkflowService, { limit, active, name, projectId }: SearchWorkflowsParams): Promise<SearchWorkflowsResult>;
13
14
  export {};
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.createSearchWorkflowsTool = void 0;
7
7
  exports.searchWorkflows = searchWorkflows;
8
8
  const zod_1 = __importDefault(require("zod"));
9
+ const mcp_constants_1 = require("../mcp.constants");
9
10
  const schemas_1 = require("./schemas");
10
11
  const MAX_RESULTS = 200;
11
12
  const inputSchema = {
@@ -34,7 +35,7 @@ const outputSchema = {
34
35
  .describe('List of workflows matching the query'),
35
36
  count: zod_1.default.number().int().min(0).describe('Total number of workflows that match the filters'),
36
37
  };
37
- const createSearchWorkflowsTool = (user, workflowService) => {
38
+ const createSearchWorkflowsTool = (user, workflowService, telemetry) => {
38
39
  return {
39
40
  name: 'search_workflows',
40
41
  config: {
@@ -43,21 +44,44 @@ const createSearchWorkflowsTool = (user, workflowService) => {
43
44
  outputSchema,
44
45
  },
45
46
  handler: async ({ limit = MAX_RESULTS, active, name, projectId }) => {
46
- const payload = await searchWorkflows(user, workflowService, {
47
- limit,
48
- active,
49
- name,
50
- projectId,
51
- });
52
- return {
53
- structuredContent: payload,
54
- content: [
55
- {
56
- type: 'text',
57
- text: JSON.stringify(payload),
58
- },
59
- ],
47
+ const parameters = { limit, active, name, projectId };
48
+ const telemetryPayload = {
49
+ user_id: user.id,
50
+ tool_name: 'search_workflows',
51
+ parameters,
60
52
  };
53
+ try {
54
+ const payload = await searchWorkflows(user, workflowService, {
55
+ limit,
56
+ active,
57
+ name,
58
+ projectId,
59
+ });
60
+ telemetryPayload.results = {
61
+ success: true,
62
+ data: {
63
+ count: payload.count,
64
+ },
65
+ };
66
+ telemetry.track(mcp_constants_1.USER_CALLED_MCP_TOOL_EVENT, telemetryPayload);
67
+ return {
68
+ structuredContent: payload,
69
+ content: [
70
+ {
71
+ type: 'text',
72
+ text: JSON.stringify(payload),
73
+ },
74
+ ],
75
+ };
76
+ }
77
+ catch (error) {
78
+ telemetryPayload.results = {
79
+ success: false,
80
+ error: error instanceof Error ? error.message : String(error),
81
+ };
82
+ telemetry.track(mcp_constants_1.USER_CALLED_MCP_TOOL_EVENT, telemetryPayload);
83
+ throw error;
84
+ }
61
85
  },
62
86
  };
63
87
  };
@@ -1 +1 @@
1
- {"version":3,"file":"search-workflows.tool.js","sourceRoot":"","sources":["../../../../src/modules/mcp/tools/search-workflows.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-workflows.tool.js","sourceRoot":"","sources":["../../../../src/modules/mcp/tools/search-workflows.tool.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,5 @@ export declare class ProvisioningController {
7
7
  private readonly licenseState;
8
8
  constructor(provisioningService: ProvisioningService, licenseState: LicenseState);
9
9
  getConfig(_req: AuthenticatedRequest, res: Response): Promise<Response<any, Record<string, any>> | import("@n8n/api-types").ProvisioningConfigDto>;
10
+ patchConfig(req: AuthenticatedRequest, res: Response): Promise<Response<any, Record<string, any>> | import("@n8n/api-types").ProvisioningConfigDto>;
10
11
  }
@@ -24,6 +24,12 @@ let ProvisioningController = class ProvisioningController {
24
24
  }
25
25
  return await this.provisioningService.getConfig();
26
26
  }
27
+ async patchConfig(req, res) {
28
+ if (!this.licenseState.isProvisioningLicensed()) {
29
+ return res.status(403).json({ message: 'Provisioning is not licensed' });
30
+ }
31
+ return await this.provisioningService.patchConfig(req.body);
32
+ }
27
33
  };
28
34
  exports.ProvisioningController = ProvisioningController;
29
35
  __decorate([
@@ -33,6 +39,13 @@ __decorate([
33
39
  __metadata("design:paramtypes", [Object, Object]),
34
40
  __metadata("design:returntype", Promise)
35
41
  ], ProvisioningController.prototype, "getConfig", null);
42
+ __decorate([
43
+ (0, decorators_1.Patch)('/config'),
44
+ (0, decorators_1.GlobalScope)('provisioning:manage'),
45
+ __metadata("design:type", Function),
46
+ __metadata("design:paramtypes", [Object, Object]),
47
+ __metadata("design:returntype", Promise)
48
+ ], ProvisioningController.prototype, "patchConfig", null);
36
49
  exports.ProvisioningController = ProvisioningController = __decorate([
37
50
  (0, decorators_1.RestController)('/sso/provisioning'),
38
51
  __metadata("design:paramtypes", [provisioning_service_ee_1.ProvisioningService,
@@ -1 +1 @@
1
- {"version":3,"file":"provisioning.controller.ee.js","sourceRoot":"","sources":["../../../src/modules/provisioning.ee/provisioning.controller.ee.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gDAAmE;AACnE,wDAAmD;AACnD,uEAAgE;AAIzD,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAClC,YACkB,mBAAwC,EACxC,YAA0B;QAD1B,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,iBAAY,GAAZ,YAAY,CAAc;IACzC,CAAC;IAIE,AAAN,KAAK,CAAC,SAAS,CAAC,IAA0B,EAAE,GAAa;QACxD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,EAAE,CAAC;YACjD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC;IACnD,CAAC;CACD,CAAA;AAfY,wDAAsB;AAQ5B;IAFL,IAAA,gBAAG,EAAC,SAAS,CAAC;IACd,IAAA,wBAAW,EAAC,qBAAqB,CAAC;;;;uDAOlC;iCAdW,sBAAsB;IADlC,IAAA,2BAAc,EAAC,mBAAmB,CAAC;qCAGI,6CAAmB;QAC1B,6BAAY;GAHhC,sBAAsB,CAelC"}
1
+ {"version":3,"file":"provisioning.controller.ee.js","sourceRoot":"","sources":["../../../src/modules/provisioning.ee/provisioning.controller.ee.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gDAA0E;AAC1E,wDAAmD;AACnD,uEAAgE;AAIzD,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAClC,YACkB,mBAAwC,EACxC,YAA0B;QAD1B,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,iBAAY,GAAZ,YAAY,CAAc;IACzC,CAAC;IAIE,AAAN,KAAK,CAAC,SAAS,CAAC,IAA0B,EAAE,GAAa;QACxD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,EAAE,CAAC;YACjD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC;IACnD,CAAC;IAIK,AAAN,KAAK,CAAC,WAAW,CAAC,GAAyB,EAAE,GAAa;QACzD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,EAAE,CAAC;YACjD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;CACD,CAAA;AAzBY,wDAAsB;AAQ5B;IAFL,IAAA,gBAAG,EAAC,SAAS,CAAC;IACd,IAAA,wBAAW,EAAC,qBAAqB,CAAC;;;;uDAOlC;AAIK;IAFL,IAAA,kBAAK,EAAC,SAAS,CAAC;IAChB,IAAA,wBAAW,EAAC,qBAAqB,CAAC;;;;yDAOlC;iCAxBW,sBAAsB;IADlC,IAAA,2BAAc,EAAC,mBAAmB,CAAC;qCAGI,6CAAmB;QAC1B,6BAAY;GAHhC,sBAAsB,CAyBlC"}
@@ -1,15 +1,31 @@
1
1
  import { ProvisioningConfigDto } from '@n8n/api-types';
2
2
  import { Logger } from '@n8n/backend-common';
3
3
  import { GlobalConfig } from '@n8n/config';
4
- import { SettingsRepository } from '@n8n/db';
4
+ import { RoleRepository, SettingsRepository, User, UserRepository, ProjectRepository } from '@n8n/db';
5
+ import { type Publisher } from '../../scaling/pubsub/publisher.service';
6
+ import { ProjectService } from '../../services/project.service.ee';
7
+ import { InstanceSettings } from 'n8n-core';
5
8
  export declare class ProvisioningService {
6
9
  private readonly globalConfig;
7
10
  private readonly settingsRepository;
11
+ private readonly projectRepository;
12
+ private readonly projectService;
13
+ private readonly roleRepository;
14
+ private readonly userRepository;
8
15
  private readonly logger;
16
+ private readonly publisher;
17
+ private readonly instanceSettings;
9
18
  private provisioningConfig;
10
- constructor(globalConfig: GlobalConfig, settingsRepository: SettingsRepository, logger: Logger);
19
+ constructor(globalConfig: GlobalConfig, settingsRepository: SettingsRepository, projectRepository: ProjectRepository, projectService: ProjectService, roleRepository: RoleRepository, userRepository: UserRepository, logger: Logger, publisher: Publisher, instanceSettings: InstanceSettings);
11
20
  init(): Promise<void>;
12
21
  getConfig(): Promise<ProvisioningConfigDto>;
22
+ provisionInstanceRoleForUser(user: User, roleSlug: unknown): Promise<void>;
23
+ provisionProjectRolesForUser(userId: string, projectIdToRoles: unknown): Promise<void>;
24
+ patchConfig(rawConfig: unknown): Promise<ProvisioningConfigDto>;
25
+ handleReloadSsoProvisioningConfiguration(): Promise<void>;
13
26
  loadConfigurationFromDatabase(): Promise<ProvisioningConfigDto | undefined>;
14
27
  loadConfig(): Promise<ProvisioningConfigDto>;
28
+ isProvisioningEnabled(): Promise<boolean>;
29
+ isInstanceRoleProvisioningEnabled(): Promise<boolean>;
30
+ isProjectRolesProvisioningEnabled(): Promise<boolean>;
15
31
  }
@@ -17,11 +17,23 @@ const db_1 = require("@n8n/db");
17
17
  const di_1 = require("@n8n/di");
18
18
  const n8n_workflow_1 = require("n8n-workflow");
19
19
  const constants_1 = require("./constants");
20
+ const typeorm_1 = require("@n8n/typeorm");
21
+ const decorators_1 = require("@n8n/decorators");
22
+ const bad_request_error_1 = require("../../errors/response-errors/bad-request.error");
23
+ const zod_1 = require("zod");
24
+ const project_service_ee_1 = require("../../services/project.service.ee");
25
+ const n8n_core_1 = require("n8n-core");
20
26
  let ProvisioningService = class ProvisioningService {
21
- constructor(globalConfig, settingsRepository, logger) {
27
+ constructor(globalConfig, settingsRepository, projectRepository, projectService, roleRepository, userRepository, logger, publisher, instanceSettings) {
22
28
  this.globalConfig = globalConfig;
23
29
  this.settingsRepository = settingsRepository;
30
+ this.projectRepository = projectRepository;
31
+ this.projectService = projectService;
32
+ this.roleRepository = roleRepository;
33
+ this.userRepository = userRepository;
24
34
  this.logger = logger;
35
+ this.publisher = publisher;
36
+ this.instanceSettings = instanceSettings;
25
37
  }
26
38
  async init() {
27
39
  this.provisioningConfig = await this.loadConfig();
@@ -32,6 +44,165 @@ let ProvisioningService = class ProvisioningService {
32
44
  }
33
45
  return this.provisioningConfig;
34
46
  }
47
+ async provisionInstanceRoleForUser(user, roleSlug) {
48
+ const globalOwnerRoleSlug = 'global:owner';
49
+ if (typeof roleSlug !== 'string') {
50
+ this.logger.warn(`skipping instance role provisioning. Invalid role type: expected string, received ${typeof roleSlug}`, {
51
+ userId: user.id,
52
+ roleSlug,
53
+ });
54
+ return;
55
+ }
56
+ let dbRole;
57
+ try {
58
+ dbRole = await this.roleRepository.findOneOrFail({ where: { slug: roleSlug } });
59
+ }
60
+ catch (error) {
61
+ this.logger.warn(`Skipping instance role provisioning, a role matching the slug ${roleSlug} was not found`, { userId: user.id, roleSlug, error });
62
+ return;
63
+ }
64
+ if (dbRole.roleType !== 'global') {
65
+ this.logger.warn(`Skipping instance role provisioning. Role ${roleSlug} is not a global role`, { userId: user.id, roleSlug });
66
+ return;
67
+ }
68
+ if (user.role.slug === globalOwnerRoleSlug && dbRole.slug !== globalOwnerRoleSlug) {
69
+ const otherOwners = await this.userRepository.count({
70
+ where: { role: { slug: globalOwnerRoleSlug }, id: (0, typeorm_1.Not)(user.id) },
71
+ });
72
+ if (otherOwners === 0) {
73
+ this.logger.warn(`Skipping instance role provisioning. Cannot remove last owner role: ${globalOwnerRoleSlug} from user: ${user.id}`, { userId: user.id, roleSlug });
74
+ return;
75
+ }
76
+ }
77
+ if (user.role.slug !== dbRole.slug) {
78
+ await this.userRepository.update(user.id, { role: { slug: dbRole.slug } });
79
+ }
80
+ }
81
+ async provisionProjectRolesForUser(userId, projectIdToRoles) {
82
+ if (!Array.isArray(projectIdToRoles)) {
83
+ this.logger.warn(`Skipping project role provisioning. Invalid projectIdToRole type: expected array, received ${typeof projectIdToRoles}`, { userId, projectIdToRoles });
84
+ return;
85
+ }
86
+ let projectRoleMap;
87
+ try {
88
+ projectRoleMap = {};
89
+ for (const entry of projectIdToRoles) {
90
+ if (typeof entry !== 'string') {
91
+ this.logger.warn(`Skipping invalid project role mapping entry. Expected string, received ${typeof entry}.`, { userId, entry });
92
+ continue;
93
+ }
94
+ const [projectId, roleSlugSuffix] = entry.split(':');
95
+ if (!projectId || !roleSlugSuffix) {
96
+ this.logger.warn(`Skipping invalid project role mapping entry. Expected format "projectId:displayName", received "${entry}".`, { userId, entry });
97
+ continue;
98
+ }
99
+ projectRoleMap[projectId] = `project:${roleSlugSuffix}`;
100
+ }
101
+ }
102
+ catch (error) {
103
+ this.logger.warn('Skipping project role provisioning. Failed to parse project to role mapping.', { userId, projectIdToRoles });
104
+ return;
105
+ }
106
+ const projectIds = Object.keys(projectRoleMap);
107
+ const roleSlugs = [...new Set(Object.values(projectRoleMap))];
108
+ if (projectIds.length === 0) {
109
+ return;
110
+ }
111
+ const [existingProjects, existingRoles] = await Promise.all([
112
+ this.projectRepository.find({
113
+ where: { id: (0, typeorm_1.In)(projectIds), type: (0, typeorm_1.Not)('personal') },
114
+ select: ['id'],
115
+ }),
116
+ this.roleRepository.find({
117
+ where: {
118
+ slug: (0, typeorm_1.In)(roleSlugs),
119
+ roleType: 'project',
120
+ },
121
+ select: ['displayName', 'slug'],
122
+ }),
123
+ ]);
124
+ const existingProjectIds = new Set(existingProjects.map((project) => project.id));
125
+ const validProjectToRoleMappings = [];
126
+ for (const [projectId, roleSlug] of Object.entries(projectRoleMap)) {
127
+ if (!existingProjectIds.has(projectId)) {
128
+ this.logger.warn(`Skipped provisioning project role for project with ID ${projectId}, because project does not exist or is a personal project.`, { userId, projectId, roleSlug });
129
+ continue;
130
+ }
131
+ const role = existingRoles.find((role) => role.slug === roleSlug);
132
+ if (!role) {
133
+ this.logger.warn(`Skipping project role provisioning for role with slug ${roleSlug}, because role does not exist or is not specific to projects.`, { userId, projectId, roleSlug });
134
+ continue;
135
+ }
136
+ validProjectToRoleMappings.push({ projectId, roleSlug: role.slug });
137
+ }
138
+ if (validProjectToRoleMappings.length === 0) {
139
+ this.logger.warn('Skipping project role provisioning altogether. No valid project to role mappings found.', { userId, projectRoleMap });
140
+ return;
141
+ }
142
+ const currentlyAccessibleProjects = await this.projectRepository.find({
143
+ where: {
144
+ type: (0, typeorm_1.Not)('personal'),
145
+ projectRelations: {
146
+ userId,
147
+ },
148
+ },
149
+ relations: ['projectRelations'],
150
+ });
151
+ const validProjectIds = new Set(validProjectToRoleMappings.map((m) => m.projectId));
152
+ const projectsToRemoveAccessFrom = currentlyAccessibleProjects.filter((project) => !validProjectIds.has(project.id));
153
+ await this.projectRepository.manager.transaction(async (tx) => {
154
+ for (const project of projectsToRemoveAccessFrom) {
155
+ await tx.delete(db_1.ProjectRelation, { projectId: project.id, userId });
156
+ }
157
+ for (const { projectId, roleSlug } of validProjectToRoleMappings) {
158
+ await this.projectService.addUser(projectId, { userId, role: roleSlug }, tx);
159
+ }
160
+ });
161
+ }
162
+ async patchConfig(rawConfig) {
163
+ let patchConfig;
164
+ try {
165
+ patchConfig = api_types_1.ProvisioningConfigPatchDto.parse(rawConfig);
166
+ }
167
+ catch (error) {
168
+ if (error instanceof zod_1.ZodError) {
169
+ throw new bad_request_error_1.BadRequestError(error.message);
170
+ }
171
+ throw error;
172
+ }
173
+ const currentConfig = await this.getConfig();
174
+ const supportedPatchFields = [
175
+ 'scopesProvisionInstanceRole',
176
+ 'scopesProvisionProjectRoles',
177
+ 'scopesProvisioningFrequency',
178
+ 'scopesName',
179
+ 'scopesInstanceRoleClaimName',
180
+ 'scopesProjectsRolesClaimName',
181
+ ];
182
+ const updatedConfig = {
183
+ ...currentConfig,
184
+ ...patchConfig,
185
+ };
186
+ for (const supportedPatchField of supportedPatchFields) {
187
+ if (patchConfig[supportedPatchField] === null) {
188
+ delete updatedConfig[supportedPatchField];
189
+ }
190
+ }
191
+ api_types_1.ProvisioningConfigDto.parse(updatedConfig);
192
+ await this.settingsRepository.upsert({
193
+ key: constants_1.PROVISIONING_PREFERENCES_DB_KEY,
194
+ value: JSON.stringify(updatedConfig),
195
+ loadOnStartup: true,
196
+ }, { conflictPaths: ['key'] });
197
+ this.provisioningConfig = await this.loadConfig();
198
+ if (this.instanceSettings.isMultiMain) {
199
+ await this.publisher.publishCommand({ command: 'reload-sso-provisioning-configuration' });
200
+ }
201
+ return await this.getConfig();
202
+ }
203
+ async handleReloadSsoProvisioningConfiguration() {
204
+ this.provisioningConfig = await this.loadConfig();
205
+ }
35
206
  async loadConfigurationFromDatabase() {
36
207
  const configFromDB = await this.settingsRepository.findByKey(constants_1.PROVISIONING_PREFERENCES_DB_KEY);
37
208
  if (configFromDB) {
@@ -56,12 +227,35 @@ let ProvisioningService = class ProvisioningService {
56
227
  }
57
228
  return envProvidedConfig;
58
229
  }
230
+ async isProvisioningEnabled() {
231
+ const provisioningConfig = await this.getConfig();
232
+ return (provisioningConfig.scopesProvisionInstanceRole ||
233
+ provisioningConfig.scopesProvisionProjectRoles);
234
+ }
235
+ async isInstanceRoleProvisioningEnabled() {
236
+ const provisioningConfig = await this.getConfig();
237
+ return provisioningConfig.scopesProvisionInstanceRole;
238
+ }
239
+ async isProjectRolesProvisioningEnabled() {
240
+ const provisioningConfig = await this.getConfig();
241
+ return provisioningConfig.scopesProvisionProjectRoles;
242
+ }
59
243
  };
60
244
  exports.ProvisioningService = ProvisioningService;
245
+ __decorate([
246
+ (0, decorators_1.OnPubSubEvent)('reload-sso-provisioning-configuration'),
247
+ __metadata("design:type", Function),
248
+ __metadata("design:paramtypes", []),
249
+ __metadata("design:returntype", Promise)
250
+ ], ProvisioningService.prototype, "handleReloadSsoProvisioningConfiguration", null);
61
251
  exports.ProvisioningService = ProvisioningService = __decorate([
62
252
  (0, di_1.Service)(),
63
253
  __metadata("design:paramtypes", [config_1.GlobalConfig,
64
254
  db_1.SettingsRepository,
65
- backend_common_1.Logger])
255
+ db_1.ProjectRepository,
256
+ project_service_ee_1.ProjectService,
257
+ db_1.RoleRepository,
258
+ db_1.UserRepository,
259
+ backend_common_1.Logger, Function, n8n_core_1.InstanceSettings])
66
260
  ], ProvisioningService);
67
261
  //# sourceMappingURL=provisioning.service.ee.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provisioning.service.ee.js","sourceRoot":"","sources":["../../../src/modules/provisioning.ee/provisioning.service.ee.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAAuD;AACvD,wDAA6C;AAC7C,wCAA2C;AAC3C,gCAA6C;AAC7C,gCAAkC;AAClC,+CAAyC;AAEzC,2CAA8D;AAGvD,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAG/B,YACkB,YAA0B,EAC1B,kBAAsC,EACtC,MAAc;QAFd,iBAAY,GAAZ,YAAY,CAAc;QAC1B,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,WAAM,GAAN,MAAM,CAAQ;IAC7B,CAAC;IAEJ,KAAK,CAAC,IAAI;QACT,IAAI,CAAC,kBAAkB,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAAS;QACd,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,IAAI,CAAC,kBAAkB,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACnD,CAAC;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,6BAA6B;QAClC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,2CAA+B,CAAC,CAAC;QAE9F,IAAI,YAAY,EAAE,CAAC;YAClB,IAAI,CAAC;gBACJ,MAAM,WAAW,GAAG,IAAA,wBAAS,EAAwB,YAAY,CAAC,KAAK,CAAC,CAAC;gBAEzE,OAAO,iCAAqB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,iGAAiG,EAEjG,EAAE,KAAK,EAAE,CACT,CAAC;YACH,CAAC;QACF,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,UAAU;QACf,MAAM,iBAAiB,GAAG,iCAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE1F,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAEpE,IAAI,gBAAgB,EAAE,CAAC;YACtB,OAAO;gBACN,GAAG,iBAAiB;gBACpB,GAAG,gBAAgB;aACnB,CAAC;QACH,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC1B,CAAC;CACD,CAAA;AAtDY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,YAAO,GAAE;qCAKuB,qBAAY;QACN,uBAAkB;QAC9B,uBAAM;GANpB,mBAAmB,CAsD/B"}
1
+ {"version":3,"file":"provisioning.service.ee.js","sourceRoot":"","sources":["../../../src/modules/provisioning.ee/provisioning.service.ee.ts"],"names":[],"mappings":"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"}
@@ -181,6 +181,38 @@ paths:
181
181
  $ref: '#/components/responses/unauthorized'
182
182
  '404':
183
183
  $ref: '#/components/responses/notFound'
184
+ /credentials/{id}/transfer:
185
+ put:
186
+ x-eov-operation-id: transferCredential
187
+ x-eov-operation-handler: v1/handlers/credentials/credentials.handler
188
+ tags:
189
+ - Credential
190
+ summary: Transfer a credential to another project.
191
+ description: Transfer a credential to another project.
192
+ parameters:
193
+ - $ref: '#/components/parameters/credentialId'
194
+ requestBody:
195
+ description: Destination project for the credential transfer.
196
+ content:
197
+ application/json:
198
+ schema:
199
+ type: object
200
+ properties:
201
+ destinationProjectId:
202
+ type: string
203
+ description: The ID of the project to transfer the credential to.
204
+ required:
205
+ - destinationProjectId
206
+ required: true
207
+ responses:
208
+ '200':
209
+ description: Operation successful.
210
+ '400':
211
+ $ref: '#/components/responses/badRequest'
212
+ '401':
213
+ $ref: '#/components/responses/unauthorized'
214
+ '404':
215
+ $ref: '#/components/responses/notFound'
184
216
  /executions:
185
217
  get:
186
218
  x-eov-operation-id: getExecutions
@@ -659,38 +691,6 @@ paths:
659
691
  $ref: '#/components/responses/unauthorized'
660
692
  '404':
661
693
  $ref: '#/components/responses/notFound'
662
- /credentials/{id}/transfer:
663
- put:
664
- x-eov-operation-id: transferCredential
665
- x-eov-operation-handler: v1/handlers/credentials/credentials.handler
666
- tags:
667
- - Workflow
668
- summary: Transfer a credential to another project.
669
- description: Transfer a credential to another project.
670
- parameters:
671
- - $ref: '#/components/parameters/credentialId'
672
- requestBody:
673
- description: Destination project for the credential transfer.
674
- content:
675
- application/json:
676
- schema:
677
- type: object
678
- properties:
679
- destinationProjectId:
680
- type: string
681
- description: The ID of the project to transfer the credential to.
682
- required:
683
- - destinationProjectId
684
- required: true
685
- responses:
686
- '200':
687
- description: Operation successful.
688
- '400':
689
- $ref: '#/components/responses/badRequest'
690
- '401':
691
- $ref: '#/components/responses/unauthorized'
692
- '404':
693
- $ref: '#/components/responses/notFound'
694
694
  /workflows/{id}/tags:
695
695
  get:
696
696
  x-eov-operation-id: getWorkflowTags
@@ -1989,10 +1989,10 @@ components:
1989
1989
  description: Unauthorized
1990
1990
  notFound:
1991
1991
  description: The specified resource was not found.
1992
- conflict:
1993
- description: Conflict
1994
1992
  badRequest:
1995
1993
  description: The request is invalid or provides malformed data.
1994
+ conflict:
1995
+ description: Conflict
1996
1996
  forbidden:
1997
1997
  description: Forbidden
1998
1998
  NotFound:
@@ -2006,6 +2006,13 @@ components:
2006
2006
  Forbidden:
2007
2007
  $ref: '#/components/responses/forbidden'
2008
2008
  parameters:
2009
+ credentialId:
2010
+ name: id
2011
+ in: path
2012
+ description: The ID of the credential.
2013
+ required: true
2014
+ schema:
2015
+ type: string
2009
2016
  includeData:
2010
2017
  name: includeData
2011
2018
  in: query
@@ -2052,13 +2059,6 @@ components:
2052
2059
  required: true
2053
2060
  schema:
2054
2061
  type: string
2055
- credentialId:
2056
- name: id
2057
- in: path
2058
- description: The ID of the credential.
2059
- required: true
2060
- schema:
2061
- type: string
2062
2062
  includeRole:
2063
2063
  name: includeRole
2064
2064
  in: query
@@ -2,5 +2,5 @@ export declare const QUEUE_NAME = "jobs";
2
2
  export declare const JOB_TYPE_NAME = "job";
3
3
  export declare const COMMAND_PUBSUB_CHANNEL = "n8n.commands";
4
4
  export declare const WORKER_RESPONSE_PUBSUB_CHANNEL = "n8n.worker-response";
5
- export declare const SELF_SEND_COMMANDS: Set<"reload-license" | "restart-event-bus" | "reload-external-secrets-providers" | "community-package-install" | "community-package-update" | "community-package-uninstall" | "get-worker-id" | "get-worker-status" | "add-webhooks-triggers-and-pollers" | "remove-triggers-and-pollers" | "display-workflow-activation" | "display-workflow-deactivation" | "display-workflow-activation-error" | "relay-execution-lifecycle-event" | "clear-test-webhooks" | "reload-oidc-config" | "reload-saml-config" | "reload-overwrite-credentials">;
6
- export declare const IMMEDIATE_COMMANDS: Set<"reload-license" | "restart-event-bus" | "reload-external-secrets-providers" | "community-package-install" | "community-package-update" | "community-package-uninstall" | "get-worker-id" | "get-worker-status" | "add-webhooks-triggers-and-pollers" | "remove-triggers-and-pollers" | "display-workflow-activation" | "display-workflow-deactivation" | "display-workflow-activation-error" | "relay-execution-lifecycle-event" | "clear-test-webhooks" | "reload-oidc-config" | "reload-saml-config" | "reload-overwrite-credentials">;
5
+ export declare const SELF_SEND_COMMANDS: Set<"reload-license" | "restart-event-bus" | "reload-external-secrets-providers" | "community-package-install" | "community-package-update" | "community-package-uninstall" | "get-worker-id" | "get-worker-status" | "add-webhooks-triggers-and-pollers" | "remove-triggers-and-pollers" | "display-workflow-activation" | "display-workflow-deactivation" | "display-workflow-activation-error" | "relay-execution-lifecycle-event" | "clear-test-webhooks" | "reload-oidc-config" | "reload-saml-config" | "reload-overwrite-credentials" | "reload-sso-provisioning-configuration">;
6
+ export declare const IMMEDIATE_COMMANDS: Set<"reload-license" | "restart-event-bus" | "reload-external-secrets-providers" | "community-package-install" | "community-package-update" | "community-package-uninstall" | "get-worker-id" | "get-worker-status" | "add-webhooks-triggers-and-pollers" | "remove-triggers-and-pollers" | "display-workflow-activation" | "display-workflow-deactivation" | "display-workflow-activation-error" | "relay-execution-lifecycle-event" | "clear-test-webhooks" | "reload-oidc-config" | "reload-saml-config" | "reload-overwrite-credentials" | "reload-sso-provisioning-configuration">;
@@ -7,6 +7,7 @@ export type PubSubCommandMap = {
7
7
  'reload-overwrite-credentials': never;
8
8
  'reload-oidc-config': never;
9
9
  'reload-saml-config': never;
10
+ 'reload-sso-provisioning-configuration': never;
10
11
  'community-package-install': {
11
12
  packageName: string;
12
13
  packageVersion: string;
@@ -35,8 +35,9 @@ export declare namespace PubSub {
35
35
  type DisplayWorkflowActivationError = ToCommand<'display-workflow-activation-error'>;
36
36
  type RelayExecutionLifecycleEvent = ToCommand<'relay-execution-lifecycle-event'>;
37
37
  type ClearTestWebhooks = ToCommand<'clear-test-webhooks'>;
38
+ type ReloadSsoProvisioningConfiguration = ToCommand<'reload-sso-provisioning-configuration'>;
38
39
  }
39
- export type Command = Commands.ReloadLicense | Commands.RestartEventBus | Commands.ReloadExternalSecretsProviders | Commands.CommunityPackageInstall | Commands.CommunityPackageUpdate | Commands.CommunityPackageUninstall | Commands.GetWorkerId | Commands.GetWorkerStatus | Commands.AddWebhooksTriggersAndPollers | Commands.RemoveTriggersAndPollers | Commands.DisplayWorkflowActivation | Commands.DisplayWorkflowDeactivation | Commands.DisplayWorkflowActivationError | Commands.RelayExecutionLifecycleEvent | Commands.ClearTestWebhooks | Commands.ReloadOIDCConfiguration | Commands.ReloadSamlConfiguration | Commands.ReloadCredentialsOverwrites;
40
+ export type Command = Commands.ReloadLicense | Commands.RestartEventBus | Commands.ReloadExternalSecretsProviders | Commands.CommunityPackageInstall | Commands.CommunityPackageUpdate | Commands.CommunityPackageUninstall | Commands.GetWorkerId | Commands.GetWorkerStatus | Commands.AddWebhooksTriggersAndPollers | Commands.RemoveTriggersAndPollers | Commands.DisplayWorkflowActivation | Commands.DisplayWorkflowDeactivation | Commands.DisplayWorkflowActivationError | Commands.RelayExecutionLifecycleEvent | Commands.ClearTestWebhooks | Commands.ReloadOIDCConfiguration | Commands.ReloadSamlConfiguration | Commands.ReloadCredentialsOverwrites | Commands.ReloadSsoProvisioningConfiguration;
40
41
  type _ToWorkerResponse<WorkerResponseKey extends keyof PubSubWorkerResponseMap> = {
41
42
  senderId: string;
42
43
  targets?: string[];
package/dist/server.d.ts CHANGED
@@ -47,5 +47,6 @@ export declare class Server extends AbstractServer {
47
47
  start(): Promise<void>;
48
48
  private registerAdditionalControllers;
49
49
  configure(): Promise<void>;
50
+ private configureSettingsRoute;
50
51
  protected setupPushServer(): void;
51
52
  }
package/dist/server.js CHANGED
@@ -235,9 +235,7 @@ let Server = class Server extends abstract_server_1.AbstractServer {
235
235
  di_1.Container.get(controller_registry_1.ControllerRegistry).activate(app);
236
236
  const tzDataFile = (0, path_1.resolve)(constants_2.CLI_DIR, 'dist/timezones.json');
237
237
  this.app.get(`/${this.restEndpoint}/options/timezones`, (_, res) => res.sendFile(tzDataFile, { dotfiles: 'allow' }));
238
- if (frontendService) {
239
- this.app.get(`/${this.restEndpoint}/settings`, ResponseHelper.send(async () => frontendService.getSettings()));
240
- }
238
+ this.configureSettingsRoute();
241
239
  const eventBus = di_1.Container.get(message_event_bus_1.MessageEventBus);
242
240
  await eventBus.initialize();
243
241
  di_1.Container.get(log_streaming_event_relay_1.LogStreamingEventRelay).init();
@@ -385,6 +383,15 @@ let Server = class Server extends abstract_server_1.AbstractServer {
385
383
  }
386
384
  (0, n8n_core_1.installGlobalProxyAgent)();
387
385
  }
386
+ configureSettingsRoute() {
387
+ const { frontendService } = this;
388
+ const authService = di_1.Container.get(auth_service_1.AuthService);
389
+ if (frontendService) {
390
+ this.app.get(`/${this.restEndpoint}/settings`, authService.createAuthMiddleware({ allowSkipMFA: false, allowUnauthenticated: true }), ResponseHelper.send(async (req) => {
391
+ return req.user ? frontendService.getSettings() : frontendService.getPublicSettings();
392
+ }));
393
+ }
394
+ }
388
395
  setupPushServer() {
389
396
  const { restEndpoint, server, app } = this;
390
397
  di_1.Container.get(push_1.Push).setupPushServer(restEndpoint, server, app);