n8n-editor-ui 1.60.1 → 1.61.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 (121) hide show
  1. package/dist/assets/@n8n/api-types-1C3yIoBV.js +1 -0
  2. package/dist/assets/@sentry/vue-UFuYeDxK.js +23662 -0
  3. package/dist/assets/@vue-flow/{background-BBsDO5na.js → background-VFdKMN89.js} +2 -2
  4. package/dist/assets/@vue-flow/{controls-3RHEV3L7.js → controls-ByUYVWad.js} +2 -2
  5. package/dist/assets/@vue-flow/{core-CM-Aqnx_.js → core-DgOSPOHv.js} +1 -1
  6. package/dist/assets/@vue-flow/{minimap-CbqX0yYi.js → minimap-CXuyA5pl.js} +2 -2
  7. package/dist/assets/@vue-flow/{node-resizer-CV5M1itj.js → node-resizer-BiyXe9J3.js} +2 -2
  8. package/dist/assets/@vueuse/{core-BZR8MlRU.js → core-DP7mNILw.js} +6 -6
  9. package/dist/assets/{AnnotationTagsDropdown-C6L10zAt.js → AnnotationTagsDropdown-DqvseWwg.js} +3 -3
  10. package/dist/assets/AuthView-BLQKeVDa.js +157 -0
  11. package/dist/assets/{AuthView-CFsZVOHy.css → AuthView-BnHKMYu_.css} +3 -3
  12. package/dist/assets/{CanvasControls-DhP5_ZaG.js → CanvasControls-ColeN4c7.js} +12 -11
  13. package/dist/assets/ChangePasswordView-laaON5B-.js +177 -0
  14. package/dist/assets/{CredentialsView-zPqWzrJZ.js → CredentialsView-RsHO-hid.js} +15 -14
  15. package/dist/assets/{ErrorView-C7_LED8T.js → ErrorView-CVlhihDL.js} +12 -11
  16. package/dist/assets/{ExecutionsFilter-CaMUarba.js → ExecutionsFilter-373wd0v7.js} +4 -4
  17. package/dist/assets/{ExecutionsView-D-faxzDF.js → ExecutionsView-B1Y-qi0D.js} +41 -16
  18. package/dist/assets/{FixedCollectionParameter-BOqBR9JK.js → FixedCollectionParameter-D9g5OebO.js} +12 -11
  19. package/dist/assets/ForgotMyPasswordView-BWtMCTvE.js +127 -0
  20. package/dist/assets/{MainHeader-D5QtvVVm.js → MainHeader-D9Zo0BIA.js} +19 -18
  21. package/dist/assets/{MainSidebar-CVXe55j5.js → MainSidebar-DtqGWmgj.js} +12 -11
  22. package/dist/assets/{NodeCreation-CM9wiEKu.js → NodeCreation-Z5Kx0dXZ.js} +6 -6
  23. package/dist/assets/{NodeCreator-DRzlClIY.js → NodeCreator-Cwd8lDNF.js} +27 -26
  24. package/dist/assets/{NodeViewSwitcher-9b7PTcw5.css → NodeViewSwitcher-Bee93VCg.css} +42 -42
  25. package/dist/assets/{NodeViewSwitcher-BWkrDbac.js → NodeViewSwitcher-DZvKqdTk.js} +147 -71
  26. package/dist/assets/{ProjectCardBadge-BoGz9diL.js → ProjectCardBadge-Dj0cvfM0.js} +2 -2
  27. package/dist/assets/{ProjectSettings-B7iqwGnI.js → ProjectSettings-zPM6vepm.js} +12 -11
  28. package/dist/assets/{ProjectTabs-Cvrg52Pf.js → ProjectTabs-ByCqXofn.js} +3 -3
  29. package/dist/assets/{PushConnectionTracker-DOnROXP4.js → PushConnectionTracker-B4vL4y_R.js} +4 -4
  30. package/dist/assets/{ResourcesListLayout-BF42RJP6.js → ResourcesListLayout-D5Jl-SNJ.js} +4 -4
  31. package/dist/assets/{RunDataAi-BBCJLEbr.js → RunDataAi-50EsjDf6.js} +3 -3
  32. package/dist/assets/RunDataJson-BlxN0xwc.js +219 -0
  33. package/dist/assets/{RunDataJson-DGge2zsB.css → RunDataJson-Dtc8i0I7.css} +12 -10
  34. package/dist/assets/{RunDataJsonActions-r9WehaXR.js → RunDataJsonActions-BnEGvH1N.js} +13 -12
  35. package/dist/assets/{RunDataSearch-DEZgbY-N.js → RunDataSearch-DS3pvMvG.js} +12 -11
  36. package/dist/assets/{RunDataTable-D3OOm7ll.js → RunDataTable-C7ykxdts.js} +17 -16
  37. package/dist/assets/{SamlOnboarding-CkD-eWMm.js → SamlOnboarding-MqtO_Q7o.js} +24 -20
  38. package/dist/assets/{SettingsApiView-D3BTk9vw.js → SettingsApiView-CItYnGov.js} +12 -11
  39. package/dist/assets/{SettingsCommunityNodesView-q-tCQNcW.js → SettingsCommunityNodesView-DZNQSYYy.js} +17 -41
  40. package/dist/assets/{SettingsExternalSecrets-4GeXTRK_.js → SettingsExternalSecrets-BVw27tqX.js} +12 -11
  41. package/dist/assets/{SettingsFakeDoorView-D27PjwUb.js → SettingsFakeDoorView-DwImvIGm.js} +12 -11
  42. package/dist/assets/SettingsLdapView-CCXZA2cJ.js +746 -0
  43. package/dist/assets/{SettingsLogStreamingView-CNoL-zt6.js → SettingsLogStreamingView-CyrM8m6J.js} +12 -11
  44. package/dist/assets/{SettingsPersonalView-FC1RJZD3.js → SettingsPersonalView-MdnL1_ii.js} +12 -11
  45. package/dist/assets/{SettingsSourceControl-_HOgFrui.js → SettingsSourceControl-DCY2PqLz.js} +12 -11
  46. package/dist/assets/{SettingsSso-C-eicXLy.js → SettingsSso-B8p13jLP.js} +12 -11
  47. package/dist/assets/{SettingsUsageAndPlan-PX3ezziV.js → SettingsUsageAndPlan-BN31-STz.js} +17 -33
  48. package/dist/assets/{SettingsUsageAndPlan-9dhwk2eO.css → SettingsUsageAndPlan-ayybRhnz.css} +3 -3
  49. package/dist/assets/{SettingsUsersView-CSHs7EOy.js → SettingsUsersView-BMsD7GNO.js} +12 -11
  50. package/dist/assets/SettingsView-CtXcNiVg.js +276 -0
  51. package/dist/assets/SetupView-BLuVCwIj.js +140 -0
  52. package/dist/assets/{SetupWorkflowCredentialsButton-DDUqVzq4.js → SetupWorkflowCredentialsButton-Div5SUON.js} +11 -10
  53. package/dist/assets/{SetupWorkflowFromTemplateView-BOzz1mg-.js → SetupWorkflowFromTemplateView-DfFXky0J.js} +14 -13
  54. package/dist/assets/{SigninView-CBZFW33H.js → SigninView-BqL0a-cZ.js} +121 -133
  55. package/dist/assets/{SignoutView-CsZY5epQ.js → SignoutView-D01-eFg_.js} +11 -10
  56. package/dist/assets/{SignupView-BMZ58KZV.js → SignupView-UX8-7Wvn.js} +12 -11
  57. package/dist/assets/{TemplateDetails-yCPWrFJ_.js → TemplateDetails-DvrkJ9pc.js} +4 -4
  58. package/dist/assets/{TemplateList-D6SkLaGz.js → TemplateList-Dxye-Lxs.js} +3 -3
  59. package/dist/assets/TemplatesCollectionView-kKvnA0FM.js +240 -0
  60. package/dist/assets/{TemplatesSearchView-Vf3xXYJ5.js → TemplatesSearchView-sUgBNVnh.js} +139 -158
  61. package/dist/assets/{TemplatesView-1ta2NOlv.js → TemplatesView-CCcE6ceG.js} +3 -3
  62. package/dist/assets/TemplatesWorkflowView-CQWB7PN1.js +245 -0
  63. package/dist/assets/{VariablesView-DoD7bryP.js → VariablesView-BFvSr6vu.js} +15 -14
  64. package/dist/assets/{VariablesView-Bj3MOQeD.css → VariablesView-D88cddoZ.css} +18 -18
  65. package/dist/assets/{WorkerView-DBAJ7wby.js → WorkerView-BpwPXZ6o.js} +16 -15
  66. package/dist/assets/{WorkflowActivator-CEAGoTVp.js → WorkflowActivator-C98Z6FLJ.js} +4 -4
  67. package/dist/assets/{WorkflowExecutionsInfoAccordion-Cm1Tl7oM.js → WorkflowExecutionsInfoAccordion-DVXqECJb.js} +3 -3
  68. package/dist/assets/{WorkflowExecutionsLandingPage-DNYtElvS.js → WorkflowExecutionsLandingPage-DXDsNOih.js} +13 -12
  69. package/dist/assets/{WorkflowExecutionsPreview-D6jklpDe.js → WorkflowExecutionsPreview-6-8MfOm9.js} +27 -16
  70. package/dist/assets/{WorkflowExecutionsView-Bfiz_05B.js → WorkflowExecutionsView-D4lW8BoL.js} +16 -15
  71. package/dist/assets/{WorkflowHistory-B6J45Y57.js → WorkflowHistory-Bvx0HbCZ.js} +14 -13
  72. package/dist/assets/{WorkflowOnboardingView-sLbtLj5U.js → WorkflowOnboardingView-otfpn0DB.js} +11 -10
  73. package/dist/assets/{WorkflowPreview-C2PJW2WU.js → WorkflowPreview-DdyMz4mx.js} +3 -3
  74. package/dist/assets/{WorkflowsView-B3hH8n6V.js → WorkflowsView-BUbDrUpG.js} +17 -16
  75. package/dist/assets/{cloud-D5p2bTjc.js → cloud-Cxh_nDLb.js} +11 -10
  76. package/dist/assets/{dateFormatter-BQycHW-g.js → dateFormatter-BFLNShbl.js} +1 -1
  77. package/dist/assets/{dateformat-DYMw-0LU.js → dateformat-DfmxUC-6.js} +1 -1
  78. package/dist/assets/email-providers-DOaL31jY.js +1 -0
  79. package/dist/assets/{fast-json-stable-stringify-dgHKYgJi.js → fast-json-stable-stringify-DDe8InQN.js} +1 -1
  80. package/dist/assets/{file-saver-taM_eo9L.js → file-saver-DU9Y2h5E.js} +1 -1
  81. package/dist/assets/highlight.js-DOaL31jY.js +1 -0
  82. package/dist/assets/{humanize-duration-DLMU-N1g.js → humanize-duration-BS9LxAIm.js} +1 -1
  83. package/dist/assets/{index-DAAQrhEE.js → index-BK9gQqb6.js} +9034 -8999
  84. package/dist/assets/{index-CDdd6K0Q.css → index-CUw3_ZiY.css} +216 -138
  85. package/dist/assets/{jsonpath-B2TgTZLp.js → jsonpath-DbhX-MUF.js} +1 -1
  86. package/dist/assets/{n8n-DS_nZ0wb.js → n8n-DLOq6Kd-.js} +3306 -3377
  87. package/dist/assets/{n8n-CZShcbZx.css → n8n-wnQsH82d.css} +60 -60
  88. package/dist/assets/{pinia-C4PgcsWV.js → pinia-CH9HlKCh.js} +155 -8
  89. package/dist/assets/{prettier-_aQB57xD.js → prettier-DuWRKCwA.js} +1115 -1052
  90. package/dist/assets/{pushConnection.store-CGzscDgD.js → pushConnection.store-0ae9n5RY.js} +3 -3
  91. package/dist/assets/{qrcode.vue-EmD3D6Vb.js → qrcode.vue-BxNS_c3b.js} +1 -1
  92. package/dist/assets/{templateActions-CR50SItO.js → templateActions-DWDf_J_7.js} +1 -1
  93. package/dist/assets/{useBeforeUnload-BtEtqBA0.js → useBeforeUnload-Bu28h_Oh.js} +2 -2
  94. package/dist/assets/{useExecutionDebugging-DdfabEne.js → useExecutionDebugging-Ij7ccVln.js} +2 -2
  95. package/dist/assets/{usePushConnection-Bs4EtQYE.js → usePushConnection-C5cJk_Eh.js} +5 -5
  96. package/dist/assets/{useUserHelpers-5Z9lMhqT.js → useUserHelpers-Dec8q_5J.js} +1 -1
  97. package/dist/assets/{useWorkflowActivate-BvN97i1i.js → useWorkflowActivate-DhxP8t5T.js} +2 -2
  98. package/dist/assets/{v3-infinite-loading-BDSwUlAm.js → v3-infinite-loading-lAZO0HDs.js} +1 -1
  99. package/dist/assets/{vendor-DCtS1fjk.js → vendor-DCeaNtb_.js} +212 -133
  100. package/dist/assets/{vue-agile-Dr5uE4S4.js → vue-agile-B6SWje8b.js} +2 -2
  101. package/dist/assets/{vue-chartjs-ytwxJ63I.js → vue-chartjs-CAJPqBur.js} +1 -1
  102. package/dist/assets/{vue-i18n-DBLN2Rh9.js → vue-i18n-CVQE9o3c.js} +1 -1
  103. package/dist/assets/{vue-json-pretty-DbJSbzQx.js → vue-json-pretty-DyN9p2di.js} +2 -2
  104. package/dist/assets/xss-DOaL31jY.js +1 -0
  105. package/dist/index.html +35 -33
  106. package/index.html +1 -0
  107. package/package.json +1 -1
  108. package/vite.config.mts +3 -3
  109. package/dist/assets/@n8n/api-types-l0sNRNKZ.js +0 -1
  110. package/dist/assets/AuthView-C4BGHvOD.js +0 -170
  111. package/dist/assets/ChangePasswordView-DAER_rhe.js +0 -184
  112. package/dist/assets/ForgotMyPasswordView-DnB1YoK7.js +0 -133
  113. package/dist/assets/RunDataJson-Cxnl7zBS.js +0 -260
  114. package/dist/assets/SettingsLdapView-D1c597gY.js +0 -769
  115. package/dist/assets/SettingsView-B_m4_yr-.js +0 -312
  116. package/dist/assets/SetupView-B_DKgHYt.js +0 -148
  117. package/dist/assets/TemplatesCollectionView-CGWvieer.js +0 -253
  118. package/dist/assets/TemplatesWorkflowView-CxnRbF7x.js +0 -255
  119. package/dist/assets/email-providers-NhjWeVZA.js +0 -1
  120. package/dist/assets/highlight.js-NhjWeVZA.js +0 -1
  121. package/dist/assets/xss-NhjWeVZA.js +0 -1
@@ -0,0 +1,746 @@
1
+ import { I as defineComponent, r as ref, f as computed, q as onMounted, an as resolveComponent, au as resolveDirective, J as openBlock, K as createElementBlock, L as createBaseVNode, a8 as createVNode, a3 as withCtx, a6 as createTextVNode, a7 as toDisplayString, u as unref, _ as normalizeClass, a4 as withDirectives, V as createBlock, U as createCommentVNode } from "./vendor-DCeaNtb_.js";
2
+ import { a as useToast, c as useSettingsStore, f as useUIStore, b as useI18n, y as useMessage, ds as capitalizeFirstLetter, dt as convertToDisplayDate, D as MODAL_CONFIRM } from "./index-BK9gQqb6.js";
3
+ import { h as humanizeDuration } from "./humanize-duration-BS9LxAIm.js";
4
+ import { aM as ElTableColumn, a7 as ElTable, S as createFormEventBus, _ as _export_sfc } from "./n8n-DLOq6Kd-.js";
5
+ import { K } from "./v3-infinite-loading-lAZO0HDs.js";
6
+ import "./@sentry/vue-UFuYeDxK.js";
7
+ import "./axios-B4zXCSve.js";
8
+ import "./flatted-D70IerrI.js";
9
+ import "./pinia-CH9HlKCh.js";
10
+ import "./bowser-C3wWO1p5.js";
11
+ import "./@vueuse/core-DP7mNILw.js";
12
+ import "./lodash-es-rVh4nriD.js";
13
+ import "./uuid-BoySKAeK.js";
14
+ import "./dateformat-DfmxUC-6.js";
15
+ import "./vue-i18n-CVQE9o3c.js";
16
+ import "./@n8n/permissions-BxSXRD9U.js";
17
+ import "./@jsplumb/util-BwtpiQ4c.js";
18
+ import "./@jsplumb/core-B__RSZHf.js";
19
+ import "./@jsplumb/common-s1StEx7B.js";
20
+ import "./@jsplumb/connector-bezier-D659hq4c.js";
21
+ import "./@jsplumb/browser-ui-BphmFVJY.js";
22
+ import "./luxon-Bt_g4NOb.js";
23
+ import "./@n8n/codemirror-lang-CIGGB1t0.js";
24
+ import "./@lezer/common-CnY9etib.js";
25
+ import "./@n8n/codemirror-lang-sql-C41WNa63.js";
26
+ import "./prettier-DuWRKCwA.js";
27
+ import "./codemirror-lang-html-n8n-CXTCIWzP.js";
28
+ import "./esprima-next-DUEu30kB.js";
29
+ import "./fast-json-stable-stringify-DDe8InQN.js";
30
+ import "./timeago.js-CgQus8nl.js";
31
+ import "./qrcode.vue-BxNS_c3b.js";
32
+ import "./vue3-touch-events-DVOgU3fI.js";
33
+ import "./chart.js-DiBOFLDH.js";
34
+ const _hoisted_1 = { key: 0 };
35
+ const _hoisted_2 = { key: 1 };
36
+ const _hoisted_3 = { key: 0 };
37
+ const _hoisted_4 = { class: "pb-3xl" };
38
+ const _sfc_main = /* @__PURE__ */ defineComponent({
39
+ __name: "SettingsLdapView",
40
+ setup(__props) {
41
+ const toast = useToast();
42
+ const i18n = useI18n();
43
+ const message = useMessage();
44
+ const settingsStore = useSettingsStore();
45
+ const uiStore = useUIStore();
46
+ const dataTable = ref([]);
47
+ const tableKey = ref(0);
48
+ const adConfig = ref();
49
+ const loadingTestConnection = ref(false);
50
+ const loadingDryRun = ref(false);
51
+ const loadingLiveRun = ref(false);
52
+ const loadingTable = ref(false);
53
+ const hasAnyChanges = ref(false);
54
+ const formInputs = ref(null);
55
+ const formBus = createFormEventBus();
56
+ const readyToSubmit = ref(false);
57
+ const page = ref(0);
58
+ const loginEnabled = ref(false);
59
+ const syncEnabled = ref(false);
60
+ const ldapConfigFormRef = ref();
61
+ const isLDAPFeatureEnabled = computed(() => settingsStore.settings.enterprise.ldap);
62
+ const goToUpgrade = async () => await uiStore.goToUpgrade("ldap", "upgrade-ldap");
63
+ const cellClassStyle = ({ row, column }) => {
64
+ if (column.property === "status") {
65
+ if (row.status === "Success") {
66
+ return { color: "green" };
67
+ } else if (row.status === "Error") {
68
+ return { color: "red" };
69
+ }
70
+ }
71
+ if (column.property === "runMode") {
72
+ if (row.runMode === "Dry") {
73
+ return { color: "orange" };
74
+ } else if (row.runMode === "Live") {
75
+ return { color: "blue" };
76
+ }
77
+ }
78
+ return {};
79
+ };
80
+ const onInput = (input) => {
81
+ if (input.name === "loginEnabled" && typeof input.value === "boolean") {
82
+ loginEnabled.value = input.value;
83
+ }
84
+ if (input.name === "synchronizationEnabled" && typeof input.value === "boolean") {
85
+ syncEnabled.value = input.value;
86
+ }
87
+ hasAnyChanges.value = true;
88
+ };
89
+ const onReadyToSubmit = (ready) => {
90
+ readyToSubmit.value = ready;
91
+ };
92
+ const syncDataMapper = (sync) => {
93
+ const startedAt = new Date(sync.startedAt);
94
+ const endedAt = new Date(sync.endedAt);
95
+ const runTimeInMinutes = endedAt.getTime() - startedAt.getTime();
96
+ return {
97
+ runTime: humanizeDuration(runTimeInMinutes),
98
+ runMode: capitalizeFirstLetter(sync.runMode),
99
+ status: capitalizeFirstLetter(sync.status),
100
+ endedAt: convertToDisplayDate(endedAt.getTime()),
101
+ details: i18n.baseText("settings.ldap.usersScanned", {
102
+ interpolate: {
103
+ scanned: sync.scanned.toString()
104
+ }
105
+ })
106
+ };
107
+ };
108
+ const onSubmit = async () => {
109
+ if (!hasAnyChanges.value || !ldapConfigFormRef.value) {
110
+ return;
111
+ }
112
+ const formValues = ldapConfigFormRef.value.getValues();
113
+ const newConfiguration = {
114
+ loginEnabled: formValues.loginEnabled,
115
+ loginLabel: formValues.loginLabel,
116
+ connectionUrl: formValues.serverAddress,
117
+ allowUnauthorizedCerts: formValues.allowUnauthorizedCerts,
118
+ connectionPort: +formValues.port,
119
+ connectionSecurity: formValues.connectionSecurity,
120
+ baseDn: formValues.baseDn,
121
+ bindingAdminDn: formValues.bindingType === "admin" ? formValues.adminDn : "",
122
+ bindingAdminPassword: formValues.bindingType === "admin" ? formValues.adminPassword : "",
123
+ emailAttribute: formValues.email,
124
+ firstNameAttribute: formValues.firstName,
125
+ lastNameAttribute: formValues.lastName,
126
+ loginIdAttribute: formValues.loginId,
127
+ ldapIdAttribute: formValues.ldapId,
128
+ userFilter: formValues.userFilter,
129
+ synchronizationEnabled: formValues.synchronizationEnabled,
130
+ synchronizationInterval: +formValues.synchronizationInterval,
131
+ searchPageSize: +formValues.pageSize,
132
+ searchTimeout: +formValues.searchTimeout
133
+ };
134
+ let saveForm = true;
135
+ if (!adConfig.value)
136
+ return;
137
+ try {
138
+ if (adConfig.value.loginEnabled && !newConfiguration.loginEnabled) {
139
+ const confirmAction = await message.confirm(
140
+ i18n.baseText("settings.ldap.confirmMessage.beforeSaveForm.message"),
141
+ i18n.baseText("settings.ldap.confirmMessage.beforeSaveForm.headline"),
142
+ {
143
+ cancelButtonText: i18n.baseText(
144
+ "settings.ldap.confirmMessage.beforeSaveForm.cancelButtonText"
145
+ ),
146
+ confirmButtonText: i18n.baseText(
147
+ "settings.ldap.confirmMessage.beforeSaveForm.confirmButtonText"
148
+ )
149
+ }
150
+ );
151
+ saveForm = confirmAction === MODAL_CONFIRM;
152
+ }
153
+ if (!saveForm) {
154
+ hasAnyChanges.value = true;
155
+ }
156
+ adConfig.value = await settingsStore.updateLdapConfig(newConfiguration);
157
+ toast.showToast({
158
+ title: i18n.baseText("settings.ldap.updateConfiguration"),
159
+ message: "",
160
+ type: "success"
161
+ });
162
+ } catch (error) {
163
+ toast.showError(error, i18n.baseText("settings.ldap.configurationError"));
164
+ } finally {
165
+ if (saveForm) {
166
+ hasAnyChanges.value = false;
167
+ }
168
+ }
169
+ };
170
+ const onSaveClick = () => {
171
+ formBus.emit("submit");
172
+ };
173
+ const onTestConnectionClick = async () => {
174
+ loadingTestConnection.value = true;
175
+ try {
176
+ await settingsStore.testLdapConnection();
177
+ toast.showToast({
178
+ title: i18n.baseText("settings.ldap.connectionTest"),
179
+ message: i18n.baseText("settings.ldap.toast.connection.success"),
180
+ type: "success"
181
+ });
182
+ } catch (error) {
183
+ toast.showToast({
184
+ title: i18n.baseText("settings.ldap.connectionTestError"),
185
+ message: error.message,
186
+ type: "error"
187
+ });
188
+ } finally {
189
+ loadingTestConnection.value = false;
190
+ }
191
+ };
192
+ const onDryRunClick = async () => {
193
+ loadingDryRun.value = true;
194
+ try {
195
+ await settingsStore.runLdapSync({ type: "dry" });
196
+ toast.showToast({
197
+ title: i18n.baseText("settings.ldap.runSync.title"),
198
+ message: i18n.baseText("settings.ldap.toast.sync.success"),
199
+ type: "success"
200
+ });
201
+ } catch (error) {
202
+ toast.showError(error, i18n.baseText("settings.ldap.synchronizationError"));
203
+ } finally {
204
+ loadingDryRun.value = false;
205
+ await reloadLdapSynchronizations();
206
+ }
207
+ };
208
+ const onLiveRunClick = async () => {
209
+ loadingLiveRun.value = true;
210
+ try {
211
+ await settingsStore.runLdapSync({ type: "live" });
212
+ toast.showToast({
213
+ title: i18n.baseText("settings.ldap.runSync.title"),
214
+ message: i18n.baseText("settings.ldap.toast.sync.success"),
215
+ type: "success"
216
+ });
217
+ } catch (error) {
218
+ toast.showError(error, i18n.baseText("settings.ldap.synchronizationError"));
219
+ } finally {
220
+ loadingLiveRun.value = false;
221
+ await reloadLdapSynchronizations();
222
+ }
223
+ };
224
+ const getLdapConfig = async () => {
225
+ try {
226
+ adConfig.value = await settingsStore.getLdapConfig();
227
+ loginEnabled.value = adConfig.value.loginEnabled;
228
+ syncEnabled.value = adConfig.value.synchronizationEnabled;
229
+ const whenLoginEnabled = (values) => values.loginEnabled === true;
230
+ const whenSyncAndLoginEnabled = (values) => values.synchronizationEnabled === true && values.loginEnabled === true;
231
+ const whenAdminBindingAndLoginEnabled = (values) => values.bindingType === "admin" && values.loginEnabled === true;
232
+ formInputs.value = [
233
+ {
234
+ name: "loginEnabled",
235
+ initialValue: adConfig.value.loginEnabled,
236
+ properties: {
237
+ type: "toggle",
238
+ label: i18n.baseText("settings.ldap.form.loginEnabled.label"),
239
+ tooltipText: i18n.baseText("settings.ldap.form.loginEnabled.tooltip"),
240
+ required: true
241
+ }
242
+ },
243
+ {
244
+ name: "loginLabel",
245
+ initialValue: adConfig.value.loginLabel,
246
+ properties: {
247
+ label: i18n.baseText("settings.ldap.form.loginLabel.label"),
248
+ required: true,
249
+ placeholder: i18n.baseText("settings.ldap.form.loginLabel.placeholder"),
250
+ infoText: i18n.baseText("settings.ldap.form.loginLabel.infoText")
251
+ },
252
+ shouldDisplay: whenLoginEnabled
253
+ },
254
+ {
255
+ name: "serverAddress",
256
+ initialValue: adConfig.value.connectionUrl,
257
+ properties: {
258
+ label: i18n.baseText("settings.ldap.form.serverAddress.label"),
259
+ required: true,
260
+ capitalize: true,
261
+ placeholder: i18n.baseText("settings.ldap.form.serverAddress.placeholder"),
262
+ infoText: i18n.baseText("settings.ldap.form.serverAddress.infoText")
263
+ },
264
+ shouldDisplay: whenLoginEnabled
265
+ },
266
+ {
267
+ name: "port",
268
+ initialValue: adConfig.value.connectionPort,
269
+ properties: {
270
+ type: "number",
271
+ label: i18n.baseText("settings.ldap.form.port.label"),
272
+ capitalize: true,
273
+ infoText: i18n.baseText("settings.ldap.form.port.infoText")
274
+ },
275
+ shouldDisplay: whenLoginEnabled
276
+ },
277
+ {
278
+ name: "connectionSecurity",
279
+ initialValue: adConfig.value.connectionSecurity,
280
+ properties: {
281
+ type: "select",
282
+ label: i18n.baseText("settings.ldap.form.connectionSecurity.label"),
283
+ infoText: i18n.baseText("settings.ldap.form.connectionSecurity.infoText"),
284
+ options: [
285
+ {
286
+ label: "None",
287
+ value: "none"
288
+ },
289
+ {
290
+ label: "TLS",
291
+ value: "tls"
292
+ },
293
+ {
294
+ label: "STARTTLS",
295
+ value: "startTls"
296
+ }
297
+ ],
298
+ required: true,
299
+ capitalize: true
300
+ },
301
+ shouldDisplay: whenLoginEnabled
302
+ },
303
+ {
304
+ name: "allowUnauthorizedCerts",
305
+ initialValue: adConfig.value.allowUnauthorizedCerts,
306
+ properties: {
307
+ type: "toggle",
308
+ label: i18n.baseText("settings.ldap.form.allowUnauthorizedCerts.label"),
309
+ required: false
310
+ },
311
+ shouldDisplay(values) {
312
+ return values.connectionSecurity !== "none" && values.loginEnabled === true;
313
+ }
314
+ },
315
+ {
316
+ name: "baseDn",
317
+ initialValue: adConfig.value.baseDn,
318
+ properties: {
319
+ label: i18n.baseText("settings.ldap.form.baseDn.label"),
320
+ required: true,
321
+ capitalize: true,
322
+ placeholder: i18n.baseText("settings.ldap.form.baseDn.placeholder"),
323
+ infoText: i18n.baseText("settings.ldap.form.baseDn.infoText")
324
+ },
325
+ shouldDisplay: whenLoginEnabled
326
+ },
327
+ {
328
+ name: "bindingType",
329
+ initialValue: "admin",
330
+ properties: {
331
+ type: "select",
332
+ label: i18n.baseText("settings.ldap.form.bindingType.label"),
333
+ infoText: i18n.baseText("settings.ldap.form.bindingType.infoText"),
334
+ options: [
335
+ {
336
+ value: "admin",
337
+ label: "Admin"
338
+ },
339
+ {
340
+ value: "anonymous",
341
+ label: "Anonymous"
342
+ }
343
+ ]
344
+ },
345
+ shouldDisplay: whenLoginEnabled
346
+ },
347
+ {
348
+ name: "adminDn",
349
+ initialValue: adConfig.value.bindingAdminDn,
350
+ properties: {
351
+ label: i18n.baseText("settings.ldap.form.adminDn.label"),
352
+ placeholder: i18n.baseText("settings.ldap.form.adminDn.placeholder"),
353
+ infoText: i18n.baseText("settings.ldap.form.adminDn.infoText"),
354
+ capitalize: true
355
+ },
356
+ shouldDisplay: whenAdminBindingAndLoginEnabled
357
+ },
358
+ {
359
+ name: "adminPassword",
360
+ initialValue: adConfig.value.bindingAdminPassword,
361
+ properties: {
362
+ label: i18n.baseText("settings.ldap.form.adminPassword.label"),
363
+ type: "password",
364
+ capitalize: true,
365
+ infoText: i18n.baseText("settings.ldap.form.adminPassword.infoText")
366
+ },
367
+ shouldDisplay: whenAdminBindingAndLoginEnabled
368
+ },
369
+ {
370
+ name: "userFilter",
371
+ initialValue: adConfig.value.userFilter,
372
+ properties: {
373
+ label: i18n.baseText("settings.ldap.form.userFilter.label"),
374
+ type: "text",
375
+ required: false,
376
+ capitalize: true,
377
+ placeholder: i18n.baseText("settings.ldap.form.userFilter.placeholder"),
378
+ infoText: i18n.baseText("settings.ldap.form.userFilter.infoText")
379
+ },
380
+ shouldDisplay: whenLoginEnabled
381
+ },
382
+ {
383
+ name: "attributeMappingInfo",
384
+ properties: {
385
+ label: i18n.baseText("settings.ldap.form.attributeMappingInfo.label"),
386
+ type: "info",
387
+ labelSize: "large",
388
+ labelAlignment: "left"
389
+ },
390
+ shouldDisplay: whenLoginEnabled
391
+ },
392
+ {
393
+ name: "ldapId",
394
+ initialValue: adConfig.value.ldapIdAttribute,
395
+ properties: {
396
+ label: i18n.baseText("settings.ldap.form.ldapId.label"),
397
+ type: "text",
398
+ required: true,
399
+ capitalize: true,
400
+ placeholder: i18n.baseText("settings.ldap.form.ldapId.placeholder"),
401
+ infoText: i18n.baseText("settings.ldap.form.ldapId.infoText")
402
+ },
403
+ shouldDisplay: whenLoginEnabled
404
+ },
405
+ {
406
+ name: "loginId",
407
+ initialValue: adConfig.value.loginIdAttribute,
408
+ properties: {
409
+ label: i18n.baseText("settings.ldap.form.loginId.label"),
410
+ type: "text",
411
+ autocomplete: "email",
412
+ required: true,
413
+ capitalize: true,
414
+ placeholder: i18n.baseText("settings.ldap.form.loginId.placeholder"),
415
+ infoText: i18n.baseText("settings.ldap.form.loginId.infoText")
416
+ },
417
+ shouldDisplay: whenLoginEnabled
418
+ },
419
+ {
420
+ name: "email",
421
+ initialValue: adConfig.value.emailAttribute,
422
+ properties: {
423
+ label: i18n.baseText("settings.ldap.form.email.label"),
424
+ type: "text",
425
+ autocomplete: "email",
426
+ required: true,
427
+ capitalize: true,
428
+ placeholder: i18n.baseText("settings.ldap.form.email.placeholder"),
429
+ infoText: i18n.baseText("settings.ldap.form.email.infoText")
430
+ },
431
+ shouldDisplay: whenLoginEnabled
432
+ },
433
+ {
434
+ name: "firstName",
435
+ initialValue: adConfig.value.firstNameAttribute,
436
+ properties: {
437
+ label: i18n.baseText("settings.ldap.form.firstName.label"),
438
+ type: "text",
439
+ autocomplete: "email",
440
+ required: true,
441
+ capitalize: true,
442
+ placeholder: i18n.baseText("settings.ldap.form.firstName.placeholder"),
443
+ infoText: i18n.baseText("settings.ldap.form.firstName.infoText")
444
+ },
445
+ shouldDisplay: whenLoginEnabled
446
+ },
447
+ {
448
+ name: "lastName",
449
+ initialValue: adConfig.value.lastNameAttribute,
450
+ properties: {
451
+ label: i18n.baseText("settings.ldap.form.lastName.label"),
452
+ type: "text",
453
+ autocomplete: "email",
454
+ required: true,
455
+ capitalize: true,
456
+ placeholder: i18n.baseText("settings.ldap.form.lastName.placeholder"),
457
+ infoText: i18n.baseText("settings.ldap.form.lastName.infoText")
458
+ },
459
+ shouldDisplay: whenLoginEnabled
460
+ },
461
+ {
462
+ name: "synchronizationEnabled",
463
+ initialValue: adConfig.value.synchronizationEnabled,
464
+ properties: {
465
+ type: "toggle",
466
+ label: i18n.baseText("settings.ldap.form.synchronizationEnabled.label"),
467
+ tooltipText: i18n.baseText("settings.ldap.form.synchronizationEnabled.tooltip"),
468
+ required: true
469
+ },
470
+ shouldDisplay: whenLoginEnabled
471
+ },
472
+ {
473
+ name: "synchronizationInterval",
474
+ initialValue: adConfig.value.synchronizationInterval,
475
+ properties: {
476
+ type: "number",
477
+ label: i18n.baseText("settings.ldap.form.synchronizationInterval.label"),
478
+ infoText: i18n.baseText("settings.ldap.form.synchronizationInterval.infoText")
479
+ },
480
+ shouldDisplay: whenSyncAndLoginEnabled
481
+ },
482
+ {
483
+ name: "pageSize",
484
+ initialValue: adConfig.value.searchPageSize,
485
+ properties: {
486
+ type: "number",
487
+ label: i18n.baseText("settings.ldap.form.pageSize.label"),
488
+ infoText: i18n.baseText("settings.ldap.form.pageSize.infoText")
489
+ },
490
+ shouldDisplay: whenSyncAndLoginEnabled
491
+ },
492
+ {
493
+ name: "searchTimeout",
494
+ initialValue: adConfig.value.searchTimeout,
495
+ properties: {
496
+ type: "number",
497
+ label: i18n.baseText("settings.ldap.form.searchTimeout.label"),
498
+ infoText: i18n.baseText("settings.ldap.form.searchTimeout.infoText")
499
+ },
500
+ shouldDisplay: whenSyncAndLoginEnabled
501
+ }
502
+ ];
503
+ } catch (error) {
504
+ toast.showError(error, i18n.baseText("settings.ldap.configurationError"));
505
+ }
506
+ };
507
+ const getLdapSynchronizations = async (state) => {
508
+ try {
509
+ loadingTable.value = true;
510
+ const data = await settingsStore.getLdapSynchronizations({
511
+ page: page.value
512
+ });
513
+ if (data.length !== 0) {
514
+ dataTable.value.push(...data.map(syncDataMapper));
515
+ page.value += 1;
516
+ state.loaded();
517
+ } else {
518
+ state.complete();
519
+ }
520
+ loadingTable.value = false;
521
+ } catch (error) {
522
+ toast.showError(error, i18n.baseText("settings.ldap.synchronizationError"));
523
+ }
524
+ };
525
+ const reloadLdapSynchronizations = async () => {
526
+ try {
527
+ page.value = 0;
528
+ tableKey.value += 1;
529
+ dataTable.value = [];
530
+ } catch (error) {
531
+ toast.showError(error, i18n.baseText("settings.ldap.synchronizationError"));
532
+ }
533
+ };
534
+ onMounted(async () => {
535
+ if (!isLDAPFeatureEnabled.value)
536
+ return;
537
+ await getLdapConfig();
538
+ });
539
+ return (_ctx, _cache) => {
540
+ const _component_n8n_heading = resolveComponent("n8n-heading");
541
+ const _component_n8n_info_tip = resolveComponent("n8n-info-tip");
542
+ const _component_n8n_action_box = resolveComponent("n8n-action-box");
543
+ const _component_n8n_form_inputs = resolveComponent("n8n-form-inputs");
544
+ const _component_n8n_button = resolveComponent("n8n-button");
545
+ const _directive_n8n_html = resolveDirective("n8n-html");
546
+ const _directive_loading = resolveDirective("loading");
547
+ return !isLDAPFeatureEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
548
+ createBaseVNode("div", {
549
+ class: normalizeClass([_ctx.$style.header, "mb-2xl"])
550
+ }, [
551
+ createVNode(_component_n8n_heading, { size: "2xlarge" }, {
552
+ default: withCtx(() => [
553
+ createTextVNode(toDisplayString(unref(i18n).baseText("settings.ldap")), 1)
554
+ ]),
555
+ _: 1
556
+ })
557
+ ], 2),
558
+ createVNode(_component_n8n_info_tip, {
559
+ type: "note",
560
+ theme: "info",
561
+ "tooltip-placement": "right",
562
+ class: "mb-l"
563
+ }, {
564
+ default: withCtx(() => [
565
+ createTextVNode(toDisplayString(unref(i18n).baseText("settings.ldap.note")), 1)
566
+ ]),
567
+ _: 1
568
+ }),
569
+ createVNode(_component_n8n_action_box, {
570
+ description: unref(i18n).baseText("settings.ldap.disabled.description"),
571
+ "button-text": unref(i18n).baseText("settings.ldap.disabled.buttonText"),
572
+ "onClick:button": goToUpgrade
573
+ }, {
574
+ heading: withCtx(() => [
575
+ createBaseVNode("span", null, toDisplayString(unref(i18n).baseText("settings.ldap.disabled.title")), 1)
576
+ ]),
577
+ _: 1
578
+ }, 8, ["description", "button-text"])
579
+ ])) : (openBlock(), createElementBlock("div", _hoisted_2, [
580
+ createBaseVNode("div", {
581
+ class: normalizeClass(_ctx.$style.container)
582
+ }, [
583
+ createBaseVNode("div", {
584
+ class: normalizeClass(_ctx.$style.header)
585
+ }, [
586
+ createVNode(_component_n8n_heading, { size: "2xlarge" }, {
587
+ default: withCtx(() => [
588
+ createTextVNode(toDisplayString(unref(i18n).baseText("settings.ldap")), 1)
589
+ ]),
590
+ _: 1
591
+ })
592
+ ], 2),
593
+ createBaseVNode("div", {
594
+ class: normalizeClass(_ctx.$style.docsInfoTip)
595
+ }, [
596
+ createVNode(_component_n8n_info_tip, {
597
+ theme: "info",
598
+ type: "note"
599
+ }, {
600
+ default: withCtx(() => [
601
+ withDirectives(createBaseVNode("span", null, null, 512), [
602
+ [_directive_n8n_html, unref(i18n).baseText("settings.ldap.infoTip")]
603
+ ])
604
+ ]),
605
+ _: 1
606
+ })
607
+ ], 2),
608
+ createBaseVNode("div", {
609
+ class: normalizeClass(_ctx.$style.settingsForm)
610
+ }, [
611
+ formInputs.value ? (openBlock(), createBlock(_component_n8n_form_inputs, {
612
+ key: 0,
613
+ ref_key: "ldapConfigFormRef",
614
+ ref: ldapConfigFormRef,
615
+ inputs: formInputs.value,
616
+ "event-bus": unref(formBus),
617
+ "column-view": true,
618
+ "vertical-spacing": "l",
619
+ onUpdate: onInput,
620
+ onReady: onReadyToSubmit,
621
+ onSubmit
622
+ }, null, 8, ["inputs", "event-bus"])) : createCommentVNode("", true)
623
+ ], 2),
624
+ createBaseVNode("div", null, [
625
+ loginEnabled.value ? (openBlock(), createBlock(_component_n8n_button, {
626
+ key: 0,
627
+ label: loadingTestConnection.value ? unref(i18n).baseText("settings.ldap.testingConnection") : unref(i18n).baseText("settings.ldap.testConnection"),
628
+ size: "large",
629
+ class: "mr-s",
630
+ disabled: hasAnyChanges.value || !readyToSubmit.value,
631
+ loading: loadingTestConnection.value,
632
+ onClick: onTestConnectionClick
633
+ }, null, 8, ["label", "disabled", "loading"])) : createCommentVNode("", true),
634
+ createVNode(_component_n8n_button, {
635
+ label: unref(i18n).baseText("settings.ldap.save"),
636
+ size: "large",
637
+ disabled: !hasAnyChanges.value || !readyToSubmit.value,
638
+ onClick: onSaveClick
639
+ }, null, 8, ["label", "disabled"])
640
+ ])
641
+ ], 2),
642
+ loginEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_3, [
643
+ createVNode(_component_n8n_heading, {
644
+ tag: "h1",
645
+ class: "mb-xl mt-3xl",
646
+ size: "medium"
647
+ }, {
648
+ default: withCtx(() => [
649
+ createTextVNode(toDisplayString(unref(i18n).baseText("settings.ldap.section.synchronization.title")), 1)
650
+ ]),
651
+ _: 1
652
+ }),
653
+ createBaseVNode("div", {
654
+ class: normalizeClass(_ctx.$style.syncTable)
655
+ }, [
656
+ withDirectives((openBlock(), createBlock(unref(ElTable), {
657
+ key: tableKey.value,
658
+ border: true,
659
+ stripe: true,
660
+ data: dataTable.value,
661
+ "cell-style": cellClassStyle,
662
+ style: { "width": "100%" },
663
+ "max-height": "250"
664
+ }, {
665
+ empty: withCtx(() => [
666
+ createTextVNode(toDisplayString(unref(i18n).baseText("settings.ldap.synchronizationTable.empty.message")), 1)
667
+ ]),
668
+ append: withCtx(() => [
669
+ createVNode(unref(K), {
670
+ target: ".el-table__body-wrapper",
671
+ onInfinite: getLdapSynchronizations
672
+ })
673
+ ]),
674
+ default: withCtx(() => [
675
+ createVNode(unref(ElTableColumn), {
676
+ prop: "status",
677
+ label: unref(i18n).baseText("settings.ldap.synchronizationTable.column.status")
678
+ }, null, 8, ["label"]),
679
+ createVNode(unref(ElTableColumn), {
680
+ prop: "endedAt",
681
+ label: unref(i18n).baseText("settings.ldap.synchronizationTable.column.endedAt")
682
+ }, null, 8, ["label"]),
683
+ createVNode(unref(ElTableColumn), {
684
+ prop: "runMode",
685
+ label: unref(i18n).baseText("settings.ldap.synchronizationTable.column.runMode")
686
+ }, null, 8, ["label"]),
687
+ createVNode(unref(ElTableColumn), {
688
+ prop: "runTime",
689
+ label: unref(i18n).baseText("settings.ldap.synchronizationTable.column.runTime")
690
+ }, null, 8, ["label"]),
691
+ createVNode(unref(ElTableColumn), {
692
+ prop: "details",
693
+ label: unref(i18n).baseText("settings.ldap.synchronizationTable.column.details")
694
+ }, null, 8, ["label"])
695
+ ]),
696
+ _: 1
697
+ }, 8, ["data"])), [
698
+ [_directive_loading, loadingTable.value]
699
+ ])
700
+ ], 2),
701
+ createBaseVNode("div", _hoisted_4, [
702
+ createVNode(_component_n8n_button, {
703
+ label: unref(i18n).baseText("settings.ldap.dryRun"),
704
+ type: "secondary",
705
+ size: "large",
706
+ class: "mr-s",
707
+ disabled: hasAnyChanges.value || !readyToSubmit.value,
708
+ loading: loadingDryRun.value,
709
+ onClick: onDryRunClick
710
+ }, null, 8, ["label", "disabled", "loading"]),
711
+ createVNode(_component_n8n_button, {
712
+ label: unref(i18n).baseText("settings.ldap.synchronizeNow"),
713
+ size: "large",
714
+ disabled: hasAnyChanges.value || !readyToSubmit.value,
715
+ loading: loadingLiveRun.value,
716
+ onClick: onLiveRunClick
717
+ }, null, 8, ["label", "disabled", "loading"])
718
+ ])
719
+ ])) : createCommentVNode("", true)
720
+ ]));
721
+ };
722
+ }
723
+ });
724
+ const container = "_container_17k3n_1";
725
+ const syncTable = "_syncTable_17k3n_5";
726
+ const header = "_header_17k3n_9";
727
+ const enableFeatureContainer = "_enableFeatureContainer_17k3n_18";
728
+ const sectionHeader = "_sectionHeader_17k3n_32";
729
+ const settingsForm = "_settingsForm_17k3n_36";
730
+ const docsInfoTip = "_docsInfoTip_17k3n_40";
731
+ const style0 = {
732
+ container,
733
+ syncTable,
734
+ header,
735
+ enableFeatureContainer,
736
+ sectionHeader,
737
+ settingsForm,
738
+ docsInfoTip
739
+ };
740
+ const cssModules = {
741
+ "$style": style0
742
+ };
743
+ const SettingsLdapView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
744
+ export {
745
+ SettingsLdapView as default
746
+ };