@atom8n/n8n 2.4.7 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/chat/chat-service.types.d.ts +6 -6
  3. package/dist/commands/execute-batch.d.ts +2 -2
  4. package/dist/commands/execute.js +0 -0
  5. package/dist/commands/import/credentials.d.ts +2 -2
  6. package/dist/commands/import/credentials.js +0 -0
  7. package/dist/commands/import/workflow.d.ts +2 -2
  8. package/dist/commands/ldap/reset.d.ts +2 -2
  9. package/dist/commands/mcp.d.ts +23 -0
  10. package/dist/commands/mcp.js +315 -0
  11. package/dist/commands/run.d.ts +23 -0
  12. package/dist/commands/run.js +162 -0
  13. package/dist/controllers/annotation-tags.controller.ee.d.ts +1 -1
  14. package/dist/controllers/cli.controller.d.ts +26 -0
  15. package/dist/controllers/cli.controller.js +334 -0
  16. package/dist/controllers/orchestration.controller.js +0 -0
  17. package/dist/controllers/users.controller.d.ts +1 -1
  18. package/dist/environments.ee/source-control/source-control-status.service.ee.d.ts +2 -2
  19. package/dist/environments.ee/source-control/source-control.controller.ee.d.ts +4 -4
  20. package/dist/environments.ee/source-control/source-control.service.ee.d.ts +2 -2
  21. package/dist/environments.ee/source-control/types/source-control-set-branch.js +0 -0
  22. package/dist/eventbus/event-message-classes/index.js +0 -0
  23. package/dist/events/relays/workflow-failure-notification.event-relay.d.ts +13 -0
  24. package/dist/events/relays/workflow-failure-notification.event-relay.js +77 -0
  25. package/dist/executions/execution-data/types.d.ts +17 -0
  26. package/dist/executions/execution-data/types.js +2 -0
  27. package/dist/executions/failed-run-factory.d.ts +4 -0
  28. package/dist/executions/failed-run-factory.js +71 -0
  29. package/dist/index.d.ts +2 -1
  30. package/dist/index.js +8 -0
  31. package/dist/interfaces.d.ts +1 -1
  32. package/dist/license.js +1 -1
  33. package/dist/middlewares/webview-frame-options.d.ts +2 -0
  34. package/dist/middlewares/webview-frame-options.js +22 -0
  35. package/dist/modules/chat-hub/chat-hub-extractor.d.ts +22 -0
  36. package/dist/modules/chat-hub/chat-hub-extractor.js +63 -0
  37. package/dist/modules/dynamic-credentials.ee/credential-resolvers/storage/dynamic-credential-user-entry-storage.d.ts +11 -0
  38. package/dist/modules/dynamic-credentials.ee/credential-resolvers/storage/dynamic-credential-user-entry-storage.js +58 -0
  39. package/dist/modules/dynamic-credentials.ee/database/entities/dynamic-credential-user-entry.d.ts +12 -0
  40. package/dist/modules/dynamic-credentials.ee/database/entities/dynamic-credential-user-entry.js +64 -0
  41. package/dist/modules/dynamic-credentials.ee/database/repositories/dynamic-credential-user-entry.repository.d.ts +5 -0
  42. package/dist/modules/dynamic-credentials.ee/database/repositories/dynamic-credential-user-entry.repository.js +25 -0
  43. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.config.d.ts +5 -0
  44. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.config.js +36 -0
  45. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-cors.service.d.ts +12 -0
  46. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-cors.service.js +69 -0
  47. package/dist/modules/dynamic-credentials.ee/services/resolver-config-expression.service.d.ts +7 -0
  48. package/dist/modules/dynamic-credentials.ee/services/resolver-config-expression.service.js +46 -0
  49. package/dist/modules/insights/database/entities/insights-metadata.js +1 -1
  50. package/dist/modules/insights/database/repositories/insights-by-period-query.helper.js +4 -1
  51. package/dist/modules/insights/database/repositories/insights-by-period.repository.d.ts +1 -1
  52. package/dist/modules/insights/insights.module.d.ts +1 -1
  53. package/dist/modules/insights/insights.service.d.ts +1 -1
  54. package/dist/modules/log-streaming.ee/database/entities/event-destination.entity.d.ts +6 -0
  55. package/dist/modules/log-streaming.ee/database/entities/event-destination.entity.js +28 -0
  56. package/dist/modules/log-streaming.ee/database/entities/index.d.ts +1 -0
  57. package/dist/modules/log-streaming.ee/database/entities/index.js +5 -0
  58. package/dist/modules/log-streaming.ee/database/repositories/event-destination.repository.d.ts +5 -0
  59. package/dist/modules/log-streaming.ee/database/repositories/event-destination.repository.js +25 -0
  60. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination-from-db.d.ts +4 -0
  61. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination-from-db.js +24 -0
  62. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination-sentry.ee.d.ts +17 -0
  63. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination-sentry.ee.js +131 -0
  64. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination-syslog.ee.d.ts +22 -0
  65. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination-syslog.ee.js +116 -0
  66. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination-webhook.ee.d.ts +35 -0
  67. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination-webhook.ee.js +328 -0
  68. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.d.ts +28 -0
  69. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.js +74 -0
  70. package/dist/modules/log-streaming.ee/log-streaming-destination.service.d.ts +32 -0
  71. package/dist/modules/log-streaming.ee/log-streaming-destination.service.js +175 -0
  72. package/dist/modules/log-streaming.ee/log-streaming.controller.d.ts +15 -0
  73. package/dist/modules/log-streaming.ee/log-streaming.controller.js +149 -0
  74. package/dist/modules/log-streaming.ee/log-streaming.module.d.ts +5 -0
  75. package/dist/modules/log-streaming.ee/log-streaming.module.js +66 -0
  76. package/dist/modules/mcp/mcp-oauth.helpers.js +0 -0
  77. package/dist/modules/mcp/mcp.oauth-clients.controller.js +0 -0
  78. package/dist/modules/mcp/tools/execute-workflow.tool.d.ts +10 -10
  79. package/dist/modules/mcp/tools/schemas.d.ts +10 -10
  80. package/dist/modules/source-control.ee/constants.d.ts +17 -0
  81. package/dist/modules/source-control.ee/constants.js +22 -0
  82. package/dist/modules/source-control.ee/middleware/source-control-enabled-middleware.ee.d.ts +2 -0
  83. package/dist/modules/source-control.ee/middleware/source-control-enabled-middleware.ee.js +18 -0
  84. package/dist/modules/source-control.ee/source-control-export.service.ee.d.ts +37 -0
  85. package/dist/modules/source-control.ee/source-control-export.service.ee.js +426 -0
  86. package/dist/modules/source-control.ee/source-control-git.service.ee.d.ts +59 -0
  87. package/dist/modules/source-control.ee/source-control-git.service.ee.js +427 -0
  88. package/dist/modules/source-control.ee/source-control-helper.ee.d.ts +49 -0
  89. package/dist/modules/source-control.ee/source-control-helper.ee.js +241 -0
  90. package/dist/modules/source-control.ee/source-control-import.service.ee.d.ts +110 -0
  91. package/dist/modules/source-control.ee/source-control-import.service.ee.js +957 -0
  92. package/dist/modules/source-control.ee/source-control-preferences.service.ee.d.ts +46 -0
  93. package/dist/modules/source-control.ee/source-control-preferences.service.ee.js +309 -0
  94. package/dist/modules/source-control.ee/source-control-resource-helper.d.ts +4 -0
  95. package/dist/modules/source-control.ee/source-control-resource-helper.js +20 -0
  96. package/dist/modules/source-control.ee/source-control-scoped.service.d.ts +17 -0
  97. package/dist/modules/source-control.ee/source-control-scoped.service.js +134 -0
  98. package/dist/modules/source-control.ee/source-control-status.service.ee.d.ts +90 -0
  99. package/dist/modules/source-control.ee/source-control-status.service.ee.js +596 -0
  100. package/dist/modules/source-control.ee/source-control.config.d.ts +3 -0
  101. package/dist/modules/source-control.ee/source-control.config.js +26 -0
  102. package/dist/modules/source-control.ee/source-control.controller.ee.d.ts +157 -0
  103. package/dist/modules/source-control.ee/source-control.controller.ee.js +347 -0
  104. package/dist/modules/source-control.ee/source-control.module.d.ts +4 -0
  105. package/dist/modules/source-control.ee/source-control.module.js +59 -0
  106. package/dist/modules/source-control.ee/source-control.service.ee.d.ts +125 -0
  107. package/dist/modules/source-control.ee/source-control.service.ee.js +466 -0
  108. package/dist/modules/source-control.ee/types/export-result.d.ts +10 -0
  109. package/dist/modules/source-control.ee/types/export-result.js +2 -0
  110. package/dist/modules/source-control.ee/types/exportable-credential.d.ts +14 -0
  111. package/dist/modules/source-control.ee/types/exportable-credential.js +2 -0
  112. package/dist/modules/source-control.ee/types/exportable-folders.d.ts +11 -0
  113. package/dist/modules/source-control.ee/types/exportable-folders.js +2 -0
  114. package/dist/modules/source-control.ee/types/exportable-project.d.ts +17 -0
  115. package/dist/modules/source-control.ee/types/exportable-project.js +2 -0
  116. package/dist/modules/source-control.ee/types/exportable-tags.d.ts +5 -0
  117. package/dist/modules/source-control.ee/types/exportable-tags.js +2 -0
  118. package/dist/modules/source-control.ee/types/exportable-variable.d.ts +7 -0
  119. package/dist/modules/source-control.ee/types/exportable-variable.js +2 -0
  120. package/dist/modules/source-control.ee/types/exportable-workflow.d.ts +14 -0
  121. package/dist/modules/source-control.ee/types/exportable-workflow.js +2 -0
  122. package/dist/modules/source-control.ee/types/import-result.d.ts +20 -0
  123. package/dist/modules/source-control.ee/types/import-result.js +2 -0
  124. package/dist/modules/source-control.ee/types/key-pair-type.d.ts +1 -0
  125. package/dist/modules/source-control.ee/types/key-pair-type.js +2 -0
  126. package/dist/modules/source-control.ee/types/key-pair.d.ts +4 -0
  127. package/dist/modules/source-control.ee/types/key-pair.js +2 -0
  128. package/dist/modules/source-control.ee/types/requests.d.ts +21 -0
  129. package/dist/modules/source-control.ee/types/requests.js +2 -0
  130. package/dist/modules/source-control.ee/types/resource-owner.d.ts +17 -0
  131. package/dist/modules/source-control.ee/types/resource-owner.js +2 -0
  132. package/dist/modules/source-control.ee/types/source-control-commit.d.ts +3 -0
  133. package/dist/modules/source-control.ee/types/source-control-commit.js +20 -0
  134. package/dist/modules/source-control.ee/types/source-control-context.d.ts +7 -0
  135. package/dist/modules/source-control.ee/types/source-control-context.js +16 -0
  136. package/dist/modules/source-control.ee/types/source-control-disconnect.d.ts +3 -0
  137. package/dist/modules/source-control.ee/types/source-control-disconnect.js +21 -0
  138. package/dist/modules/source-control.ee/types/source-control-generate-key-pair.d.ts +4 -0
  139. package/dist/modules/source-control.ee/types/source-control-generate-key-pair.js +21 -0
  140. package/dist/modules/source-control.ee/types/source-control-get-status.d.ts +10 -0
  141. package/dist/modules/source-control.ee/types/source-control-get-status.js +42 -0
  142. package/dist/modules/source-control.ee/types/source-control-preferences.d.ts +17 -0
  143. package/dist/modules/source-control.ee/types/source-control-preferences.js +88 -0
  144. package/dist/modules/source-control.ee/types/source-control-push.d.ts +3 -0
  145. package/dist/modules/source-control.ee/types/source-control-push.js +21 -0
  146. package/dist/modules/source-control.ee/types/source-control-set-branch.d.ts +3 -0
  147. package/dist/modules/source-control.ee/types/source-control-set-branch.js +20 -0
  148. package/dist/modules/source-control.ee/types/source-control-set-read-only.d.ts +3 -0
  149. package/dist/modules/source-control.ee/types/source-control-set-read-only.js +20 -0
  150. package/dist/modules/source-control.ee/types/source-control-stage.d.ts +5 -0
  151. package/dist/modules/source-control.ee/types/source-control-stage.js +31 -0
  152. package/dist/modules/source-control.ee/types/source-control-workflow-version-id.d.ts +12 -0
  153. package/dist/modules/source-control.ee/types/source-control-workflow-version-id.js +2 -0
  154. package/dist/modules/sso-oidc/constants.d.ts +3 -0
  155. package/dist/modules/sso-oidc/constants.js +6 -0
  156. package/dist/modules/sso-oidc/oidc.controller.ee.d.ts +23 -0
  157. package/dist/modules/sso-oidc/oidc.controller.ee.js +123 -0
  158. package/dist/modules/sso-oidc/oidc.service.ee.d.ts +56 -0
  159. package/dist/modules/sso-oidc/oidc.service.ee.js +468 -0
  160. package/dist/modules/sso-oidc/sso-oidc.module.d.ts +4 -0
  161. package/dist/modules/sso-oidc/sso-oidc.module.js +55 -0
  162. package/dist/modules/sso-saml/constants.d.ts +3 -0
  163. package/dist/modules/sso-saml/constants.js +6 -0
  164. package/dist/modules/sso-saml/errors/invalid-saml-metadata-url.error.d.ts +4 -0
  165. package/dist/modules/sso-saml/errors/invalid-saml-metadata-url.error.js +10 -0
  166. package/dist/modules/sso-saml/errors/invalid-saml-metadata.error.d.ts +4 -0
  167. package/dist/modules/sso-saml/errors/invalid-saml-metadata.error.js +10 -0
  168. package/dist/modules/sso-saml/middleware/saml-enabled-middleware.d.ts +3 -0
  169. package/dist/modules/sso-saml/middleware/saml-enabled-middleware.js +22 -0
  170. package/dist/modules/sso-saml/saml-helpers.d.ts +19 -0
  171. package/dist/modules/sso-saml/saml-helpers.js +129 -0
  172. package/dist/modules/sso-saml/saml-validator.d.ts +16 -0
  173. package/dist/modules/sso-saml/saml-validator.js +129 -0
  174. package/dist/modules/sso-saml/saml.controller.ee.d.ts +50 -0
  175. package/dist/modules/sso-saml/saml.controller.ee.js +227 -0
  176. package/dist/modules/sso-saml/saml.service.ee.d.ts +52 -0
  177. package/dist/modules/sso-saml/saml.service.ee.js +462 -0
  178. package/dist/modules/sso-saml/schema/metadata-exchange.xsd.d.ts +2 -0
  179. package/dist/modules/sso-saml/schema/metadata-exchange.xsd.js +118 -0
  180. package/dist/modules/sso-saml/schema/oasis-200401-wss-wssecurity-secext-1.0.xsd.d.ts +2 -0
  181. package/dist/modules/sso-saml/schema/oasis-200401-wss-wssecurity-secext-1.0.xsd.js +201 -0
  182. package/dist/modules/sso-saml/schema/oasis-200401-wss-wssecurity-utility-1.0.xsd.d.ts +2 -0
  183. package/dist/modules/sso-saml/schema/oasis-200401-wss-wssecurity-utility-1.0.xsd.js +114 -0
  184. package/dist/modules/sso-saml/schema/saml-schema-assertion-2.0.xsd.d.ts +2 -0
  185. package/dist/modules/sso-saml/schema/saml-schema-assertion-2.0.xsd.js +289 -0
  186. package/dist/modules/sso-saml/schema/saml-schema-metadata-2.0.xsd.d.ts +2 -0
  187. package/dist/modules/sso-saml/schema/saml-schema-metadata-2.0.xsd.js +344 -0
  188. package/dist/modules/sso-saml/schema/saml-schema-protocol-2.0.xsd.d.ts +2 -0
  189. package/dist/modules/sso-saml/schema/saml-schema-protocol-2.0.xsd.js +308 -0
  190. package/dist/modules/sso-saml/schema/ws-addr.xsd.d.ts +2 -0
  191. package/dist/modules/sso-saml/schema/ws-addr.xsd.js +143 -0
  192. package/dist/modules/sso-saml/schema/ws-authorization.xsd.d.ts +2 -0
  193. package/dist/modules/sso-saml/schema/ws-authorization.xsd.js +151 -0
  194. package/dist/modules/sso-saml/schema/ws-federation.xsd.d.ts +2 -0
  195. package/dist/modules/sso-saml/schema/ws-federation.xsd.js +476 -0
  196. package/dist/modules/sso-saml/schema/ws-securitypolicy-1.2.xsd.d.ts +2 -0
  197. package/dist/modules/sso-saml/schema/ws-securitypolicy-1.2.xsd.js +1211 -0
  198. package/dist/modules/sso-saml/schema/xenc-schema.xsd.d.ts +2 -0
  199. package/dist/modules/sso-saml/schema/xenc-schema.xsd.js +151 -0
  200. package/dist/modules/sso-saml/schema/xml.xsd.d.ts +2 -0
  201. package/dist/modules/sso-saml/schema/xml.xsd.js +123 -0
  202. package/dist/modules/sso-saml/schema/xmldsig-core-schema.xsd.d.ts +2 -0
  203. package/dist/modules/sso-saml/schema/xmldsig-core-schema.xsd.js +324 -0
  204. package/dist/modules/sso-saml/service-provider.ee.d.ts +6 -0
  205. package/dist/modules/sso-saml/service-provider.ee.js +44 -0
  206. package/dist/modules/sso-saml/sso-saml.module.d.ts +4 -0
  207. package/dist/modules/sso-saml/sso-saml.module.js +55 -0
  208. package/dist/modules/sso-saml/types.d.ts +4 -0
  209. package/dist/modules/sso-saml/types.js +2 -0
  210. package/dist/modules/sso-saml/views/init-sso-post.d.ts +2 -0
  211. package/dist/modules/sso-saml/views/init-sso-post.js +16 -0
  212. package/dist/node-lib.d.ts +10 -0
  213. package/dist/node-lib.js +137 -0
  214. package/dist/push/index.d.ts +1 -1
  215. package/dist/server.d.ts +1 -0
  216. package/dist/server.js +1 -0
  217. package/dist/services/cors-service.d.ts +7 -0
  218. package/dist/services/cors-service.js +50 -0
  219. package/dist/services/static-auth-service.d.ts +4 -0
  220. package/dist/services/static-auth-service.js +29 -0
  221. package/dist/sso.ee/saml/schema/metadata-exchange.xsd.js +0 -0
  222. package/dist/task-runners/task-broker/errors/task-runner-accept-timeout.error.js +0 -0
  223. package/dist/typecheck.tsbuildinfo +1 -0
  224. package/dist/user-management/email/templates/workflow-failure.handlebars +211 -0
  225. package/dist/utils/cors.util.d.ts +2 -0
  226. package/dist/utils/cors.util.js +17 -0
  227. package/dist/webhooks/waiting-forms.js +3 -3
  228. package/dist/webhooks/waiting-webhooks.js +2 -0
  229. package/dist/workflows/workflow.service.d.ts +2 -2
  230. package/dist/workflows/workflows.controller.d.ts +6 -6
  231. package/package.json +22 -21
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.SamlController = void 0;
19
+ const api_types_1 = require("@n8n/api-types");
20
+ const decorators_1 = require("@n8n/decorators");
21
+ const querystring_1 = __importDefault(require("querystring"));
22
+ const url_1 = __importDefault(require("url"));
23
+ const auth_service_1 = require("../../auth/auth.service");
24
+ const auth_error_1 = require("../../errors/response-errors/auth.error");
25
+ const event_service_1 = require("../../events/event.service");
26
+ const response_helper_1 = require("../../response-helper");
27
+ const url_service_1 = require("../../services/url.service");
28
+ const sso_helpers_1 = require("../../sso.ee/sso-helpers");
29
+ const saml_enabled_middleware_1 = require("./middleware/saml-enabled-middleware");
30
+ const saml_helpers_1 = require("./saml-helpers");
31
+ const saml_service_ee_1 = require("./saml.service.ee");
32
+ const service_provider_ee_1 = require("./service-provider.ee");
33
+ const init_sso_post_1 = require("./views/init-sso-post");
34
+ let SamlController = class SamlController {
35
+ constructor(authService, samlService, urlService, eventService) {
36
+ this.authService = authService;
37
+ this.samlService = samlService;
38
+ this.urlService = urlService;
39
+ this.eventService = eventService;
40
+ }
41
+ async getServiceProviderMetadata(_, res) {
42
+ return res
43
+ .header('Content-Type', 'text/xml')
44
+ .send(this.samlService.getServiceProviderInstance().getMetadata());
45
+ }
46
+ async configGet() {
47
+ const prefs = this.samlService.samlPreferences;
48
+ return {
49
+ ...prefs,
50
+ entityID: (0, service_provider_ee_1.getServiceProviderEntityId)(),
51
+ returnUrl: (0, service_provider_ee_1.getServiceProviderReturnUrl)(),
52
+ };
53
+ }
54
+ async configPost(_req, _res, payload) {
55
+ return await this.samlService.setSamlPreferences(payload);
56
+ }
57
+ async toggleEnabledPost(_req, res, { loginEnabled }) {
58
+ await this.samlService.setSamlPreferences({ loginEnabled });
59
+ return res.sendStatus(200);
60
+ }
61
+ async acsGet(req, res) {
62
+ return await this.acsHandler(req, res, 'redirect');
63
+ }
64
+ async acsPost(req, res, payload) {
65
+ return await this.acsHandler(req, res, 'post', payload);
66
+ }
67
+ async acsHandler(req, res, binding, payload = {}) {
68
+ try {
69
+ const loginResult = await this.samlService.handleSamlLogin(req, binding);
70
+ if ((0, saml_helpers_1.isConnectionTestRequest)(payload)) {
71
+ if (loginResult.authenticatedUser) {
72
+ return res.render('saml-connection-test-success', loginResult.attributes);
73
+ }
74
+ else {
75
+ return res.render('saml-connection-test-failed', {
76
+ message: '',
77
+ attributes: loginResult.attributes,
78
+ });
79
+ }
80
+ }
81
+ if (loginResult.authenticatedUser) {
82
+ this.eventService.emit('user-logged-in', {
83
+ user: loginResult.authenticatedUser,
84
+ authenticationMethod: 'saml',
85
+ });
86
+ if ((0, sso_helpers_1.isSamlLicensedAndEnabled)()) {
87
+ this.authService.issueCookie(res, loginResult.authenticatedUser, true, req.browserId);
88
+ if (loginResult.onboardingRequired) {
89
+ return res.redirect(this.urlService.getInstanceBaseUrl() + '/saml/onboarding');
90
+ }
91
+ else {
92
+ const safeRedirectUrl = payload.RelayState
93
+ ? this.validateRedirectUrl(payload.RelayState)
94
+ : '/';
95
+ return res.redirect(this.urlService.getInstanceBaseUrl() + safeRedirectUrl);
96
+ }
97
+ }
98
+ else {
99
+ return res.status(202).send(loginResult.attributes);
100
+ }
101
+ }
102
+ this.eventService.emit('user-login-failed', {
103
+ userEmail: loginResult.attributes.email ?? 'unknown',
104
+ authenticationMethod: 'saml',
105
+ });
106
+ return (0, response_helper_1.sendErrorResponse)(res, new auth_error_1.AuthError('SAML Authentication failed'));
107
+ }
108
+ catch (error) {
109
+ if ((0, saml_helpers_1.isConnectionTestRequest)(payload)) {
110
+ return res.render('saml-connection-test-failed', { message: error.message });
111
+ }
112
+ this.eventService.emit('user-login-failed', {
113
+ userEmail: 'unknown',
114
+ authenticationMethod: 'saml',
115
+ });
116
+ return (0, response_helper_1.sendErrorResponse)(res, new auth_error_1.AuthError('SAML Authentication failed: ' + error.message));
117
+ }
118
+ }
119
+ async initSsoGet(req, res) {
120
+ let redirectUrl = req.query.redirect ?? '';
121
+ try {
122
+ const refererUrl = req.headers.referer;
123
+ if (refererUrl) {
124
+ const parsedUrl = url_1.default.parse(refererUrl);
125
+ if (parsedUrl?.query) {
126
+ const parsedQueryParams = querystring_1.default.parse(parsedUrl.query);
127
+ if (parsedQueryParams.redirect && typeof parsedQueryParams.redirect === 'string') {
128
+ redirectUrl = querystring_1.default.unescape(parsedQueryParams.redirect);
129
+ }
130
+ }
131
+ }
132
+ }
133
+ catch {
134
+ }
135
+ return await this.handleInitSSO(res, this.validateRedirectUrl(redirectUrl));
136
+ }
137
+ async configTestGet(_, res) {
138
+ return await this.handleInitSSO(res, (0, service_provider_ee_1.getServiceProviderConfigTestReturnUrl)());
139
+ }
140
+ async handleInitSSO(res, relayState) {
141
+ const result = await this.samlService.getLoginRequestUrl(relayState);
142
+ if (result?.binding === 'redirect') {
143
+ return result.context.context;
144
+ }
145
+ else if (result?.binding === 'post') {
146
+ return res.send((0, init_sso_post_1.getInitSSOFormView)(result.context));
147
+ }
148
+ else {
149
+ throw new auth_error_1.AuthError('SAML redirect failed, please check your SAML configuration.');
150
+ }
151
+ }
152
+ validateRedirectUrl(redirectUrl) {
153
+ if (typeof redirectUrl !== 'string' || redirectUrl.trim() === '') {
154
+ return '/';
155
+ }
156
+ const trimmed = redirectUrl.trim();
157
+ if (!trimmed.startsWith('/')) {
158
+ return '/';
159
+ }
160
+ if (trimmed.startsWith('//')) {
161
+ return '/';
162
+ }
163
+ return trimmed;
164
+ }
165
+ };
166
+ exports.SamlController = SamlController;
167
+ __decorate([
168
+ (0, decorators_1.Get)('/metadata', { skipAuth: true }),
169
+ __metadata("design:type", Function),
170
+ __metadata("design:paramtypes", [Object, Object]),
171
+ __metadata("design:returntype", Promise)
172
+ ], SamlController.prototype, "getServiceProviderMetadata", null);
173
+ __decorate([
174
+ (0, decorators_1.Get)('/config', { middlewares: [saml_enabled_middleware_1.samlLicensedMiddleware] }),
175
+ __metadata("design:type", Function),
176
+ __metadata("design:paramtypes", []),
177
+ __metadata("design:returntype", Promise)
178
+ ], SamlController.prototype, "configGet", null);
179
+ __decorate([
180
+ (0, decorators_1.Post)('/config', { middlewares: [saml_enabled_middleware_1.samlLicensedMiddleware] }),
181
+ (0, decorators_1.GlobalScope)('saml:manage'),
182
+ __param(2, decorators_1.Body),
183
+ __metadata("design:type", Function),
184
+ __metadata("design:paramtypes", [Object, Object, api_types_1.SamlPreferences]),
185
+ __metadata("design:returntype", Promise)
186
+ ], SamlController.prototype, "configPost", null);
187
+ __decorate([
188
+ (0, decorators_1.Post)('/config/toggle', { middlewares: [saml_enabled_middleware_1.samlLicensedMiddleware] }),
189
+ (0, decorators_1.GlobalScope)('saml:manage'),
190
+ __param(2, decorators_1.Body),
191
+ __metadata("design:type", Function),
192
+ __metadata("design:paramtypes", [Object, Object, api_types_1.SamlToggleDto]),
193
+ __metadata("design:returntype", Promise)
194
+ ], SamlController.prototype, "toggleEnabledPost", null);
195
+ __decorate([
196
+ (0, decorators_1.Get)('/acs', { middlewares: [saml_enabled_middleware_1.samlLicensedMiddleware], skipAuth: true, usesTemplates: true }),
197
+ __metadata("design:type", Function),
198
+ __metadata("design:paramtypes", [Object, Object]),
199
+ __metadata("design:returntype", Promise)
200
+ ], SamlController.prototype, "acsGet", null);
201
+ __decorate([
202
+ (0, decorators_1.Post)('/acs', { middlewares: [saml_enabled_middleware_1.samlLicensedMiddleware], skipAuth: true, usesTemplates: true }),
203
+ __param(2, decorators_1.Body),
204
+ __metadata("design:type", Function),
205
+ __metadata("design:paramtypes", [Object, Object, api_types_1.SamlAcsDto]),
206
+ __metadata("design:returntype", Promise)
207
+ ], SamlController.prototype, "acsPost", null);
208
+ __decorate([
209
+ (0, decorators_1.Get)('/initsso', { middlewares: [saml_enabled_middleware_1.samlLicensedAndEnabledMiddleware], skipAuth: true }),
210
+ __metadata("design:type", Function),
211
+ __metadata("design:paramtypes", [Object, Object]),
212
+ __metadata("design:returntype", Promise)
213
+ ], SamlController.prototype, "initSsoGet", null);
214
+ __decorate([
215
+ (0, decorators_1.Get)('/config/test', { middlewares: [saml_enabled_middleware_1.samlLicensedMiddleware] }),
216
+ (0, decorators_1.GlobalScope)('saml:manage'),
217
+ __metadata("design:type", Function),
218
+ __metadata("design:paramtypes", [Object, Object]),
219
+ __metadata("design:returntype", Promise)
220
+ ], SamlController.prototype, "configTestGet", null);
221
+ exports.SamlController = SamlController = __decorate([
222
+ (0, decorators_1.RestController)('/sso/saml'),
223
+ __metadata("design:paramtypes", [auth_service_1.AuthService,
224
+ saml_service_ee_1.SamlService,
225
+ url_service_1.UrlService,
226
+ event_service_1.EventService])
227
+ ], SamlController);
@@ -0,0 +1,52 @@
1
+ import type { SamlPreferences } from '@n8n/api-types';
2
+ import { Logger } from '@n8n/backend-common';
3
+ import type { User } from '@n8n/db';
4
+ import { SettingsRepository, UserRepository } from '@n8n/db';
5
+ import type express from 'express';
6
+ import { InstanceSettings } from 'n8n-core';
7
+ import { type IdentityProviderInstance, type ServiceProviderInstance } from 'samlify';
8
+ import type { BindingContext, PostBindingContext } from 'samlify/types/src/entity';
9
+ import { ProvisioningService } from '../../modules/provisioning.ee/provisioning.service.ee';
10
+ import { UrlService } from '../../services/url.service';
11
+ import { SamlValidator } from './saml-validator';
12
+ import type { SamlLoginBinding, SamlUserAttributes } from './types';
13
+ export declare class SamlService {
14
+ private readonly logger;
15
+ private readonly urlService;
16
+ private readonly validator;
17
+ private readonly userRepository;
18
+ private readonly settingsRepository;
19
+ private readonly instanceSettings;
20
+ private readonly provisioningService;
21
+ private identityProviderInstance;
22
+ private samlify;
23
+ private _samlPreferences;
24
+ get samlPreferences(): SamlPreferences;
25
+ constructor(logger: Logger, urlService: UrlService, validator: SamlValidator, userRepository: UserRepository, settingsRepository: SettingsRepository, instanceSettings: InstanceSettings, provisioningService: ProvisioningService);
26
+ init(): Promise<void>;
27
+ loadSamlify(): Promise<void>;
28
+ getIdentityProviderInstance(forceRecreate?: boolean): IdentityProviderInstance;
29
+ getServiceProviderInstance(): ServiceProviderInstance;
30
+ getLoginRequestUrl(relayState?: string, binding?: SamlLoginBinding): Promise<{
31
+ binding: SamlLoginBinding;
32
+ context: BindingContext | PostBindingContext;
33
+ }>;
34
+ private getRedirectLoginRequestUrl;
35
+ private getPostLoginRequestUrl;
36
+ handleSamlLogin(req: express.Request, binding: SamlLoginBinding): Promise<{
37
+ authenticatedUser: User | undefined;
38
+ attributes: SamlUserAttributes;
39
+ onboardingRequired: boolean;
40
+ }>;
41
+ private applySsoProvisioning;
42
+ private broadcastReloadSAMLConfigurationCommand;
43
+ private isReloading;
44
+ reload(): Promise<void>;
45
+ setSamlPreferences(prefs: Partial<SamlPreferences>, tryFallback?: boolean, broadcastReload?: boolean): Promise<SamlPreferences | undefined>;
46
+ loadPreferencesWithoutValidation(prefs: Partial<SamlPreferences>): Promise<void>;
47
+ loadFromDbAndApplySamlPreferences(apply?: boolean, broadcastReload?: boolean): Promise<SamlPreferences | undefined>;
48
+ saveSamlPreferencesToDb(): Promise<SamlPreferences | undefined>;
49
+ fetchMetadataFromUrl(): Promise<string | undefined>;
50
+ getAttributesFromLoginResponse(req: express.Request, binding: SamlLoginBinding): Promise<SamlUserAttributes>;
51
+ reset(): Promise<void>;
52
+ }