n8n-editor-ui 1.98.1 → 1.99.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 (111) hide show
  1. package/dist/assets/{AnimatedSpinner-BiugD1ff.js → AnimatedSpinner-By7QeVvC.js} +1 -1
  2. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BChDakRF.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-Cod1Wo9M.js} +1 -1
  3. package/dist/assets/{AuthView-D3YwZZ3s.js → AuthView-BNBwVz1X.js} +7 -3
  4. package/dist/assets/{ChangePasswordView-CItQkQJg.js → ChangePasswordView-BDaQbYrs.js} +3 -3
  5. package/dist/assets/CollectionParameter-C2u5mcQf.js +4 -0
  6. package/dist/assets/{CredentialsView-DyMOfI6f.js → CredentialsView-DXsfuDgO.js} +22 -13
  7. package/dist/assets/{DemoFooter-Dy9DQTdo.js → DemoFooter-DSFmGhEh.js} +6 -6
  8. package/dist/assets/EntityNotFound-CBu7H3J_.css +10 -0
  9. package/dist/assets/EntityNotFound-CM3vchqf.js +95 -0
  10. package/dist/assets/EntityUnAuthorised-BwDthxJU.css +10 -0
  11. package/dist/assets/EntityUnAuthorised-F1-20Yc5.js +72 -0
  12. package/dist/assets/{ErrorView-BC6y15Eg.js → ErrorView-CVWsP21x.js} +1 -1
  13. package/dist/assets/{EvaluationsRootView-BbnDfLFy.js → EvaluationsRootView-Rpyp-cAa.js} +1 -1
  14. package/dist/assets/{EvaluationsView-Qz7rd_By.js → EvaluationsView-Bwe9fctZ.js} +3 -3
  15. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-mrrUdf3t.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-z8CBn7k3.js} +2 -2
  16. package/dist/assets/{ExecutionsView-AgniDaEH.js → ExecutionsView-gJvPwY-c.js} +8 -8
  17. package/dist/assets/{FileSaver.min-BUciI8xL.js → FileSaver.min-Ba1NW2qr.js} +1 -1
  18. package/dist/assets/{FixedCollectionParameter-NPVvBV3e.js → FixedCollectionParameter-CYa34n6Q.js} +1 -1
  19. package/dist/assets/{ForgotMyPasswordView-BKsk9OLH.js → ForgotMyPasswordView-CO717agw.js} +3 -3
  20. package/dist/assets/{InsightsChartAverageRuntime-Dg7z0rOa.js → InsightsChartAverageRuntime-Bqt5LuVC.js} +4 -4
  21. package/dist/assets/{InsightsChartFailed-i4tYyVRH.js → InsightsChartFailed-Btuid7Qt.js} +4 -4
  22. package/dist/assets/{InsightsChartFailureRate-BcWGne0C.js → InsightsChartFailureRate-xiyKo1-3.js} +4 -4
  23. package/dist/assets/{InsightsChartTimeSaved-DugTjxnw.js → InsightsChartTimeSaved-D215Ps1V.js} +4 -4
  24. package/dist/assets/{InsightsChartTotal-DTB7kNLU.js → InsightsChartTotal-CblKHPdp.js} +4 -4
  25. package/dist/assets/{InsightsDashboard-By8MKK7g.js → InsightsDashboard-BSFKIr8J.js} +11 -11
  26. package/dist/assets/{InsightsPaywall-BX7wpP8k.js → InsightsPaywall-B0erZlSP.js} +1 -1
  27. package/dist/assets/{InsightsSummary-DBfE_9FW.js → InsightsSummary-CzLvoz3i.js} +1 -1
  28. package/dist/assets/{InsightsTableWorkflows-Dqy8IF2I.js → InsightsTableWorkflows-BxPZnO1q.js} +2 -2
  29. package/dist/assets/{Logo-BT-1ZjZS.js → Logo-h1nzxLUV.js} +1 -1
  30. package/dist/assets/{LogsPanel-CvLCi2ll.js → LogsPanel-B16caVIK.js} +38 -23
  31. package/dist/assets/{LogsPanel-nh_D5duX.css → LogsPanel-BkEQ0mgk.css} +1 -0
  32. package/dist/assets/{MainHeader-DptCjd0U.js → MainHeader-CERMn-m6.js} +8 -9
  33. package/dist/assets/{MainSidebar-BdESTvVI.js → MainSidebar-IAhaxSFu.js} +2 -2
  34. package/dist/assets/{NodeCreation-CNH2xciY.js → NodeCreation-BdlX_3Tg.js} +37 -5
  35. package/dist/assets/{NodeCreator-Cp8Apzva.css → NodeCreator-B1jJcOYT.css} +126 -0
  36. package/dist/assets/{NodeCreator-Bgs-It2X.js → NodeCreator-OTL7YKC3.js} +134 -76
  37. package/dist/assets/{NodeDetailsView-DQ4I8u72.js → NodeDetailsView-CJ_lg1pq.js} +12 -13
  38. package/dist/assets/{NodeView-i5dNh-Et.js → NodeView-Bc086Y-p.js} +48 -14
  39. package/dist/assets/{NodeView-Duifly4c.css → NodeView-Cpu1z_ye.css} +16 -16
  40. package/dist/assets/{ProjectCardBadge-CpBBeiGZ.js → ProjectCardBadge-V9HJb18k.js} +1 -1
  41. package/dist/assets/{ProjectHeader-BsBpG-Mj.css → ProjectHeader-B5uv4DKo.css} +24 -6
  42. package/dist/assets/{ProjectHeader-CK7zlcmF.js → ProjectHeader-dEiwp3wt.js} +91 -24
  43. package/dist/assets/{ProjectSettings-B8_C-09-.js → ProjectSettings-BWL04ZmI.js} +41 -16
  44. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-XrUyHArT.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-BuoCEXZQ.js} +1 -1
  45. package/dist/assets/{ResourcesListLayout-BRxlSl_6.js → ResourcesListLayout-CZdUgv0S.js} +2 -2
  46. package/dist/assets/{RunData-D6YmSB6p.js → RunData-Ccq7yyEj.js} +11 -10
  47. package/dist/assets/{RunDataJson-BtfKusCo.js → RunDataJson-B-jKKTqf.js} +6 -6
  48. package/dist/assets/{RunDataJsonActions-CglQIRT9.js → RunDataJsonActions-BycSAteM.js} +1 -1
  49. package/dist/assets/{RunDataParsedAiContent-DPcEKWtn.js → RunDataParsedAiContent-CS9WopeO.js} +4 -4
  50. package/dist/assets/{RunDataSearch-CIKPqFBd.js → RunDataSearch-UZYekh4r.js} +1 -1
  51. package/dist/assets/{RunDataTable-jsoKHQg5.js → RunDataTable-BOaXi4fS.js} +2 -2
  52. package/dist/assets/{SamlOnboarding-DmXYxVe5.js → SamlOnboarding-C7DJHTbF.js} +7 -7
  53. package/dist/assets/{SettingsApiView-Bv94CWU3.js → SettingsApiView-BQYEiqpt.js} +1 -1
  54. package/dist/assets/{SettingsCommunityNodesView-CI8V-SCE.js → SettingsCommunityNodesView-Drjh3D_N.js} +3 -4
  55. package/dist/assets/{SettingsExternalSecrets-HCqXt9HG.js → SettingsExternalSecrets-H2GHyc8y.js} +1 -1
  56. package/dist/assets/{SettingsLdapView-B3yMhNoR.js → SettingsLdapView-Co5R1Xnn.js} +8 -7
  57. package/dist/assets/{SettingsLogStreamingView-CyDcg7pK.js → SettingsLogStreamingView-BOzKqbJT.js} +1 -1
  58. package/dist/assets/{SettingsPersonalView-Cjb8Yd0L.js → SettingsPersonalView-Dk_BP-Vj.js} +6 -4
  59. package/dist/assets/{SettingsSourceControl-B4lNTCoc.js → SettingsSourceControl-Bio6_jxT.js} +1 -1
  60. package/dist/assets/{SettingsSso-DyrGnPdA.css → SettingsSso-D4HKPLvV.css} +10 -13
  61. package/dist/assets/SettingsSso-DnHZo2WN.js +496 -0
  62. package/dist/assets/{SettingsUsageAndPlan-CfHv2SML.js → SettingsUsageAndPlan-CkfJ5FVz.js} +1 -1
  63. package/dist/assets/{SettingsUsersView-D4szdW0Y.js → SettingsUsersView-Dd2iTlK9.js} +3 -3
  64. package/dist/assets/{SettingsView-BCs3728S.js → SettingsView-3Swluorr.js} +1 -1
  65. package/dist/assets/{SetupView-PB2fxBCd.js → SetupView-UUO28tUh.js} +4 -5
  66. package/dist/assets/{SetupWorkflowCredentialsButton-DgTQe_yd.js → SetupWorkflowCredentialsButton-1OgGhAkl.js} +1 -1
  67. package/dist/assets/{SetupWorkflowFromTemplateView-7pQX4cNJ.js → SetupWorkflowFromTemplateView-DSfvqojV.js} +3 -3
  68. package/dist/assets/{SigninView-BqgxybCQ.js → SigninView-B7O2oMYP.js} +6 -5
  69. package/dist/assets/{SignoutView-CTKn8Q77.js → SignoutView-BlRB5_No.js} +1 -1
  70. package/dist/assets/{SignupView-D8_otRzJ.js → SignupView-eaO_nCgE.js} +4 -5
  71. package/dist/assets/{TemplateDetails-H2-eQcx6.js → TemplateDetails-MnpfplS3.js} +1 -1
  72. package/dist/assets/{TemplateList-CRgrPugd.js → TemplateList-DAgqgGqA.js} +1 -1
  73. package/dist/assets/{TemplatesCollectionView-CNoC5FGF.js → TemplatesCollectionView-C6hhLrhu.js} +5 -5
  74. package/dist/assets/{TemplatesSearchView-BDiwWkwZ.js → TemplatesSearchView-D00L2HKa.js} +3 -3
  75. package/dist/assets/{TemplatesView-GnPEf_mW.js → TemplatesView-CsiXLYQI.js} +1 -1
  76. package/dist/assets/{TemplatesWorkflowView-7E6jyqpd.js → TemplatesWorkflowView-B2bVwsMf.js} +5 -5
  77. package/dist/assets/{VariablesView-6sWI8yGj.js → VariablesView-BKTHGcH2.js} +4 -4
  78. package/dist/assets/{WorkerView-Mvump-QA.js → WorkerView-Dp7Vl7G8.js} +5 -6
  79. package/dist/assets/{WorkflowActivator-BaxuVQDl.js → WorkflowActivator-PNXqiMUa.js} +2 -2
  80. package/dist/assets/{WorkflowExecutionsInfoAccordion-DM72fu7i.js → WorkflowExecutionsInfoAccordion-C28N9THl.js} +1 -1
  81. package/dist/assets/{WorkflowExecutionsLandingPage-DX4kL6pX.js → WorkflowExecutionsLandingPage-DomH2kkK.js} +2 -2
  82. package/dist/assets/{WorkflowExecutionsPreview-BgpOEXPG.css → WorkflowExecutionsPreview-Bk3NJMZf.css} +9 -9
  83. package/dist/assets/{WorkflowExecutionsPreview-C2vE7SHl.js → WorkflowExecutionsPreview-COYZLJCI.js} +9 -9
  84. package/dist/assets/{WorkflowExecutionsView-CTxicDMq.js → WorkflowExecutionsView-CQxlaJ-N.js} +5 -5
  85. package/dist/assets/{WorkflowHistory-CD-Fhy8m.js → WorkflowHistory-oJQmL_-J.js} +3 -3
  86. package/dist/assets/{WorkflowOnboardingView-DWzhpMMj.js → WorkflowOnboardingView-_eND7v8h.js} +1 -1
  87. package/dist/assets/{WorkflowPreview-A5nTeLz1.js → WorkflowPreview-DfidhxjI.js} +1 -1
  88. package/dist/assets/{WorkflowsView-DCmyKz3u.js → WorkflowsView-BPgw_hVG.js} +26 -23
  89. package/dist/assets/{WorkflowsView-meCWhW8Y.css → WorkflowsView-ipf8KKwB.css} +21 -16
  90. package/dist/assets/{canvas-viI6yjxT.js → canvas-CIm8w6n1.js} +1 -1
  91. package/dist/assets/{chartjs.utils-DVxFoTPh.js → chartjs.utils-BaFuULEH.js} +2 -2
  92. package/dist/assets/{en-BcWgUFsO.js → en-gSl4aEB-.js} +18 -2
  93. package/dist/assets/{global-link-actions-B10zAHg8.js → global-link-actions-D9rAyY2i.js} +1 -1
  94. package/dist/assets/{import-curl-B1dF12h6.js → import-curl-DznX-6zQ.js} +1 -1
  95. package/dist/assets/{index-B-xWz5mo.css → index-C1XlnjOl.css} +103 -70
  96. package/dist/assets/{index--ag0tEQM.js → index-CKxPg00R.js} +31626 -30742
  97. package/dist/assets/{index-BNKFpYX3.js → index-DakiuyrJ.js} +1 -1
  98. package/dist/assets/{pickBy-Bnnxgs5-.js → pickBy-BrbjokRd.js} +1 -1
  99. package/dist/assets/{templateActions-CXnj7CA4.js → templateActions-XYE_erXB.js} +1 -1
  100. package/dist/assets/{useBeforeUnload-CZLqOCP0.js → useBeforeUnload-5dUIo4WK.js} +1 -1
  101. package/dist/assets/{useExecutionDebugging-CoJa-NM6.js → useExecutionDebugging-DLm_-3mN.js} +1 -1
  102. package/dist/assets/{useExecutionHelpers-97Ddzif0.js → useExecutionHelpers-C_9FYOFV.js} +1 -1
  103. package/dist/assets/{useImportCurlCommand-t6LpQGpC.js → useImportCurlCommand-DjXQG-IU.js} +2 -2
  104. package/dist/assets/{useProjectPages-C95x1s47.js → useProjectPages-CbDSyEjz.js} +6 -2
  105. package/dist/assets/{usePushConnection-C1qgSYjB.js → usePushConnection-Dt3lpxPG.js} +2 -3
  106. package/dist/assets/{useWorkflowActivate-E5Lz7Bjd.js → useWorkflowActivate-5rNzZIb4.js} +1 -1
  107. package/dist/index.html +2 -2
  108. package/package.json +1 -1
  109. package/dist/assets/CollectionParameter-Bm8EojJq.js +0 -4
  110. package/dist/assets/SettingsSso-CTy78phb.js +0 -327
  111. package/dist/assets/easyAiWorkflowUtils-CWag2afn.js +0 -132
@@ -0,0 +1,496 @@
1
+ import { d as defineComponent, a1 as useRootStore, eA as useSSOStore, a as useToast, a7 as useDocumentTitle, aa as usePageRedirectionHelper, x as computed, c as useI18n, r as ref, o as onMounted, h as resolveComponent, i as createElementBlock, g as openBlock, k as createBaseVNode, j as createVNode, e as createBlock, w as withCtx, l as createTextVNode, t as toDisplayString, m as unref, n as normalizeClass, f as createCommentVNode, F as Fragment, G as renderList, bE as withModifiers, fr as CopyInput, aI as withDirectives, aJ as vShow, ao as useMessage, am as useTelemetry, ap as MODAL_CONFIRM, _ as _export_sfc } from "./index-CKxPg00R.js";
2
+ const _hoisted_1 = { class: "pb-2xl" };
3
+ const _hoisted_2 = {
4
+ href: "https://docs.n8n.io/user-management/saml/",
5
+ target: "_blank"
6
+ };
7
+ const _hoisted_3 = {
8
+ key: 0,
9
+ "data-test-id": "sso-content-licensed"
10
+ };
11
+ const _hoisted_4 = { key: 0 };
12
+ const _hoisted_5 = { class: "mt-2xs mb-s" };
13
+ const _hoisted_6 = { key: 1 };
14
+ const _sfc_main = /* @__PURE__ */ defineComponent({
15
+ __name: "SettingsSso",
16
+ setup(__props) {
17
+ const IdentityProviderSettingsType = {
18
+ URL: "url",
19
+ XML: "xml"
20
+ };
21
+ const SupportedProtocols = {
22
+ SAML: "saml",
23
+ OIDC: "oidc"
24
+ };
25
+ const i18n = useI18n();
26
+ const telemetry = useTelemetry();
27
+ const rootStore = useRootStore();
28
+ const ssoStore = useSSOStore();
29
+ const message = useMessage();
30
+ const toast = useToast();
31
+ const documentTitle = useDocumentTitle();
32
+ const pageRedirectionHelper = usePageRedirectionHelper();
33
+ const ssoActivatedLabel = computed(
34
+ () => ssoStore.isSamlLoginEnabled ? i18n.baseText("settings.sso.activated") : i18n.baseText("settings.sso.deactivated")
35
+ );
36
+ const oidcActivatedLabel = computed(
37
+ () => ssoStore.isOidcLoginEnabled ? i18n.baseText("settings.sso.activated") : i18n.baseText("settings.sso.deactivated")
38
+ );
39
+ const ssoSettingsSaved = ref(false);
40
+ const entityId = ref();
41
+ const clientId = ref("");
42
+ const clientSecret = ref("");
43
+ const discoveryEndpoint = ref("");
44
+ const authProtocol = ref(SupportedProtocols.SAML);
45
+ const ipsOptions = ref([
46
+ {
47
+ label: i18n.baseText("settings.sso.settings.ips.options.url"),
48
+ value: IdentityProviderSettingsType.URL
49
+ },
50
+ {
51
+ label: i18n.baseText("settings.sso.settings.ips.options.xml"),
52
+ value: IdentityProviderSettingsType.XML
53
+ }
54
+ ]);
55
+ const ipsType = ref(IdentityProviderSettingsType.URL);
56
+ const metadataUrl = ref();
57
+ const metadata = ref();
58
+ const redirectUrl = ref();
59
+ const isSaveEnabled = computed(() => {
60
+ if (ipsType.value === IdentityProviderSettingsType.URL) {
61
+ return !!metadataUrl.value && metadataUrl.value !== ssoStore.samlConfig?.metadataUrl;
62
+ } else if (ipsType.value === IdentityProviderSettingsType.XML) {
63
+ return !!metadata.value && metadata.value !== ssoStore.samlConfig?.metadata;
64
+ }
65
+ return false;
66
+ });
67
+ const isTestEnabled = computed(() => {
68
+ if (ipsType.value === IdentityProviderSettingsType.URL) {
69
+ return !!metadataUrl.value && ssoSettingsSaved.value;
70
+ } else if (ipsType.value === IdentityProviderSettingsType.XML) {
71
+ return !!metadata.value && ssoSettingsSaved.value;
72
+ }
73
+ return false;
74
+ });
75
+ async function loadSamlConfig() {
76
+ if (!ssoStore.isEnterpriseSamlEnabled) {
77
+ return;
78
+ }
79
+ try {
80
+ await getSamlConfig();
81
+ } catch (error) {
82
+ toast.showError(error, "error");
83
+ }
84
+ }
85
+ const getSamlConfig = async () => {
86
+ const config = await ssoStore.getSamlConfig();
87
+ entityId.value = config?.entityID;
88
+ redirectUrl.value = config?.returnUrl;
89
+ if (config?.metadataUrl) {
90
+ ipsType.value = IdentityProviderSettingsType.URL;
91
+ } else if (config?.metadata) {
92
+ ipsType.value = IdentityProviderSettingsType.XML;
93
+ }
94
+ metadata.value = config?.metadata;
95
+ metadataUrl.value = config?.metadataUrl;
96
+ ssoSettingsSaved.value = !!config?.metadata;
97
+ };
98
+ const onSave = async () => {
99
+ try {
100
+ validateInput();
101
+ const config = ipsType.value === IdentityProviderSettingsType.URL ? { metadataUrl: metadataUrl.value } : { metadata: metadata.value };
102
+ await ssoStore.saveSamlConfig(config);
103
+ if (!ssoStore.isSamlLoginEnabled) {
104
+ const answer = await message.confirm(
105
+ i18n.baseText("settings.sso.settings.save.activate.message"),
106
+ i18n.baseText("settings.sso.settings.save.activate.title"),
107
+ {
108
+ confirmButtonText: i18n.baseText("settings.sso.settings.save.activate.test"),
109
+ cancelButtonText: i18n.baseText("settings.sso.settings.save.activate.cancel")
110
+ }
111
+ );
112
+ if (answer === "confirm") {
113
+ await onTest();
114
+ }
115
+ }
116
+ telemetry.track("User updated single sign on settings", {
117
+ instance_id: rootStore.instanceId,
118
+ identity_provider: ipsType.value === "url" ? "metadata" : "xml",
119
+ is_active: ssoStore.isSamlLoginEnabled
120
+ });
121
+ } catch (error) {
122
+ toast.showError(error, i18n.baseText("settings.sso.settings.save.error"));
123
+ return;
124
+ } finally {
125
+ await getSamlConfig();
126
+ }
127
+ };
128
+ const onTest = async () => {
129
+ try {
130
+ const url = await ssoStore.testSamlConfig();
131
+ if (typeof window !== "undefined") {
132
+ window.open(url, "_blank");
133
+ }
134
+ } catch (error) {
135
+ toast.showError(error, "error");
136
+ }
137
+ };
138
+ const validateInput = () => {
139
+ if (ipsType.value === IdentityProviderSettingsType.URL) {
140
+ try {
141
+ const parsedUrl = new URL(metadataUrl.value);
142
+ if (parsedUrl.protocol !== "https:" && parsedUrl.protocol !== "http:") {
143
+ throw new Error("The provided protocol is not supported");
144
+ }
145
+ } catch (error) {
146
+ throw new Error(i18n.baseText("settings.sso.settings.ips.url.invalid"));
147
+ }
148
+ }
149
+ };
150
+ const goToUpgrade = () => {
151
+ void pageRedirectionHelper.goToUpgrade("sso", "upgrade-sso");
152
+ };
153
+ const isToggleSsoDisabled = computed(() => {
154
+ if (ssoStore.isSamlLoginEnabled) {
155
+ return false;
156
+ }
157
+ return !ssoSettingsSaved.value;
158
+ });
159
+ onMounted(async () => {
160
+ documentTitle.set(i18n.baseText("settings.sso.title"));
161
+ await Promise.all([loadSamlConfig(), loadOidcConfig()]);
162
+ if (ssoStore.isDefaultAuthenticationSaml) {
163
+ authProtocol.value = SupportedProtocols.SAML;
164
+ } else if (ssoStore.isDefaultAuthenticationOidc) {
165
+ authProtocol.value = SupportedProtocols.OIDC;
166
+ }
167
+ });
168
+ const getOidcConfig = async () => {
169
+ const config = await ssoStore.getOidcConfig();
170
+ clientId.value = config.clientId;
171
+ clientSecret.value = config.clientSecret;
172
+ discoveryEndpoint.value = config.discoveryEndpoint;
173
+ };
174
+ async function loadOidcConfig() {
175
+ if (!ssoStore.isEnterpriseOidcEnabled) {
176
+ return;
177
+ }
178
+ try {
179
+ await getOidcConfig();
180
+ } catch (error) {
181
+ toast.showError(error, "error");
182
+ }
183
+ }
184
+ function onAuthProtocolUpdated(value) {
185
+ authProtocol.value = value;
186
+ }
187
+ const cannotSaveOidcSettings = computed(() => {
188
+ return ssoStore.oidcConfig?.clientId === clientId.value && ssoStore.oidcConfig?.clientSecret === clientSecret.value && ssoStore.oidcConfig?.discoveryEndpoint === discoveryEndpoint.value && ssoStore.oidcConfig?.loginEnabled === ssoStore.isOidcLoginEnabled;
189
+ });
190
+ async function onOidcSettingsSave() {
191
+ if (ssoStore.oidcConfig?.loginEnabled && !ssoStore.isOidcLoginEnabled) {
192
+ const confirmAction = await message.confirm(
193
+ i18n.baseText("settings.oidc.confirmMessage.beforeSaveForm.message"),
194
+ i18n.baseText("settings.oidc.confirmMessage.beforeSaveForm.headline"),
195
+ {
196
+ cancelButtonText: i18n.baseText(
197
+ "settings.ldap.confirmMessage.beforeSaveForm.cancelButtonText"
198
+ ),
199
+ confirmButtonText: i18n.baseText(
200
+ "settings.ldap.confirmMessage.beforeSaveForm.confirmButtonText"
201
+ )
202
+ }
203
+ );
204
+ if (confirmAction !== MODAL_CONFIRM) return;
205
+ }
206
+ const newConfig = await ssoStore.saveOidcConfig({
207
+ clientId: clientId.value,
208
+ clientSecret: clientSecret.value,
209
+ discoveryEndpoint: discoveryEndpoint.value,
210
+ loginEnabled: ssoStore.isOidcLoginEnabled
211
+ });
212
+ clientSecret.value = newConfig.clientSecret;
213
+ }
214
+ return (_ctx, _cache) => {
215
+ const _component_n8n_heading = resolveComponent("n8n-heading");
216
+ const _component_n8n_info_tip = resolveComponent("n8n-info-tip");
217
+ const _component_N8nOption = resolveComponent("N8nOption");
218
+ const _component_N8nSelect = resolveComponent("N8nSelect");
219
+ const _component_n8n_radio_buttons = resolveComponent("n8n-radio-buttons");
220
+ const _component_n8n_input = resolveComponent("n8n-input");
221
+ const _component_el_switch = resolveComponent("el-switch");
222
+ const _component_n8n_tooltip = resolveComponent("n8n-tooltip");
223
+ const _component_n8n_button = resolveComponent("n8n-button");
224
+ const _component_N8nInput = resolveComponent("N8nInput");
225
+ const _component_n8n_action_box = resolveComponent("n8n-action-box");
226
+ return openBlock(), createElementBlock("div", _hoisted_1, [
227
+ createBaseVNode("div", {
228
+ class: normalizeClass(_ctx.$style.heading)
229
+ }, [
230
+ createVNode(_component_n8n_heading, { size: "2xlarge" }, {
231
+ default: withCtx(() => [
232
+ createTextVNode(toDisplayString(unref(i18n).baseText("settings.sso.title")), 1)
233
+ ]),
234
+ _: 1
235
+ })
236
+ ], 2),
237
+ createVNode(_component_n8n_info_tip, null, {
238
+ default: withCtx(() => [
239
+ createTextVNode(toDisplayString(unref(i18n).baseText("settings.sso.info")) + " ", 1),
240
+ createBaseVNode("a", _hoisted_2, toDisplayString(unref(i18n).baseText("settings.sso.info.link")), 1)
241
+ ]),
242
+ _: 1
243
+ }),
244
+ unref(ssoStore).isEnterpriseSamlEnabled ? (openBlock(), createElementBlock("div", _hoisted_3, [
245
+ createBaseVNode("div", {
246
+ class: normalizeClass(_ctx.$style.group)
247
+ }, [
248
+ _cache[9] || (_cache[9] = createBaseVNode("label", null, "Select Authentication Protocol", -1)),
249
+ createBaseVNode("div", null, [
250
+ createVNode(_component_N8nSelect, {
251
+ filterable: "",
252
+ "model-value": authProtocol.value,
253
+ placeholder: unref(i18n).baseText("parameterInput.select"),
254
+ "onUpdate:modelValue": onAuthProtocolUpdated,
255
+ onKeydown: _cache[0] || (_cache[0] = withModifiers(() => {
256
+ }, ["stop"]))
257
+ }, {
258
+ default: withCtx(() => [
259
+ (openBlock(true), createElementBlock(Fragment, null, renderList(Object.values(SupportedProtocols), (protocol) => {
260
+ return openBlock(), createBlock(_component_N8nOption, {
261
+ key: protocol,
262
+ value: protocol,
263
+ label: protocol.toUpperCase(),
264
+ "data-test-id": "credential-select-option"
265
+ }, null, 8, ["value", "label"]);
266
+ }), 128))
267
+ ]),
268
+ _: 1
269
+ }, 8, ["model-value", "placeholder"])
270
+ ])
271
+ ], 2),
272
+ authProtocol.value === SupportedProtocols.SAML ? (openBlock(), createElementBlock("div", _hoisted_4, [
273
+ createBaseVNode("div", {
274
+ class: normalizeClass(_ctx.$style.group)
275
+ }, [
276
+ createBaseVNode("label", null, toDisplayString(unref(i18n).baseText("settings.sso.settings.redirectUrl.label")), 1),
277
+ createVNode(CopyInput, {
278
+ value: redirectUrl.value,
279
+ "copy-button-text": unref(i18n).baseText("generic.clickToCopy"),
280
+ "toast-title": unref(i18n).baseText("settings.sso.settings.redirectUrl.copied")
281
+ }, null, 8, ["value", "copy-button-text", "toast-title"]),
282
+ createBaseVNode("small", null, toDisplayString(unref(i18n).baseText("settings.sso.settings.redirectUrl.help")), 1)
283
+ ], 2),
284
+ createBaseVNode("div", {
285
+ class: normalizeClass(_ctx.$style.group)
286
+ }, [
287
+ createBaseVNode("label", null, toDisplayString(unref(i18n).baseText("settings.sso.settings.entityId.label")), 1),
288
+ createVNode(CopyInput, {
289
+ value: entityId.value,
290
+ "copy-button-text": unref(i18n).baseText("generic.clickToCopy"),
291
+ "toast-title": unref(i18n).baseText("settings.sso.settings.entityId.copied")
292
+ }, null, 8, ["value", "copy-button-text", "toast-title"]),
293
+ createBaseVNode("small", null, toDisplayString(unref(i18n).baseText("settings.sso.settings.entityId.help")), 1)
294
+ ], 2),
295
+ createBaseVNode("div", {
296
+ class: normalizeClass(_ctx.$style.group)
297
+ }, [
298
+ createBaseVNode("label", null, toDisplayString(unref(i18n).baseText("settings.sso.settings.ips.label")), 1),
299
+ createBaseVNode("div", _hoisted_5, [
300
+ createVNode(_component_n8n_radio_buttons, {
301
+ modelValue: ipsType.value,
302
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => ipsType.value = $event),
303
+ options: ipsOptions.value
304
+ }, null, 8, ["modelValue", "options"])
305
+ ]),
306
+ withDirectives(createBaseVNode("div", null, [
307
+ createVNode(_component_n8n_input, {
308
+ modelValue: metadataUrl.value,
309
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => metadataUrl.value = $event),
310
+ type: "text",
311
+ name: "metadataUrl",
312
+ size: "large",
313
+ placeholder: unref(i18n).baseText("settings.sso.settings.ips.url.placeholder"),
314
+ "data-test-id": "sso-provider-url"
315
+ }, null, 8, ["modelValue", "placeholder"]),
316
+ createBaseVNode("small", null, toDisplayString(unref(i18n).baseText("settings.sso.settings.ips.url.help")), 1)
317
+ ], 512), [
318
+ [vShow, ipsType.value === IdentityProviderSettingsType.URL]
319
+ ]),
320
+ withDirectives(createBaseVNode("div", null, [
321
+ createVNode(_component_n8n_input, {
322
+ modelValue: metadata.value,
323
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => metadata.value = $event),
324
+ type: "textarea",
325
+ name: "metadata",
326
+ rows: 4,
327
+ "data-test-id": "sso-provider-xml"
328
+ }, null, 8, ["modelValue"]),
329
+ createBaseVNode("small", null, toDisplayString(unref(i18n).baseText("settings.sso.settings.ips.xml.help")), 1)
330
+ ], 512), [
331
+ [vShow, ipsType.value === IdentityProviderSettingsType.XML]
332
+ ]),
333
+ createBaseVNode("div", {
334
+ class: normalizeClass(_ctx.$style.group)
335
+ }, [
336
+ unref(ssoStore).isEnterpriseSamlEnabled ? (openBlock(), createBlock(_component_n8n_tooltip, {
337
+ key: 0,
338
+ disabled: unref(ssoStore).isSamlLoginEnabled || ssoSettingsSaved.value
339
+ }, {
340
+ content: withCtx(() => [
341
+ createBaseVNode("span", null, toDisplayString(unref(i18n).baseText("settings.sso.activation.tooltip")), 1)
342
+ ]),
343
+ default: withCtx(() => [
344
+ createVNode(_component_el_switch, {
345
+ modelValue: unref(ssoStore).isSamlLoginEnabled,
346
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => unref(ssoStore).isSamlLoginEnabled = $event),
347
+ "data-test-id": "sso-toggle",
348
+ disabled: isToggleSsoDisabled.value,
349
+ class: normalizeClass(_ctx.$style.switch),
350
+ "inactive-text": ssoActivatedLabel.value
351
+ }, null, 8, ["modelValue", "disabled", "class", "inactive-text"])
352
+ ]),
353
+ _: 1
354
+ }, 8, ["disabled"])) : createCommentVNode("", true)
355
+ ], 2)
356
+ ], 2),
357
+ createBaseVNode("div", {
358
+ class: normalizeClass(_ctx.$style.buttons)
359
+ }, [
360
+ createVNode(_component_n8n_button, {
361
+ disabled: !isSaveEnabled.value,
362
+ size: "large",
363
+ "data-test-id": "sso-save",
364
+ onClick: onSave
365
+ }, {
366
+ default: withCtx(() => [
367
+ createTextVNode(toDisplayString(unref(i18n).baseText("settings.sso.settings.save")), 1)
368
+ ]),
369
+ _: 1
370
+ }, 8, ["disabled"]),
371
+ createVNode(_component_n8n_button, {
372
+ disabled: !isTestEnabled.value,
373
+ size: "large",
374
+ type: "tertiary",
375
+ "data-test-id": "sso-test",
376
+ onClick: onTest
377
+ }, {
378
+ default: withCtx(() => [
379
+ createTextVNode(toDisplayString(unref(i18n).baseText("settings.sso.settings.test")), 1)
380
+ ]),
381
+ _: 1
382
+ }, 8, ["disabled"])
383
+ ], 2),
384
+ createBaseVNode("footer", {
385
+ class: normalizeClass(_ctx.$style.footer)
386
+ }, toDisplayString(unref(i18n).baseText("settings.sso.settings.footer.hint")), 3)
387
+ ])) : createCommentVNode("", true),
388
+ authProtocol.value === SupportedProtocols.OIDC ? (openBlock(), createElementBlock("div", _hoisted_6, [
389
+ createBaseVNode("div", {
390
+ class: normalizeClass(_ctx.$style.group)
391
+ }, [
392
+ _cache[10] || (_cache[10] = createBaseVNode("label", null, "Redirect URL", -1)),
393
+ createVNode(CopyInput, {
394
+ value: unref(ssoStore).oidc.callbackUrl,
395
+ "copy-button-text": unref(i18n).baseText("generic.clickToCopy"),
396
+ "toast-title": "Redirect URL copied to clipboard"
397
+ }, null, 8, ["value", "copy-button-text"]),
398
+ _cache[11] || (_cache[11] = createBaseVNode("small", null, "Copy the Redirect URL to configure your OIDC provider ", -1))
399
+ ], 2),
400
+ createBaseVNode("div", {
401
+ class: normalizeClass(_ctx.$style.group)
402
+ }, [
403
+ _cache[12] || (_cache[12] = createBaseVNode("label", null, "Discovery Endpoint", -1)),
404
+ createVNode(_component_N8nInput, {
405
+ "model-value": discoveryEndpoint.value,
406
+ type: "text",
407
+ placeholder: "https://accounts.google.com/.well-known/openid-configuration",
408
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = (v) => discoveryEndpoint.value = v)
409
+ }, null, 8, ["model-value"]),
410
+ _cache[13] || (_cache[13] = createBaseVNode("small", null, "Paste here your discovery endpoint", -1))
411
+ ], 2),
412
+ createBaseVNode("div", {
413
+ class: normalizeClass(_ctx.$style.group)
414
+ }, [
415
+ _cache[14] || (_cache[14] = createBaseVNode("label", null, "Client ID", -1)),
416
+ createVNode(_component_N8nInput, {
417
+ "model-value": clientId.value,
418
+ type: "text",
419
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = (v) => clientId.value = v)
420
+ }, null, 8, ["model-value"]),
421
+ _cache[15] || (_cache[15] = createBaseVNode("small", null, "The client ID you received when registering your application with your provider", -1))
422
+ ], 2),
423
+ createBaseVNode("div", {
424
+ class: normalizeClass(_ctx.$style.group)
425
+ }, [
426
+ _cache[16] || (_cache[16] = createBaseVNode("label", null, "Client Secret", -1)),
427
+ createVNode(_component_N8nInput, {
428
+ "model-value": clientSecret.value,
429
+ type: "password",
430
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = (v) => clientSecret.value = v)
431
+ }, null, 8, ["model-value"]),
432
+ _cache[17] || (_cache[17] = createBaseVNode("small", null, "The client Secret you received when registering your application with your provider", -1))
433
+ ], 2),
434
+ createBaseVNode("div", {
435
+ class: normalizeClass(_ctx.$style.group)
436
+ }, [
437
+ createVNode(_component_el_switch, {
438
+ modelValue: unref(ssoStore).isOidcLoginEnabled,
439
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => unref(ssoStore).isOidcLoginEnabled = $event),
440
+ "data-test-id": "sso-oidc-toggle",
441
+ class: normalizeClass(_ctx.$style.switch),
442
+ "inactive-text": oidcActivatedLabel.value
443
+ }, null, 8, ["modelValue", "class", "inactive-text"])
444
+ ], 2),
445
+ createBaseVNode("div", {
446
+ class: normalizeClass(_ctx.$style.buttons)
447
+ }, [
448
+ createVNode(_component_n8n_button, {
449
+ size: "large",
450
+ disabled: cannotSaveOidcSettings.value,
451
+ onClick: onOidcSettingsSave
452
+ }, {
453
+ default: withCtx(() => [
454
+ createTextVNode(toDisplayString(unref(i18n).baseText("settings.sso.settings.save")), 1)
455
+ ]),
456
+ _: 1
457
+ }, 8, ["disabled"])
458
+ ], 2)
459
+ ])) : createCommentVNode("", true)
460
+ ])) : (openBlock(), createBlock(_component_n8n_action_box, {
461
+ key: 1,
462
+ "data-test-id": "sso-content-unlicensed",
463
+ class: normalizeClass(_ctx.$style.actionBox),
464
+ description: unref(i18n).baseText("settings.sso.actionBox.description"),
465
+ "button-text": unref(i18n).baseText("settings.sso.actionBox.buttonText"),
466
+ "onClick:button": goToUpgrade
467
+ }, {
468
+ heading: withCtx(() => [
469
+ createBaseVNode("span", null, toDisplayString(unref(i18n).baseText("settings.sso.actionBox.title")), 1)
470
+ ]),
471
+ _: 1
472
+ }, 8, ["class", "description", "button-text"]))
473
+ ]);
474
+ };
475
+ }
476
+ });
477
+ const heading = "_heading_1ftgg_123";
478
+ const buttons = "_buttons_1ftgg_133";
479
+ const group = "_group_1ftgg_142";
480
+ const actionBox = "_actionBox_1ftgg_158";
481
+ const footer = "_footer_1ftgg_162";
482
+ const style0 = {
483
+ heading,
484
+ "switch": "_switch_1ftgg_127",
485
+ buttons,
486
+ group,
487
+ actionBox,
488
+ footer
489
+ };
490
+ const cssModules = {
491
+ "$style": style0
492
+ };
493
+ const SettingsSso = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
494
+ export {
495
+ SettingsSso as default
496
+ };
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, fh as useUsageStore, Q as useRoute, b as useRouter, G as useUIStore, u as useUsersStore, a as useToast, a3 as useDocumentTitle, a6 as usePageRedirectionHelper, r as ref, q as computed, a9 as hasPermission, a7 as getResourcePermissions, o as onMounted, fi as i18n, h as resolveComponent, i as createElementBlock, g as openBlock, j as createVNode, f as createCommentVNode, w as withCtx, l as createTextVNode, t as toDisplayString, m as unref, e as createBlock, k as createBaseVNode, n as normalizeClass, A as normalizeStyle, fj as InfoTip, bB as withModifiers, fk as COMMUNITY_PLUS_ENROLLMENT_MODAL, fl as telemetry, _ as _export_sfc } from "./index--ag0tEQM.js";
1
+ import { d as defineComponent, fm as useUsageStore, U as useRoute, b as useRouter, J as useUIStore, u as useUsersStore, a as useToast, a7 as useDocumentTitle, aa as usePageRedirectionHelper, r as ref, x as computed, ad as hasPermission, ab as getResourcePermissions, o as onMounted, fn as i18n, h as resolveComponent, i as createElementBlock, g as openBlock, j as createVNode, f as createCommentVNode, w as withCtx, l as createTextVNode, t as toDisplayString, m as unref, e as createBlock, k as createBaseVNode, n as normalizeClass, D as normalizeStyle, fo as InfoTip, bE as withModifiers, fp as COMMUNITY_PLUS_ENROLLMENT_MODAL, fq as telemetry, _ as _export_sfc } from "./index-CKxPg00R.js";
2
2
  const _hoisted_1 = { class: "settings-usage-and-plan" };
3
3
  const _hoisted_2 = { key: 0 };
4
4
  const _hoisted_3 = { key: 0 };
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, bU as useClipboard, a as useToast, p as useSettingsStore, G as useUIStore, u as useUsersStore, eF as useSSOStore, a3 as useDocumentTitle, a6 as usePageRedirectionHelper, q as computed, a9 as hasPermission, o as onMounted, c as useI18n, aa as EnterpriseEditionFeature, ez as ROLE, h as resolveComponent, i as createElementBlock, g as openBlock, k as createBaseVNode, f as createCommentVNode, e as createBlock, j as createVNode, w as withCtx, l as createTextVNode, t as toDisplayString, m as unref, n as normalizeClass, F as Fragment, C as renderList, eG as INVITE_USER_MODAL_KEY, _ as _export_sfc } from "./index--ag0tEQM.js";
1
+ import { d as defineComponent, bW as useClipboard, a as useToast, v as useSettingsStore, J as useUIStore, u as useUsersStore, eA as useSSOStore, a7 as useDocumentTitle, aa as usePageRedirectionHelper, x as computed, ad as hasPermission, o as onMounted, c as useI18n, ae as EnterpriseEditionFeature, eG as ROLE, h as resolveComponent, i as createElementBlock, g as openBlock, k as createBaseVNode, f as createCommentVNode, e as createBlock, j as createVNode, w as withCtx, l as createTextVNode, t as toDisplayString, m as unref, n as normalizeClass, F as Fragment, G as renderList, eM as INVITE_USER_MODAL_KEY, _ as _export_sfc } from "./index-CKxPg00R.js";
2
2
  const _sfc_main = /* @__PURE__ */ defineComponent({
3
3
  __name: "SettingsUsersView",
4
4
  setup(__props) {
@@ -45,12 +45,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
45
45
  {
46
46
  label: i18n.baseText("settings.users.actions.allowSSOManualLogin"),
47
47
  value: "allowSSOManualLogin",
48
- guard: (user) => settingsStore.isSamlLoginEnabled && !user.settings?.allowSSOManualLogin
48
+ guard: (user) => !!ssoStore.isSamlLoginEnabled && !user.settings?.allowSSOManualLogin
49
49
  },
50
50
  {
51
51
  label: i18n.baseText("settings.users.actions.disallowSSOManualLogin"),
52
52
  value: "disallowSSOManualLogin",
53
- guard: (user) => settingsStore.isSamlLoginEnabled && user.settings?.allowSSOManualLogin === true
53
+ guard: (user) => !!ssoStore.isSamlLoginEnabled && user.settings?.allowSSOManualLogin === true
54
54
  }
55
55
  ];
56
56
  });
@@ -1,4 +1,4 @@
1
- import { a9 as hasPermission, d as defineComponent, b as useRouter, Q as useRoute, Y as useRootStore, p as useSettingsStore, G as useUIStore, q as computed, V as VIEWS, c as useI18n, h as resolveComponent, i as createElementBlock, g as openBlock, n as normalizeClass, j as createVNode, w as withCtx, k as createBaseVNode, m as unref, a$ as ABOUT_MODAL_KEY, l as createTextVNode, t as toDisplayString, _ as _export_sfc, r as ref, o as onMounted, bI as mergeProps, er as isRouteLocationRaw } from "./index--ag0tEQM.js";
1
+ import { ad as hasPermission, d as defineComponent, b as useRouter, U as useRoute, a1 as useRootStore, v as useSettingsStore, J as useUIStore, x as computed, V as VIEWS, c as useI18n, h as resolveComponent, i as createElementBlock, g as openBlock, n as normalizeClass, j as createVNode, w as withCtx, k as createBaseVNode, m as unref, b3 as ABOUT_MODAL_KEY, l as createTextVNode, t as toDisplayString, _ as _export_sfc, r as ref, o as onMounted, bK as mergeProps, ex as isRouteLocationRaw } from "./index-CKxPg00R.js";
2
2
  function useUserHelpers(router, route) {
3
3
  const canUserAccessRouteByName = (name) => {
4
4
  const resolvedRoute = router.resolve({ name });
@@ -1,11 +1,10 @@
1
- import { d as defineComponent, p as useSettingsStore, G as useUIStore, u as useUsersStore, a as useToast, b as useRouter, r as ref, dW as reactive, c as useI18n, e as createBlock, g as openBlock, V as VIEWS } from "./index--ag0tEQM.js";
2
- import { A as AuthView } from "./AuthView-D3YwZZ3s.js";
3
- import "./Logo-BT-1ZjZS.js";
1
+ import { d as defineComponent, v as useSettingsStore, u as useUsersStore, a as useToast, b as useRouter, r as ref, d_ as reactive, c as useI18n, e as createBlock, g as openBlock, V as VIEWS } from "./index-CKxPg00R.js";
2
+ import { A as AuthView } from "./AuthView-BNBwVz1X.js";
3
+ import "./Logo-h1nzxLUV.js";
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
5
5
  __name: "SetupView",
6
6
  setup(__props) {
7
7
  const settingsStore = useSettingsStore();
8
- const uiStore = useUIStore();
9
8
  const usersStore = useUsersStore();
10
9
  const toast = useToast();
11
10
  const locale = useI18n();
@@ -76,7 +75,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
76
75
  );
77
76
  if (values.agree === true) {
78
77
  try {
79
- await uiStore.submitContactEmail(values.email.toString(), values.agree);
78
+ await usersStore.submitContactEmail(values.email.toString(), values.agree);
80
79
  } catch {
81
80
  }
82
81
  }
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, P as useWorkflowsStore, bt as useNodeTypesStore, G as useUIStore, q as computed, hT as doesNodeHaveAllCredentialsFilled, W as watch, v as onBeforeUnmount, hU as SETUP_CREDENTIALS_MODAL_KEY, h as resolveComponent, e as createBlock, f as createCommentVNode, g as openBlock, m as unref, c as useI18n } from "./index--ag0tEQM.js";
1
+ import { d as defineComponent, T as useWorkflowsStore, bw as useNodeTypesStore, J as useUIStore, x as computed, hY as doesNodeHaveAllCredentialsFilled, $ as watch, z as onBeforeUnmount, hZ as SETUP_CREDENTIALS_MODAL_KEY, h as resolveComponent, e as createBlock, f as createCommentVNode, g as openBlock, m as unref, c as useI18n } from "./index-CKxPg00R.js";
2
2
  const _sfc_main = /* @__PURE__ */ defineComponent({
3
3
  __name: "SetupWorkflowCredentialsButton",
4
4
  setup(__props) {
@@ -1,6 +1,6 @@
1
- import { N as defineStore, r as ref, aR as useTemplatesStore, bt as useNodeTypesStore, d5 as useCredentialsStore, Y as useRootStore, P as useWorkflowsStore, q as computed, e$ as useCredentialSetupState, aT as useExternalHooks, ai as useTelemetry, V as VIEWS, eb as tryToParseNumber, d as defineComponent, Q as useRoute, b as useRouter, W as watch, o as onMounted, h as resolveComponent, e as createBlock, g as openBlock, w as withCtx, k as createBaseVNode, n as normalizeClass, f0 as AppsRequiringCredsNotice, m as unref, i as createElementBlock, F as Fragment, C as renderList, f1 as SetupTemplateFormStep, j as createVNode, aW as N8nLink, l as createTextVNode, t as toDisplayString, c as useI18n, f2 as N8nHeading, _ as _export_sfc } from "./index--ag0tEQM.js";
2
- import { c as createWorkflowFromTemplate } from "./templateActions-CXnj7CA4.js";
3
- import { T as TemplatesView } from "./TemplatesView-GnPEf_mW.js";
1
+ import { R as defineStore, r as ref, aV as useTemplatesStore, bw as useNodeTypesStore, d7 as useCredentialsStore, a1 as useRootStore, T as useWorkflowsStore, x as computed, f5 as useCredentialSetupState, aX as useExternalHooks, am as useTelemetry, V as VIEWS, eh as tryToParseNumber, d as defineComponent, U as useRoute, b as useRouter, $ as watch, o as onMounted, h as resolveComponent, e as createBlock, g as openBlock, w as withCtx, k as createBaseVNode, n as normalizeClass, f6 as AppsRequiringCredsNotice, m as unref, i as createElementBlock, F as Fragment, G as renderList, f7 as SetupTemplateFormStep, j as createVNode, a_ as N8nLink, l as createTextVNode, t as toDisplayString, c as useI18n, N as N8nHeading, _ as _export_sfc } from "./index-CKxPg00R.js";
2
+ import { c as createWorkflowFromTemplate } from "./templateActions-XYE_erXB.js";
3
+ import { T as TemplatesView } from "./TemplatesView-CsiXLYQI.js";
4
4
  const useSetupTemplateStore = defineStore("setupTemplate", () => {
5
5
  const templateId = ref("");
6
6
  const isLoading = ref(true);
@@ -1,6 +1,6 @@
1
- import { d as defineComponent, r as ref, eT as toRefs, p as useSettingsStore, o as onMounted, h as resolveComponent, i as createElementBlock, g as openBlock, n as normalizeClass, j as createVNode, m as unref, w as withCtx, k as createBaseVNode, l as createTextVNode, t as toDisplayString, c as useI18n, e as createBlock, f as createCommentVNode, eU as MFA_FORM, M as MFA_AUTHENTICATION_CODE_INPUT_MAX_LENGTH, eV as MFA_AUTHENTICATION_RECOVERY_CODE_INPUT_MAX_LENGTH, eW as mfaEventBus, _ as _export_sfc, u as useUsersStore, aM as useCloudPlanStore, Q as useRoute, b as useRouter, a as useToast, q as computed, dW as reactive, ai as useTelemetry, V as VIEWS, eX as MFA_AUTHENTICATION_REQUIRED_ERROR_CODE } from "./index--ag0tEQM.js";
2
- import { A as AuthView } from "./AuthView-D3YwZZ3s.js";
3
- import { L as Logo } from "./Logo-BT-1ZjZS.js";
1
+ import { d as defineComponent, r as ref, eZ as toRefs, v as useSettingsStore, o as onMounted, h as resolveComponent, i as createElementBlock, g as openBlock, n as normalizeClass, j as createVNode, m as unref, w as withCtx, k as createBaseVNode, l as createTextVNode, t as toDisplayString, c as useI18n, e as createBlock, f as createCommentVNode, e_ as MFA_FORM, M as MFA_AUTHENTICATION_CODE_INPUT_MAX_LENGTH, e$ as MFA_AUTHENTICATION_RECOVERY_CODE_INPUT_MAX_LENGTH, f0 as mfaEventBus, _ as _export_sfc, u as useUsersStore, aQ as useCloudPlanStore, eA as useSSOStore, U as useRoute, b as useRouter, a as useToast, x as computed, d_ as reactive, am as useTelemetry, V as VIEWS, f1 as MFA_AUTHENTICATION_REQUIRED_ERROR_CODE } from "./index-CKxPg00R.js";
2
+ import { A as AuthView } from "./AuthView-BNBwVz1X.js";
3
+ import { L as Logo } from "./Logo-h1nzxLUV.js";
4
4
  const _sfc_main$1 = /* @__PURE__ */ defineComponent({
5
5
  __name: "MfaView",
6
6
  props: {
@@ -213,6 +213,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
213
213
  const usersStore = useUsersStore();
214
214
  const settingsStore = useSettingsStore();
215
215
  const cloudPlanStore = useCloudPlanStore();
216
+ const ssoStore = useSSOStore();
216
217
  const route = useRoute();
217
218
  const router = useRouter();
218
219
  const toast = useToast();
@@ -223,8 +224,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
223
224
  const emailOrLdapLoginId = ref("");
224
225
  const password = ref("");
225
226
  const reportError = ref(false);
226
- const ldapLoginLabel = computed(() => settingsStore.ldapLoginLabel);
227
- const isLdapLoginEnabled = computed(() => settingsStore.isLdapLoginEnabled);
227
+ const ldapLoginLabel = computed(() => ssoStore.ldapLoginLabel);
228
+ const isLdapLoginEnabled = computed(() => ssoStore.isLdapLoginEnabled);
228
229
  const emailLabel = computed(() => {
229
230
  let label = locale.baseText("auth.email");
230
231
  if (isLdapLoginEnabled.value && ldapLoginLabel.value) {
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, u as useUsersStore, a as useToast, b as useRouter, o as onMounted, i as createElementBlock, g as openBlock, V as VIEWS, c as useI18n } from "./index--ag0tEQM.js";
1
+ import { d as defineComponent, u as useUsersStore, a as useToast, b as useRouter, o as onMounted, i as createElementBlock, g as openBlock, V as VIEWS, c as useI18n } from "./index-CKxPg00R.js";
2
2
  const _sfc_main = /* @__PURE__ */ defineComponent({
3
3
  __name: "SignoutView",
4
4
  setup(__props) {
@@ -1,10 +1,9 @@
1
- import { A as AuthView } from "./AuthView-D3YwZZ3s.js";
2
- import { d as defineComponent, G as useUIStore, u as useUsersStore, a as useToast, b as useRouter, Q as useRoute, c as useI18n, r as ref, q as computed, o as onMounted, V as VIEWS, e as createBlock, g as openBlock } from "./index--ag0tEQM.js";
3
- import "./Logo-BT-1ZjZS.js";
1
+ import { A as AuthView } from "./AuthView-BNBwVz1X.js";
2
+ import { d as defineComponent, u as useUsersStore, a as useToast, b as useRouter, U as useRoute, c as useI18n, r as ref, x as computed, o as onMounted, V as VIEWS, e as createBlock, g as openBlock } from "./index-CKxPg00R.js";
3
+ import "./Logo-h1nzxLUV.js";
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
5
5
  __name: "SignupView",
6
6
  setup(__props) {
7
- const uiStore = useUIStore();
8
7
  const usersStore = useUsersStore();
9
8
  const toast = useToast();
10
9
  const i18n = useI18n();
@@ -104,7 +103,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
104
103
  });
105
104
  if (values.agree === true) {
106
105
  try {
107
- await uiStore.submitContactEmail(values.email.toString(), values.agree);
106
+ await usersStore.submitContactEmail(values.email.toString(), values.agree);
108
107
  } catch {
109
108
  }
110
109
  }
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, h as resolveComponent, i as createElementBlock, g as openBlock, n as normalizeClass, k as createBaseVNode, j as createVNode, w as withCtx, l as createTextVNode, t as toDisplayString, x as renderSlot, _ as _export_sfc, b as useRouter, aR as useTemplatesStore, e as createBlock, f as createCommentVNode, F as Fragment, C as renderList, bC as _sfc_main$2, m as unref, eY as filterTemplateNodes, c as useI18n, eZ as _sfc_main$3, e_ as abbreviateNumber } from "./index--ag0tEQM.js";
1
+ import { d as defineComponent, h as resolveComponent, i as createElementBlock, g as openBlock, n as normalizeClass, k as createBaseVNode, j as createVNode, w as withCtx, l as createTextVNode, t as toDisplayString, A as renderSlot, _ as _export_sfc, b as useRouter, aV as useTemplatesStore, e as createBlock, f as createCommentVNode, F as Fragment, G as renderList, bF as _sfc_main$2, m as unref, f2 as filterTemplateNodes, c as useI18n, f3 as _sfc_main$3, f4 as abbreviateNumber } from "./index-CKxPg00R.js";
2
2
  const _sfc_main$1 = /* @__PURE__ */ defineComponent({
3
3
  __name: "TemplateDetailsBlock",
4
4
  props: {