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