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.
- package/dist/auth/auth.service.d.ts +2 -1
- package/dist/auth/auth.service.js +5 -2
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/controllers/project.controller.d.ts +2 -0
- package/dist/controllers/users.controller.d.ts +1 -1
- package/dist/environments.ee/source-control/source-control-export.service.ee.d.ts +1 -1
- package/dist/environments.ee/source-control/source-control-export.service.ee.js +16 -4
- package/dist/environments.ee/source-control/source-control-export.service.ee.js.map +1 -1
- package/dist/environments.ee/source-control/source-control-import.service.ee.d.ts +10 -3
- package/dist/environments.ee/source-control/source-control-import.service.ee.js +49 -20
- package/dist/environments.ee/source-control/source-control-import.service.ee.js.map +1 -1
- package/dist/environments.ee/source-control/source-control-status.service.ee.d.ts +8 -6
- package/dist/environments.ee/source-control/source-control-status.service.ee.js +25 -3
- package/dist/environments.ee/source-control/source-control-status.service.ee.js.map +1 -1
- package/dist/environments.ee/source-control/source-control.controller.ee.d.ts +8 -8
- package/dist/environments.ee/source-control/source-control.service.ee.d.ts +5 -6
- package/dist/environments.ee/source-control/source-control.service.ee.js +11 -8
- package/dist/environments.ee/source-control/source-control.service.ee.js.map +1 -1
- package/dist/environments.ee/source-control/types/exportable-project.d.ts +2 -0
- package/dist/environments.ee/source-control/types/exportable-variable.d.ts +7 -0
- package/dist/environments.ee/source-control/types/exportable-variable.js +3 -0
- package/dist/environments.ee/source-control/types/exportable-variable.js.map +1 -0
- package/dist/environments.ee/variables/variables.service.ee.d.ts +4 -1
- package/dist/environments.ee/variables/variables.service.ee.js +11 -4
- package/dist/environments.ee/variables/variables.service.ee.js.map +1 -1
- package/dist/executions/execution.service.d.ts +1 -0
- package/dist/executions/execution.service.js +15 -0
- package/dist/executions/execution.service.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub.constants.d.ts +1 -0
- package/dist/modules/chat-hub/chat-hub.constants.js +13 -0
- package/dist/modules/chat-hub/chat-hub.constants.js.map +1 -0
- package/dist/modules/chat-hub/chat-hub.controller.js +26 -30
- package/dist/modules/chat-hub/chat-hub.controller.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub.service.d.ts +17 -9
- package/dist/modules/chat-hub/chat-hub.service.js +308 -110
- package/dist/modules/chat-hub/chat-hub.service.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub.types.d.ts +5 -2
- package/dist/modules/chat-hub/chat-message.repository.d.ts +3 -3
- package/dist/modules/chat-hub/chat-message.repository.js +18 -12
- package/dist/modules/chat-hub/chat-message.repository.js.map +1 -1
- package/dist/modules/chat-hub/chat-session.repository.d.ts +1 -1
- package/dist/modules/chat-hub/chat-session.repository.js +9 -8
- package/dist/modules/chat-hub/chat-session.repository.js.map +1 -1
- package/dist/modules/chat-hub/context-limits.d.ts +3 -3
- package/dist/modules/chat-hub/context-limits.js.map +1 -1
- package/dist/modules/chat-hub/dto/chat-models-request.dto.d.ts +1 -1
- package/dist/modules/chat-hub/stream-capturer.d.ts +3 -0
- package/dist/modules/chat-hub/stream-capturer.js +31 -0
- package/dist/modules/chat-hub/stream-capturer.js.map +1 -0
- package/dist/modules/mcp/mcp.controller.d.ts +1 -1
- package/dist/modules/mcp/mcp.controller.js +5 -20
- package/dist/modules/mcp/mcp.controller.js.map +1 -1
- package/dist/modules/mcp/mcp.service.d.ts +3 -1
- package/dist/modules/mcp/mcp.service.js +7 -4
- package/dist/modules/mcp/mcp.service.js.map +1 -1
- package/dist/modules/mcp/mcp.types.d.ts +5 -0
- package/dist/modules/mcp/tools/get-workflow-details.tool.d.ts +2 -1
- package/dist/modules/mcp/tools/get-workflow-details.tool.js +32 -5
- package/dist/modules/mcp/tools/get-workflow-details.tool.js.map +1 -1
- package/dist/modules/mcp/tools/search-workflows.tool.d.ts +2 -1
- package/dist/modules/mcp/tools/search-workflows.tool.js +39 -15
- package/dist/modules/mcp/tools/search-workflows.tool.js.map +1 -1
- package/dist/modules/provisioning.ee/provisioning.controller.ee.d.ts +1 -0
- package/dist/modules/provisioning.ee/provisioning.controller.ee.js +13 -0
- package/dist/modules/provisioning.ee/provisioning.controller.ee.js.map +1 -1
- package/dist/modules/provisioning.ee/provisioning.service.ee.d.ts +18 -2
- package/dist/modules/provisioning.ee/provisioning.service.ee.js +196 -2
- package/dist/modules/provisioning.ee/provisioning.service.ee.js.map +1 -1
- package/dist/public-api/v1/openapi.yml +41 -41
- package/dist/scaling/constants.d.ts +2 -2
- package/dist/scaling/pubsub/pubsub.event-map.d.ts +1 -0
- package/dist/scaling/pubsub/pubsub.types.d.ts +2 -1
- package/dist/server.d.ts +1 -0
- package/dist/server.js +10 -3
- package/dist/server.js.map +1 -1
- package/dist/services/frontend.service.d.ts +6 -1
- package/dist/services/frontend.service.js +21 -0
- package/dist/services/frontend.service.js.map +1 -1
- package/dist/sso.ee/oidc/oidc.service.ee.d.ts +4 -1
- package/dist/sso.ee/oidc/oidc.service.ee.js +21 -5
- package/dist/sso.ee/oidc/oidc.service.ee.js.map +1 -1
- package/dist/sso.ee/saml/routes/saml.controller.ee.d.ts +4 -1
- package/dist/sso.ee/saml/routes/saml.controller.ee.js +9 -2
- package/dist/sso.ee/saml/routes/saml.controller.ee.js.map +1 -1
- package/dist/sso.ee/saml/saml-helpers.js +2 -0
- package/dist/sso.ee/saml/saml-helpers.js.map +1 -1
- package/dist/sso.ee/saml/saml.service.ee.js +9 -0
- package/dist/sso.ee/saml/saml.service.ee.js.map +1 -1
- package/dist/telemetry/index.d.ts +3 -2
- package/dist/telemetry/index.js +7 -2
- package/dist/telemetry/index.js.map +1 -1
- package/dist/workflows/workflow-finder.service.d.ts +1 -0
- package/dist/workflows/workflows.controller.d.ts +8 -1
- package/dist/workflows/workflows.controller.js +20 -2
- package/dist/workflows/workflows.controller.js.map +1 -1
- 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":";;;;;;
|
|
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
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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":";;;;;;
|
|
1
|
+
{"version":3,"file":"search-workflows.tool.js","sourceRoot":"","sources":["../../../../src/modules/mcp/tools/search-workflows.tool.ts"],"names":[],"mappings":";;;;;;AAmHA,0CAgDC;AAjKD,8CAAoB;AAEpB,oDAA8D;AAQ9D,uCAAuC;AAMvC,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,MAAM,WAAW,GAAG;IACnB,KAAK,EAAE,aAAC;SACN,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,GAAG,CAAC,WAAW,CAAC;SAChB,QAAQ,EAAE;SACV,QAAQ,CAAC,oCAAoC,WAAW,GAAG,CAAC;IAC9D,MAAM,EAAE,aAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAClE,IAAI,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACtD,SAAS,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACR,CAAC;AAE1B,MAAM,YAAY,GAAG;IACpB,IAAI,EAAE,aAAC;SACL,KAAK,CACL,aAAC,CAAC,MAAM,CAAC;QACR,EAAE,EAAE,aAAC,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,MAAM,EAAE,aAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAC9B,SAAS,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,SAAS,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,YAAY,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,KAAK,EAAE,aAAC,CAAC,KAAK,CAAC,oBAAU,CAAC;KAC1B,CAAC,CACF;SACA,QAAQ,CAAC,sCAAsC,CAAC;IAClD,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kDAAkD,CAAC;CACnE,CAAC;AAMnB,MAAM,yBAAyB,GAAG,CACxC,IAAU,EACV,eAAgC,EAChC,SAAoB,EACiB,EAAE;IACvC,OAAO;QACN,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE;YACP,WAAW,EACV,iFAAiF;YAClF,WAAW;YACX,YAAY;SACZ;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,GAAG,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;YACnE,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YACtD,MAAM,gBAAgB,GAAkC;gBACvD,OAAO,EAAE,IAAI,CAAC,EAAE;gBAChB,SAAS,EAAE,kBAAkB;gBAC7B,UAAU;aACV,CAAC;YAEF,IAAI,CAAC;gBACJ,MAAM,OAAO,GAA0B,MAAM,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE;oBACnF,KAAK;oBACL,MAAM;oBACN,IAAI;oBACJ,SAAS;iBACT,CAAC,CAAC;gBAGH,gBAAgB,CAAC,OAAO,GAAG;oBAC1B,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE;wBACL,KAAK,EAAE,OAAO,CAAC,KAAK;qBACpB;iBACD,CAAC;gBACF,SAAS,CAAC,KAAK,CAAC,0CAA0B,EAAE,gBAAgB,CAAC,CAAC;gBAE9D,OAAO;oBACN,iBAAiB,EAAE,OAAO;oBAE1B,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;yBAC7B;qBACD;iBACD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAEhB,gBAAgB,CAAC,OAAO,GAAG;oBAC1B,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC7D,CAAC;gBACF,SAAS,CAAC,KAAK,CAAC,0CAA0B,EAAE,gBAAgB,CAAC,CAAC;gBAC9D,MAAM,KAAK,CAAC;YACb,CAAC;QACF,CAAC;KACD,CAAC;AACH,CAAC,CAAC;AA3DW,QAAA,yBAAyB,6BA2DpC;AAEK,KAAK,UAAU,eAAe,CACpC,IAAU,EACV,eAAgC,EAChC,EAAE,KAAK,GAAG,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAyB;IAEvE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;IAE5D,MAAM,OAAO,GAAsB;QAClC,IAAI,EAAE,SAAS;QACf,MAAM,EAAE;YACP,UAAU,EAAE,KAAK;YACjB,cAAc,EAAE,IAAI;YACpB,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnC;QACD,MAAM,EAAE;YACP,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,IAAI;SACX;KACD,CAAC;IAEF,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,eAAe,CAAC,OAAO,CACzD,IAAI,EACJ,OAAO,EACP,KAAK,EACL,KAAK,EACL,KAAK,CACL,CAAC;IAEF,MAAM,kBAAkB,GAA2B,SAA8B,CAAC,GAAG,CACpF,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,EAAE;QACF,IAAI;QACJ,MAAM;QACN,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;QAClC,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;QAClC,YAAY;QACZ,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAW,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KACjF,CAAC,CACF,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC;AAC5C,CAAC"}
|
|
@@ -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,
|
|
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
|
-
|
|
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,
|
|
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
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
|
-
|
|
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);
|