n8n-editor-ui 1.44.0 → 1.44.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 (150) hide show
  1. package/.turbo/turbo-build.log +77 -77
  2. package/dist/assets/{AuthView-1FRMwQ3r.js → AuthView-DfyvaM6i.js} +2 -2
  3. package/dist/assets/{AuthView-1FRMwQ3r.js.map → AuthView-DfyvaM6i.js.map} +1 -1
  4. package/dist/assets/{CanvasControls-FCzUEVOQ.js → CanvasControls-DFdnF5qb.js} +2 -2
  5. package/dist/assets/{CanvasControls-FCzUEVOQ.js.map → CanvasControls-DFdnF5qb.js.map} +1 -1
  6. package/dist/assets/{ChangePasswordView-DdWHauKg.js → ChangePasswordView-B4v8DwW9.js} +2 -2
  7. package/dist/assets/{ChangePasswordView-DdWHauKg.js.map → ChangePasswordView-B4v8DwW9.js.map} +1 -1
  8. package/dist/assets/{CollectionParameter-CiMzJaXg.js → CollectionParameter-5V5xJsjs.js} +2 -2
  9. package/dist/assets/CollectionParameter-5V5xJsjs.js.map +1 -0
  10. package/dist/assets/{CredentialsView-Bn6PVi9E.js → CredentialsView-tyjXlz4Z.js} +2 -2
  11. package/dist/assets/{CredentialsView-Bn6PVi9E.js.map → CredentialsView-tyjXlz4Z.js.map} +1 -1
  12. package/dist/assets/{ExecutionsFilter-nFboBzV2.js → ExecutionsFilter-0t_omffh.js} +2 -2
  13. package/dist/assets/{ExecutionsFilter-nFboBzV2.js.map → ExecutionsFilter-0t_omffh.js.map} +1 -1
  14. package/dist/assets/{ExecutionsView-CbkLSsSW.js → ExecutionsView-DzCvkqXG.js} +2 -2
  15. package/dist/assets/{ExecutionsView-CbkLSsSW.js.map → ExecutionsView-DzCvkqXG.js.map} +1 -1
  16. package/dist/assets/{ForgotMyPasswordView-vPMSx22g.js → ForgotMyPasswordView-D_90K80j.js} +2 -2
  17. package/dist/assets/{ForgotMyPasswordView-vPMSx22g.js.map → ForgotMyPasswordView-D_90K80j.js.map} +1 -1
  18. package/dist/assets/{MainHeader-DedFNVir.js → MainHeader-BYoa1H_e.js} +2 -2
  19. package/dist/assets/{MainHeader-DedFNVir.js.map → MainHeader-BYoa1H_e.js.map} +1 -1
  20. package/dist/assets/{MainSidebar-BNq07OnD.js → MainSidebar-BNsdraIv.js} +2 -2
  21. package/dist/assets/{MainSidebar-BNq07OnD.js.map → MainSidebar-BNsdraIv.js.map} +1 -1
  22. package/dist/assets/{NodeCreation-C0AAIhNs.js → NodeCreation-R9yLdNU1.js} +3 -3
  23. package/dist/assets/{NodeCreation-C0AAIhNs.js.map → NodeCreation-R9yLdNU1.js.map} +1 -1
  24. package/dist/assets/{NodeCreator-ESjCn1LZ.js → NodeCreator-CLzfNOJ5.js} +2 -2
  25. package/dist/assets/{NodeCreator-ESjCn1LZ.js.map → NodeCreator-CLzfNOJ5.js.map} +1 -1
  26. package/dist/assets/{NodeList-baCRAzNs.js → NodeList-B4yRfzDq.js} +2 -2
  27. package/dist/assets/{NodeList-baCRAzNs.js.map → NodeList-B4yRfzDq.js.map} +1 -1
  28. package/dist/assets/{NodeView-BucVYztm.js → NodeView-BGtpd_Bb.js} +4 -4
  29. package/dist/assets/{NodeView-BucVYztm.js.map → NodeView-BGtpd_Bb.js.map} +1 -1
  30. package/dist/assets/{NodeView.v2-Oz2vwdfG.js → NodeView.v2-DnTCsiDE.js} +3 -3
  31. package/dist/assets/{NodeView.v2-Oz2vwdfG.js.map → NodeView.v2-DnTCsiDE.js.map} +1 -1
  32. package/dist/assets/{ProjectCardBadge.vue_vue_type_script_setup_true_lang-BRGRmswR.js → ProjectCardBadge.vue_vue_type_script_setup_true_lang-CYFr8_zj.js} +2 -2
  33. package/dist/assets/{ProjectCardBadge.vue_vue_type_script_setup_true_lang-BRGRmswR.js.map → ProjectCardBadge.vue_vue_type_script_setup_true_lang-CYFr8_zj.js.map} +1 -1
  34. package/dist/assets/{ProjectSettings-D3FAGvAm.js → ProjectSettings-kayD4yS7.js} +2 -2
  35. package/dist/assets/{ProjectSettings-D3FAGvAm.js.map → ProjectSettings-kayD4yS7.js.map} +1 -1
  36. package/dist/assets/{ProjectTabs-B_U7Q16t.js → ProjectTabs-1jmisSQb.js} +2 -2
  37. package/dist/assets/{ProjectTabs-B_U7Q16t.js.map → ProjectTabs-1jmisSQb.js.map} +1 -1
  38. package/dist/assets/{PushConnectionTracker-DQVvJ6kh.js → PushConnectionTracker-Dfvjg1ts.js} +2 -2
  39. package/dist/assets/{PushConnectionTracker-DQVvJ6kh.js.map → PushConnectionTracker-Dfvjg1ts.js.map} +1 -1
  40. package/dist/assets/{ResourcesListLayout-CfzMCzp5.js → ResourcesListLayout-BOYOLez8.js} +2 -2
  41. package/dist/assets/{ResourcesListLayout-CfzMCzp5.js.map → ResourcesListLayout-BOYOLez8.js.map} +1 -1
  42. package/dist/assets/{RunDataAi-CwnKkFZ1.js → RunDataAi-CFKU0i2R.js} +2 -2
  43. package/dist/assets/{RunDataAi-CwnKkFZ1.js.map → RunDataAi-CFKU0i2R.js.map} +1 -1
  44. package/dist/assets/{RunDataJson-DTMT_R5P.js → RunDataJson-DHI409Ix.js} +3 -3
  45. package/dist/assets/{RunDataJson-DTMT_R5P.js.map → RunDataJson-DHI409Ix.js.map} +1 -1
  46. package/dist/assets/{RunDataJsonActions-dNlM_YO3.js → RunDataJsonActions-LAsoJBBD.js} +2 -2
  47. package/dist/assets/{RunDataJsonActions-dNlM_YO3.js.map → RunDataJsonActions-LAsoJBBD.js.map} +1 -1
  48. package/dist/assets/{RunDataSchema-D7rSFQ4v.js → RunDataSchema-CgYDgOLN.js} +2 -2
  49. package/dist/assets/{RunDataSchema-D7rSFQ4v.js.map → RunDataSchema-CgYDgOLN.js.map} +1 -1
  50. package/dist/assets/{RunDataSearch-BLxgvPWc.js → RunDataSearch-ZJd98FoH.js} +2 -2
  51. package/dist/assets/{RunDataSearch-BLxgvPWc.js.map → RunDataSearch-ZJd98FoH.js.map} +1 -1
  52. package/dist/assets/{RunDataTable-CTYOMGVf.js → RunDataTable-IMqti3UV.js} +2 -2
  53. package/dist/assets/{RunDataTable-CTYOMGVf.js.map → RunDataTable-IMqti3UV.js.map} +1 -1
  54. package/dist/assets/{SamlOnboarding-B0SKUJ7w.js → SamlOnboarding-6S1cZAZQ.js} +2 -2
  55. package/dist/assets/{SamlOnboarding-B0SKUJ7w.js.map → SamlOnboarding-6S1cZAZQ.js.map} +1 -1
  56. package/dist/assets/{SettingsApiView-04CpGWS3.js → SettingsApiView-DzACRdqO.js} +2 -2
  57. package/dist/assets/{SettingsApiView-04CpGWS3.js.map → SettingsApiView-DzACRdqO.js.map} +1 -1
  58. package/dist/assets/{SettingsCommunityNodesView-CNryAAn3.js → SettingsCommunityNodesView-DI8tm65K.js} +2 -2
  59. package/dist/assets/{SettingsCommunityNodesView-CNryAAn3.js.map → SettingsCommunityNodesView-DI8tm65K.js.map} +1 -1
  60. package/dist/assets/{SettingsExternalSecrets-B39P4p2-.js → SettingsExternalSecrets-DFb1WNlI.js} +2 -2
  61. package/dist/assets/{SettingsExternalSecrets-B39P4p2-.js.map → SettingsExternalSecrets-DFb1WNlI.js.map} +1 -1
  62. package/dist/assets/{SettingsFakeDoorView-BOQAY92v.js → SettingsFakeDoorView-CDAZibIu.js} +2 -2
  63. package/dist/assets/{SettingsFakeDoorView-BOQAY92v.js.map → SettingsFakeDoorView-CDAZibIu.js.map} +1 -1
  64. package/dist/assets/{SettingsLdapView-VTF-EB0a.js → SettingsLdapView-yXjpScE1.js} +2 -2
  65. package/dist/assets/{SettingsLdapView-VTF-EB0a.js.map → SettingsLdapView-yXjpScE1.js.map} +1 -1
  66. package/dist/assets/{SettingsLogStreamingView-JsodKkoJ.js → SettingsLogStreamingView-DQTUJczt.js} +2 -2
  67. package/dist/assets/{SettingsLogStreamingView-JsodKkoJ.js.map → SettingsLogStreamingView-DQTUJczt.js.map} +1 -1
  68. package/dist/assets/{SettingsPersonalView-DxQ-hHrk.js → SettingsPersonalView-CYfSdpu7.js} +2 -2
  69. package/dist/assets/{SettingsPersonalView-DxQ-hHrk.js.map → SettingsPersonalView-CYfSdpu7.js.map} +1 -1
  70. package/dist/assets/{SettingsSourceControl-aqaWVYCl.js → SettingsSourceControl-SrxQOR5H.js} +2 -2
  71. package/dist/assets/{SettingsSourceControl-aqaWVYCl.js.map → SettingsSourceControl-SrxQOR5H.js.map} +1 -1
  72. package/dist/assets/{SettingsSso-Chwn0xrx.js → SettingsSso-DrB162SI.js} +2 -2
  73. package/dist/assets/{SettingsSso-Chwn0xrx.js.map → SettingsSso-DrB162SI.js.map} +1 -1
  74. package/dist/assets/{SettingsUsageAndPlan-CIj5SQKn.js → SettingsUsageAndPlan-vOGNFMVq.js} +2 -2
  75. package/dist/assets/{SettingsUsageAndPlan-CIj5SQKn.js.map → SettingsUsageAndPlan-vOGNFMVq.js.map} +1 -1
  76. package/dist/assets/{SettingsUsersView-CY4kSRaG.js → SettingsUsersView-Tx1-g18F.js} +2 -2
  77. package/dist/assets/{SettingsUsersView-CY4kSRaG.js.map → SettingsUsersView-Tx1-g18F.js.map} +1 -1
  78. package/dist/assets/{SettingsView-jgK3_oOB.js → SettingsView-BOZ2SBsQ.js} +2 -2
  79. package/dist/assets/{SettingsView-jgK3_oOB.js.map → SettingsView-BOZ2SBsQ.js.map} +1 -1
  80. package/dist/assets/{SetupView-O6xv77jO.js → SetupView-DY7tVzgF.js} +2 -2
  81. package/dist/assets/{SetupView-O6xv77jO.js.map → SetupView-DY7tVzgF.js.map} +1 -1
  82. package/dist/assets/{SetupWorkflowCredentialsButton-oGzzXD7H.js → SetupWorkflowCredentialsButton-B9Acgowu.js} +2 -2
  83. package/dist/assets/{SetupWorkflowCredentialsButton-oGzzXD7H.js.map → SetupWorkflowCredentialsButton-B9Acgowu.js.map} +1 -1
  84. package/dist/assets/{SetupWorkflowFromTemplateView-BDUp9JWx.js → SetupWorkflowFromTemplateView-C2E8A8g4.js} +2 -2
  85. package/dist/assets/{SetupWorkflowFromTemplateView-BDUp9JWx.js.map → SetupWorkflowFromTemplateView-C2E8A8g4.js.map} +1 -1
  86. package/dist/assets/{SigninView-BLgTm7p4.js → SigninView-DlT1Bv9l.js} +2 -2
  87. package/dist/assets/{SigninView-BLgTm7p4.js.map → SigninView-DlT1Bv9l.js.map} +1 -1
  88. package/dist/assets/{SignoutView-DFSKFmE2.js → SignoutView-DisgJoQS.js} +2 -2
  89. package/dist/assets/{SignoutView-DFSKFmE2.js.map → SignoutView-DisgJoQS.js.map} +1 -1
  90. package/dist/assets/{SignupView-DSmDdbRA.js → SignupView-CQZSGNCi.js} +2 -2
  91. package/dist/assets/{SignupView-DSmDdbRA.js.map → SignupView-CQZSGNCi.js.map} +1 -1
  92. package/dist/assets/{TemplateDetails-DW6dTHAk.js → TemplateDetails-DZzMxROe.js} +2 -2
  93. package/dist/assets/{TemplateDetails-DW6dTHAk.js.map → TemplateDetails-DZzMxROe.js.map} +1 -1
  94. package/dist/assets/{TemplateList-DHLgDv5f.js → TemplateList-DS0lnbxA.js} +2 -2
  95. package/dist/assets/{TemplateList-DHLgDv5f.js.map → TemplateList-DS0lnbxA.js.map} +1 -1
  96. package/dist/assets/{TemplatesCollectionView-Bix3khnw.js → TemplatesCollectionView-BMck3jn9.js} +2 -2
  97. package/dist/assets/{TemplatesCollectionView-Bix3khnw.js.map → TemplatesCollectionView-BMck3jn9.js.map} +1 -1
  98. package/dist/assets/{TemplatesInfoCarousel-B3u16wII.js → TemplatesInfoCarousel-BYIB7MKZ.js} +2 -2
  99. package/dist/assets/{TemplatesInfoCarousel-B3u16wII.js.map → TemplatesInfoCarousel-BYIB7MKZ.js.map} +1 -1
  100. package/dist/assets/{TemplatesSearchView-CvtrqPXg.js → TemplatesSearchView-aVpZ2G9F.js} +2 -2
  101. package/dist/assets/{TemplatesSearchView-CvtrqPXg.js.map → TemplatesSearchView-aVpZ2G9F.js.map} +1 -1
  102. package/dist/assets/{TemplatesView-DuT3R1EI.js → TemplatesView-CuyRlzAM.js} +2 -2
  103. package/dist/assets/{TemplatesView-DuT3R1EI.js.map → TemplatesView-CuyRlzAM.js.map} +1 -1
  104. package/dist/assets/{TemplatesWorkflowView-C_-zPrQW.js → TemplatesWorkflowView-DAa2SCYE.js} +2 -2
  105. package/dist/assets/{TemplatesWorkflowView-C_-zPrQW.js.map → TemplatesWorkflowView-DAa2SCYE.js.map} +1 -1
  106. package/dist/assets/{VariablesView-CMrDg4Fx.js → VariablesView-57BdyEmO.js} +2 -2
  107. package/dist/assets/{VariablesView-CMrDg4Fx.js.map → VariablesView-57BdyEmO.js.map} +1 -1
  108. package/dist/assets/{WorkerView-BcfdfxOO.js → WorkerView-BLv_CYeM.js} +2 -2
  109. package/dist/assets/{WorkerView-BcfdfxOO.js.map → WorkerView-BLv_CYeM.js.map} +1 -1
  110. package/dist/assets/{WorkflowActivator-BiqeeeBc.js → WorkflowActivator-WjfZFpnK.js} +2 -2
  111. package/dist/assets/{WorkflowActivator-BiqeeeBc.js.map → WorkflowActivator-WjfZFpnK.js.map} +1 -1
  112. package/dist/assets/{WorkflowExecutionsInfoAccordion-CITQoihQ.js → WorkflowExecutionsInfoAccordion-Dv9rbNek.js} +2 -2
  113. package/dist/assets/{WorkflowExecutionsInfoAccordion-CITQoihQ.js.map → WorkflowExecutionsInfoAccordion-Dv9rbNek.js.map} +1 -1
  114. package/dist/assets/{WorkflowExecutionsLandingPage-CnHdLYgR.js → WorkflowExecutionsLandingPage-CsbJPayv.js} +2 -2
  115. package/dist/assets/{WorkflowExecutionsLandingPage-CnHdLYgR.js.map → WorkflowExecutionsLandingPage-CsbJPayv.js.map} +1 -1
  116. package/dist/assets/{WorkflowExecutionsPreview-By0_k6NX.js → WorkflowExecutionsPreview-xxP83pWI.js} +2 -2
  117. package/dist/assets/{WorkflowExecutionsPreview-By0_k6NX.js.map → WorkflowExecutionsPreview-xxP83pWI.js.map} +1 -1
  118. package/dist/assets/WorkflowExecutionsView-c7NCTwks.js +2 -0
  119. package/dist/assets/WorkflowExecutionsView-c7NCTwks.js.map +1 -0
  120. package/dist/assets/{WorkflowHistory-C5ALmvoB.js → WorkflowHistory-DI6sDGlZ.js} +2 -2
  121. package/dist/assets/{WorkflowHistory-C5ALmvoB.js.map → WorkflowHistory-DI6sDGlZ.js.map} +1 -1
  122. package/dist/assets/{WorkflowOnboardingView-hQxsQlm1.js → WorkflowOnboardingView-DVqrTjM4.js} +2 -2
  123. package/dist/assets/{WorkflowOnboardingView-hQxsQlm1.js.map → WorkflowOnboardingView-DVqrTjM4.js.map} +1 -1
  124. package/dist/assets/{WorkflowsView-TF6zcpi6.js → WorkflowsView-DpB66gWH.js} +2 -2
  125. package/dist/assets/{WorkflowsView-TF6zcpi6.js.map → WorkflowsView-DpB66gWH.js.map} +1 -1
  126. package/dist/assets/{cloud-CZc2nauc.js → cloud-bM1gshor.js} +2 -2
  127. package/dist/assets/{cloud-CZc2nauc.js.map → cloud-bM1gshor.js.map} +1 -1
  128. package/dist/assets/{collaboration.store-BkSXOsR4.js → collaboration.store-Ct7EpGqG.js} +2 -2
  129. package/dist/assets/{collaboration.store-BkSXOsR4.js.map → collaboration.store-Ct7EpGqG.js.map} +1 -1
  130. package/dist/assets/{index-CY2ZfL2U.js → index-BQ6Z7VRj.js} +4 -4
  131. package/dist/assets/{index-CY2ZfL2U.js.map → index-BQ6Z7VRj.js.map} +1 -1
  132. package/dist/assets/{nodeCreator.store-CmYeJsEL.js → nodeCreator.store-DAcGJEHy.js} +2 -2
  133. package/dist/assets/{nodeCreator.store-CmYeJsEL.js.map → nodeCreator.store-DAcGJEHy.js.map} +1 -1
  134. package/dist/assets/{templateActions-DvpFnju7.js → templateActions-F64sfZ3n.js} +2 -2
  135. package/dist/assets/{templateActions-DvpFnju7.js.map → templateActions-F64sfZ3n.js.map} +1 -1
  136. package/dist/assets/{useExecutionDebugging-6-sjTvWS.js → useExecutionDebugging-DuMp5DdQ.js} +2 -2
  137. package/dist/assets/{useExecutionDebugging-6-sjTvWS.js.map → useExecutionDebugging-DuMp5DdQ.js.map} +1 -1
  138. package/dist/assets/{useExecutionHelpers-BZpwMJs_.js → useExecutionHelpers-Dt-UJW97.js} +2 -2
  139. package/dist/assets/{useExecutionHelpers-BZpwMJs_.js.map → useExecutionHelpers-Dt-UJW97.js.map} +1 -1
  140. package/dist/assets/{usePushConnection-DI_JaC-X.js → usePushConnection-Kek6sJ0j.js} +2 -2
  141. package/dist/assets/{usePushConnection-DI_JaC-X.js.map → usePushConnection-Kek6sJ0j.js.map} +1 -1
  142. package/dist/assets/{useViewStacks-D-hnVv3F.js → useViewStacks-CSn_e3gA.js} +2 -2
  143. package/dist/assets/{useViewStacks-D-hnVv3F.js.map → useViewStacks-CSn_e3gA.js.map} +1 -1
  144. package/dist/assets/{useWorkflowActivate-lrYalAwm.js → useWorkflowActivate-Bl43vPgP.js} +2 -2
  145. package/dist/assets/{useWorkflowActivate-lrYalAwm.js.map → useWorkflowActivate-Bl43vPgP.js.map} +1 -1
  146. package/dist/index.html +1 -1
  147. package/package.json +1 -1
  148. package/dist/assets/CollectionParameter-CiMzJaXg.js.map +0 -1
  149. package/dist/assets/WorkflowExecutionsView-fiAM1R-f.js +0 -2
  150. package/dist/assets/WorkflowExecutionsView-fiAM1R-f.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{G as H,az as J,aH as Q,r as f,e as A,b as X,l as i,m as d,U as l,O as s,S as p,T as o,u as t,M as k,I as r,R as h,p as g,J as Y,a2 as Z,ag as u}from"./vendor-CUQSof8H.js";import{cB as ee,i as te,u as ne,r as ae,N as a,d4 as se,d5 as oe}from"./index-CY2ZfL2U.js";import{_ as ie}from"./n8n-DT_bOwuZ.js";import"./pinia-Dh4cxKZ0.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BiGWdRh4.js";import"./lodash-es-BFdF4Er8.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-C0ZgbPvs.js";import"./vue-i18n-CG6eDDlD.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-wY6jAr7b.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-DOxvr88t.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const le={class:"settings-usage-and-plan"},ce={key:1},re={key:0},ue={key:1},de={key:0},pe={key:1},ge=["href"],_e=["href"],me=H({__name:"SettingsUsageAndPlan",setup(ze){const n=ee(),P=J(),B=Q(),I=te(),x=ne(),T=f(`callback=${encodeURIComponent(`${window.location.origin}${window.location.pathname}`)}`),V=A(()=>`${n.viewPlansUrl}&${T.value}&source=usage_page`),j=A(()=>`${n.managePlanUrl}&${T.value}`),_=f(!1),v=f(""),w=f(null),$=A(()=>ae(["rbac"],{rbac:{scope:"license:manage"}})),z=()=>{x.showMessage({type:"success",title:a.baseText("settings.usageAndPlan.license.activation.success.title"),message:a.baseText("settings.usageAndPlan.license.activation.success.message",{interpolate:{name:n.planName,type:n.planId?a.baseText("settings.usageAndPlan.plan"):a.baseText("settings.usageAndPlan.edition")}})})},L=e=>{x.showError(e,a.baseText("settings.usageAndPlan.license.activation.error.title"),e.message)},N=async()=>{try{await n.activateLicense(v.value),_.value=!1,z()}catch(e){L(e)}};X(async()=>{if(!n.isDesktop){if(n.setLoading(!0),P.query.key)try{await n.activateLicense(P.query.key),await B.replace({query:{}}),z(),n.setLoading(!1);return}catch(e){L(e)}try{!P.query.key&&$.value?await n.refreshLicenseManagementToken():await n.getLicenseInfo(),n.setLoading(!1)}catch(e){e.name||(e.name=a.baseText("settings.usageAndPlan.error")),x.showError(e,e.name,e.message)}}});const y=e=>{const c=n.telemetryPayload;c.action=e,oe.track("User clicked button on usage page",c)},S=()=>{_.value=!0,y("add_activation_key")},q=()=>{I.goToUpgrade("usage_page","open"),y("view_plans")},M=()=>{y("manage_plan")},D=()=>{v.value=""},R=()=>{var e;(e=w.value)==null||e.focus()},E=()=>{y("desktop_view_plans"),window.open(se,"_blank")};return(e,c)=>{const C=u("n8n-heading"),K=u("n8n-action-box"),U=u("i18n-t"),W=u("n8n-text"),F=u("n8n-info-tip"),m=u("n8n-button"),G=u("n8n-input"),O=u("el-dialog");return i(),d("div",le,[l(C,{size:"2xlarge"},{default:s(()=>[p(o(t(a).baseText("settings.usageAndPlan.title")),1)]),_:1}),t(n).isDesktop?(i(),k(K,{key:0,class:r(e.$style.actionBox),heading:t(a).baseText("settings.usageAndPlan.desktop.title"),description:t(a).baseText("settings.usageAndPlan.desktop.description"),"button-text":t(a).baseText("settings.usageAndPlan.button.plans"),"onClick:button":E},null,8,["class","heading","description","button-text"])):h("",!0),!t(n).isDesktop&&!t(n).isLoading?(i(),d("div",ce,[l(C,{class:r(e.$style.title),size:"large"},{default:s(()=>[l(U,{keypath:"settings.usageAndPlan.description",tag:"span"},{name:s(()=>[p(o(t(n).planName),1)]),type:s(()=>[t(n).planId?(i(),d("span",re,o(t(a).baseText("settings.usageAndPlan.plan")),1)):(i(),d("span",ue,o(t(a).baseText("settings.usageAndPlan.edition")),1))]),_:1})]),_:1},8,["class"]),g("div",{class:r(e.$style.quota)},[l(W,{size:"medium",color:"text-light"},{default:s(()=>[p(o(t(a).baseText("settings.usageAndPlan.activeWorkflows")),1)]),_:1}),g("div",{class:r(e.$style.chart)},[t(n).executionLimit>0?(i(),d("span",{key:0,class:r(e.$style.chartLine)},[g("span",{class:r(e.$style.chartBar),style:Y({width:`${t(n).executionPercentage}%`})},null,6)],2)):h("",!0),l(U,{tag:"span",class:r(e.$style.count),keypath:"settings.usageAndPlan.activeWorkflows.count"},{count:s(()=>[p(o(t(n).executionCount),1)]),limit:s(()=>[t(n).executionLimit<0?(i(),d("span",de,o(t(a).baseText("settings.usageAndPlan.activeWorkflows.unlimited")),1)):(i(),d("span",pe,o(t(n).executionLimit),1))]),_:1},8,["class"])],2)],2),l(F,null,{default:s(()=>[p(o(t(a).baseText("settings.usageAndPlan.activeWorkflows.hint")),1)]),_:1}),g("div",{class:r(e.$style.buttons)},[$.value?(i(),k(m,{key:0,class:r(e.$style.buttonTertiary),type:"tertiary",size:"large",onClick:S},{default:s(()=>[g("span",null,o(t(a).baseText("settings.usageAndPlan.button.activation")),1)]),_:1},8,["class"])):h("",!0),t(n).managementToken?(i(),k(m,{key:1,size:"large",onClick:M},{default:s(()=>[g("a",{href:j.value,target:"_blank"},o(t(a).baseText("settings.usageAndPlan.button.manage")),9,ge)]),_:1})):(i(),k(m,{key:2,size:"large",onClick:Z(q,["prevent"])},{default:s(()=>[g("a",{href:V.value,target:"_blank"},o(t(a).baseText("settings.usageAndPlan.button.plans")),9,_e)]),_:1}))],2),l(O,{modelValue:_.value,"onUpdate:modelValue":c[2]||(c[2]=b=>_.value=b),width:"480px",top:"0",title:t(a).baseText("settings.usageAndPlan.dialog.activation.title"),"modal-class":e.$style.center,onClosed:D,onOpened:R},{default:s(()=>[l(G,{ref_key:"activationKeyInput",ref:w,modelValue:v.value,"onUpdate:modelValue":c[0]||(c[0]=b=>v.value=b),placeholder:t(a).baseText("settings.usageAndPlan.dialog.activation.label")},null,8,["modelValue","placeholder"])]),footer:s(()=>[l(m,{type:"secondary",onClick:c[1]||(c[1]=b=>_.value=!1)},{default:s(()=>[p(o(t(a).baseText("settings.usageAndPlan.dialog.activation.cancel")),1)]),_:1}),l(m,{onClick:N},{default:s(()=>[p(o(t(a).baseText("settings.usageAndPlan.dialog.activation.activate")),1)]),_:1})]),_:1},8,["modelValue","title","modal-class"])])):h("",!0)])}}}),ve="_center_jzvne_1",ye="_actionBox_jzvne_5",be="_spacedFlex_jzvne_9",fe="_title_jzvne_15",ke="_quota_jzvne_20",he="_count_jzvne_32",Pe="_buttons_jzvne_37",xe="_chart_jzvne_53",Ae="_chartLine_jzvne_60",Te="_chartBar_jzvne_70",we={center:ve,actionBox:ye,spacedFlex:be,title:fe,quota:ke,count:he,buttons:Pe,chart:xe,chartLine:Ae,chartBar:Te},$e={$style:we},st=ie(me,[["__cssModules",$e],["__scopeId","data-v-7f34dcb2"]]);export{st as default};
2
- //# sourceMappingURL=SettingsUsageAndPlan-CIj5SQKn.js.map
1
+ import{G as H,az as J,aH as Q,r as f,e as A,b as X,l as i,m as d,U as l,O as s,S as p,T as o,u as t,M as k,I as r,R as h,p as g,J as Y,a2 as Z,ag as u}from"./vendor-CUQSof8H.js";import{cB as ee,i as te,u as ne,r as ae,N as a,d4 as se,d5 as oe}from"./index-BQ6Z7VRj.js";import{_ as ie}from"./n8n-DT_bOwuZ.js";import"./pinia-Dh4cxKZ0.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BiGWdRh4.js";import"./lodash-es-BFdF4Er8.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-C0ZgbPvs.js";import"./vue-i18n-CG6eDDlD.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-wY6jAr7b.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-DOxvr88t.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const le={class:"settings-usage-and-plan"},ce={key:1},re={key:0},ue={key:1},de={key:0},pe={key:1},ge=["href"],_e=["href"],me=H({__name:"SettingsUsageAndPlan",setup(ze){const n=ee(),P=J(),B=Q(),I=te(),x=ne(),T=f(`callback=${encodeURIComponent(`${window.location.origin}${window.location.pathname}`)}`),V=A(()=>`${n.viewPlansUrl}&${T.value}&source=usage_page`),j=A(()=>`${n.managePlanUrl}&${T.value}`),_=f(!1),v=f(""),w=f(null),$=A(()=>ae(["rbac"],{rbac:{scope:"license:manage"}})),z=()=>{x.showMessage({type:"success",title:a.baseText("settings.usageAndPlan.license.activation.success.title"),message:a.baseText("settings.usageAndPlan.license.activation.success.message",{interpolate:{name:n.planName,type:n.planId?a.baseText("settings.usageAndPlan.plan"):a.baseText("settings.usageAndPlan.edition")}})})},L=e=>{x.showError(e,a.baseText("settings.usageAndPlan.license.activation.error.title"),e.message)},N=async()=>{try{await n.activateLicense(v.value),_.value=!1,z()}catch(e){L(e)}};X(async()=>{if(!n.isDesktop){if(n.setLoading(!0),P.query.key)try{await n.activateLicense(P.query.key),await B.replace({query:{}}),z(),n.setLoading(!1);return}catch(e){L(e)}try{!P.query.key&&$.value?await n.refreshLicenseManagementToken():await n.getLicenseInfo(),n.setLoading(!1)}catch(e){e.name||(e.name=a.baseText("settings.usageAndPlan.error")),x.showError(e,e.name,e.message)}}});const y=e=>{const c=n.telemetryPayload;c.action=e,oe.track("User clicked button on usage page",c)},S=()=>{_.value=!0,y("add_activation_key")},q=()=>{I.goToUpgrade("usage_page","open"),y("view_plans")},M=()=>{y("manage_plan")},D=()=>{v.value=""},R=()=>{var e;(e=w.value)==null||e.focus()},E=()=>{y("desktop_view_plans"),window.open(se,"_blank")};return(e,c)=>{const C=u("n8n-heading"),K=u("n8n-action-box"),U=u("i18n-t"),W=u("n8n-text"),F=u("n8n-info-tip"),m=u("n8n-button"),G=u("n8n-input"),O=u("el-dialog");return i(),d("div",le,[l(C,{size:"2xlarge"},{default:s(()=>[p(o(t(a).baseText("settings.usageAndPlan.title")),1)]),_:1}),t(n).isDesktop?(i(),k(K,{key:0,class:r(e.$style.actionBox),heading:t(a).baseText("settings.usageAndPlan.desktop.title"),description:t(a).baseText("settings.usageAndPlan.desktop.description"),"button-text":t(a).baseText("settings.usageAndPlan.button.plans"),"onClick:button":E},null,8,["class","heading","description","button-text"])):h("",!0),!t(n).isDesktop&&!t(n).isLoading?(i(),d("div",ce,[l(C,{class:r(e.$style.title),size:"large"},{default:s(()=>[l(U,{keypath:"settings.usageAndPlan.description",tag:"span"},{name:s(()=>[p(o(t(n).planName),1)]),type:s(()=>[t(n).planId?(i(),d("span",re,o(t(a).baseText("settings.usageAndPlan.plan")),1)):(i(),d("span",ue,o(t(a).baseText("settings.usageAndPlan.edition")),1))]),_:1})]),_:1},8,["class"]),g("div",{class:r(e.$style.quota)},[l(W,{size:"medium",color:"text-light"},{default:s(()=>[p(o(t(a).baseText("settings.usageAndPlan.activeWorkflows")),1)]),_:1}),g("div",{class:r(e.$style.chart)},[t(n).executionLimit>0?(i(),d("span",{key:0,class:r(e.$style.chartLine)},[g("span",{class:r(e.$style.chartBar),style:Y({width:`${t(n).executionPercentage}%`})},null,6)],2)):h("",!0),l(U,{tag:"span",class:r(e.$style.count),keypath:"settings.usageAndPlan.activeWorkflows.count"},{count:s(()=>[p(o(t(n).executionCount),1)]),limit:s(()=>[t(n).executionLimit<0?(i(),d("span",de,o(t(a).baseText("settings.usageAndPlan.activeWorkflows.unlimited")),1)):(i(),d("span",pe,o(t(n).executionLimit),1))]),_:1},8,["class"])],2)],2),l(F,null,{default:s(()=>[p(o(t(a).baseText("settings.usageAndPlan.activeWorkflows.hint")),1)]),_:1}),g("div",{class:r(e.$style.buttons)},[$.value?(i(),k(m,{key:0,class:r(e.$style.buttonTertiary),type:"tertiary",size:"large",onClick:S},{default:s(()=>[g("span",null,o(t(a).baseText("settings.usageAndPlan.button.activation")),1)]),_:1},8,["class"])):h("",!0),t(n).managementToken?(i(),k(m,{key:1,size:"large",onClick:M},{default:s(()=>[g("a",{href:j.value,target:"_blank"},o(t(a).baseText("settings.usageAndPlan.button.manage")),9,ge)]),_:1})):(i(),k(m,{key:2,size:"large",onClick:Z(q,["prevent"])},{default:s(()=>[g("a",{href:V.value,target:"_blank"},o(t(a).baseText("settings.usageAndPlan.button.plans")),9,_e)]),_:1}))],2),l(O,{modelValue:_.value,"onUpdate:modelValue":c[2]||(c[2]=b=>_.value=b),width:"480px",top:"0",title:t(a).baseText("settings.usageAndPlan.dialog.activation.title"),"modal-class":e.$style.center,onClosed:D,onOpened:R},{default:s(()=>[l(G,{ref_key:"activationKeyInput",ref:w,modelValue:v.value,"onUpdate:modelValue":c[0]||(c[0]=b=>v.value=b),placeholder:t(a).baseText("settings.usageAndPlan.dialog.activation.label")},null,8,["modelValue","placeholder"])]),footer:s(()=>[l(m,{type:"secondary",onClick:c[1]||(c[1]=b=>_.value=!1)},{default:s(()=>[p(o(t(a).baseText("settings.usageAndPlan.dialog.activation.cancel")),1)]),_:1}),l(m,{onClick:N},{default:s(()=>[p(o(t(a).baseText("settings.usageAndPlan.dialog.activation.activate")),1)]),_:1})]),_:1},8,["modelValue","title","modal-class"])])):h("",!0)])}}}),ve="_center_jzvne_1",ye="_actionBox_jzvne_5",be="_spacedFlex_jzvne_9",fe="_title_jzvne_15",ke="_quota_jzvne_20",he="_count_jzvne_32",Pe="_buttons_jzvne_37",xe="_chart_jzvne_53",Ae="_chartLine_jzvne_60",Te="_chartBar_jzvne_70",we={center:ve,actionBox:ye,spacedFlex:be,title:fe,quota:ke,count:he,buttons:Pe,chart:xe,chartLine:Ae,chartBar:Te},$e={$style:we},st=ie(me,[["__cssModules",$e],["__scopeId","data-v-7f34dcb2"]]);export{st as default};
2
+ //# sourceMappingURL=SettingsUsageAndPlan-vOGNFMVq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsUsageAndPlan-CIj5SQKn.js","sources":["../../src/views/SettingsUsageAndPlan.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, onMounted, ref } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport type { UsageTelemetry } from '@/stores/usage.store';\nimport { useUsageStore } from '@/stores/usage.store';\nimport { telemetry } from '@/plugins/telemetry';\nimport { i18n as locale } from '@/plugins/i18n';\nimport { useUIStore } from '@/stores/ui.store';\nimport { N8N_PRICING_PAGE_URL } from '@/constants';\nimport { useToast } from '@/composables/useToast';\nimport { hasPermission } from '@/rbac/permissions';\n\nconst usageStore = useUsageStore();\nconst route = useRoute();\nconst router = useRouter();\nconst uiStore = useUIStore();\nconst toast = useToast();\n\nconst queryParamCallback = ref<string>(\n\t`callback=${encodeURIComponent(`${window.location.origin}${window.location.pathname}`)}`,\n);\nconst viewPlansUrl = computed(\n\t() => `${usageStore.viewPlansUrl}&${queryParamCallback.value}&source=usage_page`,\n);\nconst managePlanUrl = computed(() => `${usageStore.managePlanUrl}&${queryParamCallback.value}`);\nconst activationKeyModal = ref(false);\nconst activationKey = ref('');\nconst activationKeyInput = ref<HTMLInputElement | null>(null);\n\nconst canUserActivateLicense = computed(() =>\n\thasPermission(['rbac'], { rbac: { scope: 'license:manage' } }),\n);\n\nconst showActivationSuccess = () => {\n\ttoast.showMessage({\n\t\ttype: 'success',\n\t\ttitle: locale.baseText('settings.usageAndPlan.license.activation.success.title'),\n\t\tmessage: locale.baseText('settings.usageAndPlan.license.activation.success.message', {\n\t\t\tinterpolate: {\n\t\t\t\tname: usageStore.planName,\n\t\t\t\ttype: usageStore.planId\n\t\t\t\t\t? locale.baseText('settings.usageAndPlan.plan')\n\t\t\t\t\t: locale.baseText('settings.usageAndPlan.edition'),\n\t\t\t},\n\t\t}),\n\t});\n};\n\nconst showActivationError = (error: Error) => {\n\ttoast.showError(\n\t\terror,\n\t\tlocale.baseText('settings.usageAndPlan.license.activation.error.title'),\n\t\terror.message,\n\t);\n};\n\nconst onLicenseActivation = async () => {\n\ttry {\n\t\tawait usageStore.activateLicense(activationKey.value);\n\t\tactivationKeyModal.value = false;\n\t\tshowActivationSuccess();\n\t} catch (error) {\n\t\tshowActivationError(error);\n\t}\n};\n\nonMounted(async () => {\n\tif (usageStore.isDesktop) {\n\t\treturn;\n\t}\n\n\tusageStore.setLoading(true);\n\tif (route.query.key) {\n\t\ttry {\n\t\t\tawait usageStore.activateLicense(route.query.key as string);\n\t\t\tawait router.replace({ query: {} });\n\t\t\tshowActivationSuccess();\n\t\t\tusageStore.setLoading(false);\n\t\t\treturn;\n\t\t} catch (error) {\n\t\t\tshowActivationError(error);\n\t\t}\n\t}\n\ttry {\n\t\tif (!route.query.key && canUserActivateLicense.value) {\n\t\t\tawait usageStore.refreshLicenseManagementToken();\n\t\t} else {\n\t\t\tawait usageStore.getLicenseInfo();\n\t\t}\n\t\tusageStore.setLoading(false);\n\t} catch (error) {\n\t\tif (!error.name) {\n\t\t\terror.name = locale.baseText('settings.usageAndPlan.error');\n\t\t}\n\t\ttoast.showError(error, error.name, error.message);\n\t}\n});\n\nconst sendUsageTelemetry = (action: UsageTelemetry['action']) => {\n\tconst telemetryPayload = usageStore.telemetryPayload;\n\ttelemetryPayload.action = action;\n\ttelemetry.track('User clicked button on usage page', telemetryPayload);\n};\n\nconst onAddActivationKey = () => {\n\tactivationKeyModal.value = true;\n\tsendUsageTelemetry('add_activation_key');\n};\n\nconst onViewPlans = () => {\n\tvoid uiStore.goToUpgrade('usage_page', 'open');\n\tsendUsageTelemetry('view_plans');\n};\n\nconst onManagePlan = () => {\n\tsendUsageTelemetry('manage_plan');\n};\n\nconst onDialogClosed = () => {\n\tactivationKey.value = '';\n};\n\nconst onDialogOpened = () => {\n\tactivationKeyInput.value?.focus();\n};\n\nconst openPricingPage = () => {\n\tsendUsageTelemetry('desktop_view_plans');\n\twindow.open(N8N_PRICING_PAGE_URL, '_blank');\n};\n</script>\n\n<template>\n\t<div class=\"settings-usage-and-plan\">\n\t\t<n8n-heading size=\"2xlarge\">{{ locale.baseText('settings.usageAndPlan.title') }}</n8n-heading>\n\t\t<n8n-action-box\n\t\t\tv-if=\"usageStore.isDesktop\"\n\t\t\t:class=\"$style.actionBox\"\n\t\t\t:heading=\"locale.baseText('settings.usageAndPlan.desktop.title')\"\n\t\t\t:description=\"locale.baseText('settings.usageAndPlan.desktop.description')\"\n\t\t\t:button-text=\"locale.baseText('settings.usageAndPlan.button.plans')\"\n\t\t\t@click:button=\"openPricingPage\"\n\t\t/>\n\t\t<div v-if=\"!usageStore.isDesktop && !usageStore.isLoading\">\n\t\t\t<n8n-heading :class=\"$style.title\" size=\"large\">\n\t\t\t\t<i18n-t keypath=\"settings.usageAndPlan.description\" tag=\"span\">\n\t\t\t\t\t<template #name>{{ usageStore.planName }}</template>\n\t\t\t\t\t<template #type>\n\t\t\t\t\t\t<span v-if=\"usageStore.planId\">{{\n\t\t\t\t\t\t\tlocale.baseText('settings.usageAndPlan.plan')\n\t\t\t\t\t\t}}</span>\n\t\t\t\t\t\t<span v-else>{{ locale.baseText('settings.usageAndPlan.edition') }}</span>\n\t\t\t\t\t</template>\n\t\t\t\t</i18n-t>\n\t\t\t</n8n-heading>\n\n\t\t\t<div :class=\"$style.quota\">\n\t\t\t\t<n8n-text size=\"medium\" color=\"text-light\">\n\t\t\t\t\t{{ locale.baseText('settings.usageAndPlan.activeWorkflows') }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<div :class=\"$style.chart\">\n\t\t\t\t\t<span v-if=\"usageStore.executionLimit > 0\" :class=\"$style.chartLine\">\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t:class=\"$style.chartBar\"\n\t\t\t\t\t\t\t:style=\"{ width: `${usageStore.executionPercentage}%` }\"\n\t\t\t\t\t\t></span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<i18n-t\n\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t:class=\"$style.count\"\n\t\t\t\t\t\tkeypath=\"settings.usageAndPlan.activeWorkflows.count\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<template #count>{{ usageStore.executionCount }}</template>\n\t\t\t\t\t\t<template #limit>\n\t\t\t\t\t\t\t<span v-if=\"usageStore.executionLimit < 0\">{{\n\t\t\t\t\t\t\t\tlocale.baseText('settings.usageAndPlan.activeWorkflows.unlimited')\n\t\t\t\t\t\t\t}}</span>\n\t\t\t\t\t\t\t<span v-else>{{ usageStore.executionLimit }}</span>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</i18n-t>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<n8n-info-tip>{{\n\t\t\t\tlocale.baseText('settings.usageAndPlan.activeWorkflows.hint')\n\t\t\t}}</n8n-info-tip>\n\n\t\t\t<div :class=\"$style.buttons\">\n\t\t\t\t<n8n-button\n\t\t\t\t\tv-if=\"canUserActivateLicense\"\n\t\t\t\t\t:class=\"$style.buttonTertiary\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t@click=\"onAddActivationKey\"\n\t\t\t\t>\n\t\t\t\t\t<span>{{ locale.baseText('settings.usageAndPlan.button.activation') }}</span>\n\t\t\t\t</n8n-button>\n\t\t\t\t<n8n-button v-if=\"usageStore.managementToken\" size=\"large\" @click=\"onManagePlan\">\n\t\t\t\t\t<a :href=\"managePlanUrl\" target=\"_blank\">{{\n\t\t\t\t\t\tlocale.baseText('settings.usageAndPlan.button.manage')\n\t\t\t\t\t}}</a>\n\t\t\t\t</n8n-button>\n\t\t\t\t<n8n-button v-else size=\"large\" @click.prevent=\"onViewPlans\">\n\t\t\t\t\t<a :href=\"viewPlansUrl\" target=\"_blank\">{{\n\t\t\t\t\t\tlocale.baseText('settings.usageAndPlan.button.plans')\n\t\t\t\t\t}}</a>\n\t\t\t\t</n8n-button>\n\t\t\t</div>\n\n\t\t\t<el-dialog\n\t\t\t\tv-model=\"activationKeyModal\"\n\t\t\t\twidth=\"480px\"\n\t\t\t\ttop=\"0\"\n\t\t\t\t:title=\"locale.baseText('settings.usageAndPlan.dialog.activation.title')\"\n\t\t\t\t:modal-class=\"$style.center\"\n\t\t\t\t@closed=\"onDialogClosed\"\n\t\t\t\t@opened=\"onDialogOpened\"\n\t\t\t>\n\t\t\t\t<template #default>\n\t\t\t\t\t<n8n-input\n\t\t\t\t\t\tref=\"activationKeyInput\"\n\t\t\t\t\t\tv-model=\"activationKey\"\n\t\t\t\t\t\t:placeholder=\"locale.baseText('settings.usageAndPlan.dialog.activation.label')\"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\t\t\t\t<template #footer>\n\t\t\t\t\t<n8n-button type=\"secondary\" @click=\"activationKeyModal = false\">\n\t\t\t\t\t\t{{ locale.baseText('settings.usageAndPlan.dialog.activation.cancel') }}\n\t\t\t\t\t</n8n-button>\n\t\t\t\t\t<n8n-button @click=\"onLicenseActivation\">\n\t\t\t\t\t\t{{ locale.baseText('settings.usageAndPlan.dialog.activation.activate') }}\n\t\t\t\t\t</n8n-button>\n\t\t\t\t</template>\n\t\t\t</el-dialog>\n\t\t</div>\n\t</div>\n</template>\n\n<style lang=\"scss\" module>\n@import '@/styles/variables';\n\n.center > div {\n\tjustify-content: center;\n}\n\n.actionBox {\n\tmargin: var(--spacing-2xl) 0 0;\n}\n\n.spacedFlex {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n}\n\n.title {\n\tdisplay: block;\n\tpadding: var(--spacing-2xl) 0 var(--spacing-m);\n}\n\n.quota {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\theight: 54px;\n\tpadding: 0 var(--spacing-s);\n\tmargin: 0 0 var(--spacing-xs);\n\tbackground: var(--color-background-xlight);\n\tborder-radius: var(--border-radius-large);\n\tborder: 1px solid var(--color-foreground-base);\n\twhite-space: nowrap;\n\n\t.count {\n\t\ttext-transform: lowercase;\n\t\tfont-size: var(--font-size-s);\n\t}\n}\n\n.buttons {\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\tpadding: var(--spacing-xl) 0 0;\n\n\tbutton {\n\t\tmargin-left: var(--spacing-xs);\n\n\t\ta {\n\t\t\tdisplay: inline-block;\n\t\t\tcolor: inherit;\n\t\t\ttext-decoration: none;\n\t\t\tpadding: var(--spacing-xs) var(--spacing-m);\n\t\t\tmargin: calc(var(--spacing-xs) * -1) calc(var(--spacing-m) * -1);\n\t\t}\n\t}\n}\n\n.chart {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tflex-grow: 1;\n}\n\n.chartLine {\n\tdisplay: block;\n\theight: 10px;\n\twidth: 100%;\n\tmax-width: 260px;\n\tmargin: 0 var(--spacing-m);\n\tborder-radius: 10px;\n\tbackground: var(--color-background-base);\n}\n\n.chartBar {\n\tfloat: left;\n\theight: 100%;\n\tmax-width: 100%;\n\tbackground: var(--color-secondary);\n\tborder-radius: 10px;\n\ttransition: width 0.2s $ease-out-expo;\n}\n\ndiv[class*='info'] > span > span:last-child {\n\tline-height: 1.4;\n\tpadding: 0 0 0 var(--spacing-4xs);\n}\n</style>\n\n<style lang=\"scss\" scoped>\n.settings-usage-and-plan {\n\t:deep(.el-dialog__wrapper) {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\t.el-dialog {\n\t\t\tmargin: 0;\n\n\t\t\t.el-dialog__footer {\n\t\t\t\tbutton {\n\t\t\t\t\tmargin-left: var(--spacing-xs);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n"],"names":["usageStore","useUsageStore","route","useRoute","router","useRouter","uiStore","useUIStore","toast","useToast","queryParamCallback","ref","viewPlansUrl","computed","managePlanUrl","activationKeyModal","activationKey","activationKeyInput","canUserActivateLicense","hasPermission","showActivationSuccess","locale","showActivationError","error","onLicenseActivation","onMounted","sendUsageTelemetry","action","telemetryPayload","telemetry","onAddActivationKey","onViewPlans","onManagePlan","onDialogClosed","onDialogOpened","_a","openPricingPage","N8N_PRICING_PAGE_URL"],"mappings":"o4CAYA,MAAMA,EAAaC,KACbC,EAAQC,IACRC,EAASC,IACTC,EAAUC,KACVC,EAAQC,KAERC,EAAqBC,EAC1B,YAAY,mBAAmB,GAAG,OAAO,SAAS,MAAM,GAAG,OAAO,SAAS,QAAQ,EAAE,CAAC,EAAA,EAEjFC,EAAeC,EACpB,IAAM,GAAGb,EAAW,YAAY,IAAIU,EAAmB,KAAK,oBAAA,EAEvDI,EAAgBD,EAAS,IAAM,GAAGb,EAAW,aAAa,IAAIU,EAAmB,KAAK,EAAE,EACxFK,EAAqBJ,EAAI,EAAK,EAC9BK,EAAgBL,EAAI,EAAE,EACtBM,EAAqBN,EAA6B,IAAI,EAEtDO,EAAyBL,EAAS,IACvCM,GAAc,CAAC,MAAM,EAAG,CAAE,KAAM,CAAE,MAAO,gBAAiB,EAAG,CAAA,EAGxDC,EAAwB,IAAM,CACnCZ,EAAM,YAAY,CACjB,KAAM,UACN,MAAOa,EAAO,SAAS,wDAAwD,EAC/E,QAASA,EAAO,SAAS,2DAA4D,CACpF,YAAa,CACZ,KAAMrB,EAAW,SACjB,KAAMA,EAAW,OACdqB,EAAO,SAAS,4BAA4B,EAC5CA,EAAO,SAAS,+BAA+B,CACnD,CAAA,CACA,CAAA,CACD,CAAA,EAGIC,EAAuBC,GAAiB,CACvCf,EAAA,UACLe,EACAF,EAAO,SAAS,sDAAsD,EACtEE,EAAM,OAAA,CACP,EAGKC,EAAsB,SAAY,CACnC,GAAA,CACG,MAAAxB,EAAW,gBAAgBgB,EAAc,KAAK,EACpDD,EAAmB,MAAQ,GACLK,UACdG,EAAO,CACfD,EAAoBC,CAAK,CAC1B,CAAA,EAGDE,EAAU,SAAY,CACrB,GAAI,CAAAzB,EAAW,UAKX,IADJA,EAAW,WAAW,EAAI,EACtBE,EAAM,MAAM,IACX,GAAA,CACH,MAAMF,EAAW,gBAAgBE,EAAM,MAAM,GAAa,EAC1D,MAAME,EAAO,QAAQ,CAAE,MAAO,CAAA,CAAI,CAAA,EACZgB,IACtBpB,EAAW,WAAW,EAAK,EAC3B,aACQuB,EAAO,CACfD,EAAoBC,CAAK,CAC1B,CAEG,GAAA,CACC,CAACrB,EAAM,MAAM,KAAOgB,EAAuB,MAC9C,MAAMlB,EAAW,gCAEjB,MAAMA,EAAW,iBAElBA,EAAW,WAAW,EAAK,QACnBuB,EAAO,CACVA,EAAM,OACJA,EAAA,KAAOF,EAAO,SAAS,6BAA6B,GAE3Db,EAAM,UAAUe,EAAOA,EAAM,KAAMA,EAAM,OAAO,CACjD,EAAA,CACA,EAEK,MAAAG,EAAsBC,GAAqC,CAChE,MAAMC,EAAmB5B,EAAW,iBACpC4B,EAAiB,OAASD,EAChBE,GAAA,MAAM,oCAAqCD,CAAgB,CAAA,EAGhEE,EAAqB,IAAM,CAChCf,EAAmB,MAAQ,GAC3BW,EAAmB,oBAAoB,CAAA,EAGlCK,EAAc,IAAM,CACpBzB,EAAQ,YAAY,aAAc,MAAM,EAC7CoB,EAAmB,YAAY,CAAA,EAG1BM,EAAe,IAAM,CAC1BN,EAAmB,aAAa,CAAA,EAG3BO,EAAiB,IAAM,CAC5BjB,EAAc,MAAQ,EAAA,EAGjBkB,EAAiB,IAAM,QAC5BC,EAAAlB,EAAmB,QAAnB,MAAAkB,EAA0B,OAAM,EAG3BC,EAAkB,IAAM,CAC7BV,EAAmB,oBAAoB,EAChC,OAAA,KAAKW,GAAsB,QAAQ,CAAA"}
1
+ {"version":3,"file":"SettingsUsageAndPlan-vOGNFMVq.js","sources":["../../src/views/SettingsUsageAndPlan.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, onMounted, ref } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport type { UsageTelemetry } from '@/stores/usage.store';\nimport { useUsageStore } from '@/stores/usage.store';\nimport { telemetry } from '@/plugins/telemetry';\nimport { i18n as locale } from '@/plugins/i18n';\nimport { useUIStore } from '@/stores/ui.store';\nimport { N8N_PRICING_PAGE_URL } from '@/constants';\nimport { useToast } from '@/composables/useToast';\nimport { hasPermission } from '@/rbac/permissions';\n\nconst usageStore = useUsageStore();\nconst route = useRoute();\nconst router = useRouter();\nconst uiStore = useUIStore();\nconst toast = useToast();\n\nconst queryParamCallback = ref<string>(\n\t`callback=${encodeURIComponent(`${window.location.origin}${window.location.pathname}`)}`,\n);\nconst viewPlansUrl = computed(\n\t() => `${usageStore.viewPlansUrl}&${queryParamCallback.value}&source=usage_page`,\n);\nconst managePlanUrl = computed(() => `${usageStore.managePlanUrl}&${queryParamCallback.value}`);\nconst activationKeyModal = ref(false);\nconst activationKey = ref('');\nconst activationKeyInput = ref<HTMLInputElement | null>(null);\n\nconst canUserActivateLicense = computed(() =>\n\thasPermission(['rbac'], { rbac: { scope: 'license:manage' } }),\n);\n\nconst showActivationSuccess = () => {\n\ttoast.showMessage({\n\t\ttype: 'success',\n\t\ttitle: locale.baseText('settings.usageAndPlan.license.activation.success.title'),\n\t\tmessage: locale.baseText('settings.usageAndPlan.license.activation.success.message', {\n\t\t\tinterpolate: {\n\t\t\t\tname: usageStore.planName,\n\t\t\t\ttype: usageStore.planId\n\t\t\t\t\t? locale.baseText('settings.usageAndPlan.plan')\n\t\t\t\t\t: locale.baseText('settings.usageAndPlan.edition'),\n\t\t\t},\n\t\t}),\n\t});\n};\n\nconst showActivationError = (error: Error) => {\n\ttoast.showError(\n\t\terror,\n\t\tlocale.baseText('settings.usageAndPlan.license.activation.error.title'),\n\t\terror.message,\n\t);\n};\n\nconst onLicenseActivation = async () => {\n\ttry {\n\t\tawait usageStore.activateLicense(activationKey.value);\n\t\tactivationKeyModal.value = false;\n\t\tshowActivationSuccess();\n\t} catch (error) {\n\t\tshowActivationError(error);\n\t}\n};\n\nonMounted(async () => {\n\tif (usageStore.isDesktop) {\n\t\treturn;\n\t}\n\n\tusageStore.setLoading(true);\n\tif (route.query.key) {\n\t\ttry {\n\t\t\tawait usageStore.activateLicense(route.query.key as string);\n\t\t\tawait router.replace({ query: {} });\n\t\t\tshowActivationSuccess();\n\t\t\tusageStore.setLoading(false);\n\t\t\treturn;\n\t\t} catch (error) {\n\t\t\tshowActivationError(error);\n\t\t}\n\t}\n\ttry {\n\t\tif (!route.query.key && canUserActivateLicense.value) {\n\t\t\tawait usageStore.refreshLicenseManagementToken();\n\t\t} else {\n\t\t\tawait usageStore.getLicenseInfo();\n\t\t}\n\t\tusageStore.setLoading(false);\n\t} catch (error) {\n\t\tif (!error.name) {\n\t\t\terror.name = locale.baseText('settings.usageAndPlan.error');\n\t\t}\n\t\ttoast.showError(error, error.name, error.message);\n\t}\n});\n\nconst sendUsageTelemetry = (action: UsageTelemetry['action']) => {\n\tconst telemetryPayload = usageStore.telemetryPayload;\n\ttelemetryPayload.action = action;\n\ttelemetry.track('User clicked button on usage page', telemetryPayload);\n};\n\nconst onAddActivationKey = () => {\n\tactivationKeyModal.value = true;\n\tsendUsageTelemetry('add_activation_key');\n};\n\nconst onViewPlans = () => {\n\tvoid uiStore.goToUpgrade('usage_page', 'open');\n\tsendUsageTelemetry('view_plans');\n};\n\nconst onManagePlan = () => {\n\tsendUsageTelemetry('manage_plan');\n};\n\nconst onDialogClosed = () => {\n\tactivationKey.value = '';\n};\n\nconst onDialogOpened = () => {\n\tactivationKeyInput.value?.focus();\n};\n\nconst openPricingPage = () => {\n\tsendUsageTelemetry('desktop_view_plans');\n\twindow.open(N8N_PRICING_PAGE_URL, '_blank');\n};\n</script>\n\n<template>\n\t<div class=\"settings-usage-and-plan\">\n\t\t<n8n-heading size=\"2xlarge\">{{ locale.baseText('settings.usageAndPlan.title') }}</n8n-heading>\n\t\t<n8n-action-box\n\t\t\tv-if=\"usageStore.isDesktop\"\n\t\t\t:class=\"$style.actionBox\"\n\t\t\t:heading=\"locale.baseText('settings.usageAndPlan.desktop.title')\"\n\t\t\t:description=\"locale.baseText('settings.usageAndPlan.desktop.description')\"\n\t\t\t:button-text=\"locale.baseText('settings.usageAndPlan.button.plans')\"\n\t\t\t@click:button=\"openPricingPage\"\n\t\t/>\n\t\t<div v-if=\"!usageStore.isDesktop && !usageStore.isLoading\">\n\t\t\t<n8n-heading :class=\"$style.title\" size=\"large\">\n\t\t\t\t<i18n-t keypath=\"settings.usageAndPlan.description\" tag=\"span\">\n\t\t\t\t\t<template #name>{{ usageStore.planName }}</template>\n\t\t\t\t\t<template #type>\n\t\t\t\t\t\t<span v-if=\"usageStore.planId\">{{\n\t\t\t\t\t\t\tlocale.baseText('settings.usageAndPlan.plan')\n\t\t\t\t\t\t}}</span>\n\t\t\t\t\t\t<span v-else>{{ locale.baseText('settings.usageAndPlan.edition') }}</span>\n\t\t\t\t\t</template>\n\t\t\t\t</i18n-t>\n\t\t\t</n8n-heading>\n\n\t\t\t<div :class=\"$style.quota\">\n\t\t\t\t<n8n-text size=\"medium\" color=\"text-light\">\n\t\t\t\t\t{{ locale.baseText('settings.usageAndPlan.activeWorkflows') }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<div :class=\"$style.chart\">\n\t\t\t\t\t<span v-if=\"usageStore.executionLimit > 0\" :class=\"$style.chartLine\">\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t:class=\"$style.chartBar\"\n\t\t\t\t\t\t\t:style=\"{ width: `${usageStore.executionPercentage}%` }\"\n\t\t\t\t\t\t></span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<i18n-t\n\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t:class=\"$style.count\"\n\t\t\t\t\t\tkeypath=\"settings.usageAndPlan.activeWorkflows.count\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<template #count>{{ usageStore.executionCount }}</template>\n\t\t\t\t\t\t<template #limit>\n\t\t\t\t\t\t\t<span v-if=\"usageStore.executionLimit < 0\">{{\n\t\t\t\t\t\t\t\tlocale.baseText('settings.usageAndPlan.activeWorkflows.unlimited')\n\t\t\t\t\t\t\t}}</span>\n\t\t\t\t\t\t\t<span v-else>{{ usageStore.executionLimit }}</span>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</i18n-t>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<n8n-info-tip>{{\n\t\t\t\tlocale.baseText('settings.usageAndPlan.activeWorkflows.hint')\n\t\t\t}}</n8n-info-tip>\n\n\t\t\t<div :class=\"$style.buttons\">\n\t\t\t\t<n8n-button\n\t\t\t\t\tv-if=\"canUserActivateLicense\"\n\t\t\t\t\t:class=\"$style.buttonTertiary\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t@click=\"onAddActivationKey\"\n\t\t\t\t>\n\t\t\t\t\t<span>{{ locale.baseText('settings.usageAndPlan.button.activation') }}</span>\n\t\t\t\t</n8n-button>\n\t\t\t\t<n8n-button v-if=\"usageStore.managementToken\" size=\"large\" @click=\"onManagePlan\">\n\t\t\t\t\t<a :href=\"managePlanUrl\" target=\"_blank\">{{\n\t\t\t\t\t\tlocale.baseText('settings.usageAndPlan.button.manage')\n\t\t\t\t\t}}</a>\n\t\t\t\t</n8n-button>\n\t\t\t\t<n8n-button v-else size=\"large\" @click.prevent=\"onViewPlans\">\n\t\t\t\t\t<a :href=\"viewPlansUrl\" target=\"_blank\">{{\n\t\t\t\t\t\tlocale.baseText('settings.usageAndPlan.button.plans')\n\t\t\t\t\t}}</a>\n\t\t\t\t</n8n-button>\n\t\t\t</div>\n\n\t\t\t<el-dialog\n\t\t\t\tv-model=\"activationKeyModal\"\n\t\t\t\twidth=\"480px\"\n\t\t\t\ttop=\"0\"\n\t\t\t\t:title=\"locale.baseText('settings.usageAndPlan.dialog.activation.title')\"\n\t\t\t\t:modal-class=\"$style.center\"\n\t\t\t\t@closed=\"onDialogClosed\"\n\t\t\t\t@opened=\"onDialogOpened\"\n\t\t\t>\n\t\t\t\t<template #default>\n\t\t\t\t\t<n8n-input\n\t\t\t\t\t\tref=\"activationKeyInput\"\n\t\t\t\t\t\tv-model=\"activationKey\"\n\t\t\t\t\t\t:placeholder=\"locale.baseText('settings.usageAndPlan.dialog.activation.label')\"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\t\t\t\t<template #footer>\n\t\t\t\t\t<n8n-button type=\"secondary\" @click=\"activationKeyModal = false\">\n\t\t\t\t\t\t{{ locale.baseText('settings.usageAndPlan.dialog.activation.cancel') }}\n\t\t\t\t\t</n8n-button>\n\t\t\t\t\t<n8n-button @click=\"onLicenseActivation\">\n\t\t\t\t\t\t{{ locale.baseText('settings.usageAndPlan.dialog.activation.activate') }}\n\t\t\t\t\t</n8n-button>\n\t\t\t\t</template>\n\t\t\t</el-dialog>\n\t\t</div>\n\t</div>\n</template>\n\n<style lang=\"scss\" module>\n@import '@/styles/variables';\n\n.center > div {\n\tjustify-content: center;\n}\n\n.actionBox {\n\tmargin: var(--spacing-2xl) 0 0;\n}\n\n.spacedFlex {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n}\n\n.title {\n\tdisplay: block;\n\tpadding: var(--spacing-2xl) 0 var(--spacing-m);\n}\n\n.quota {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\theight: 54px;\n\tpadding: 0 var(--spacing-s);\n\tmargin: 0 0 var(--spacing-xs);\n\tbackground: var(--color-background-xlight);\n\tborder-radius: var(--border-radius-large);\n\tborder: 1px solid var(--color-foreground-base);\n\twhite-space: nowrap;\n\n\t.count {\n\t\ttext-transform: lowercase;\n\t\tfont-size: var(--font-size-s);\n\t}\n}\n\n.buttons {\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\tpadding: var(--spacing-xl) 0 0;\n\n\tbutton {\n\t\tmargin-left: var(--spacing-xs);\n\n\t\ta {\n\t\t\tdisplay: inline-block;\n\t\t\tcolor: inherit;\n\t\t\ttext-decoration: none;\n\t\t\tpadding: var(--spacing-xs) var(--spacing-m);\n\t\t\tmargin: calc(var(--spacing-xs) * -1) calc(var(--spacing-m) * -1);\n\t\t}\n\t}\n}\n\n.chart {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tflex-grow: 1;\n}\n\n.chartLine {\n\tdisplay: block;\n\theight: 10px;\n\twidth: 100%;\n\tmax-width: 260px;\n\tmargin: 0 var(--spacing-m);\n\tborder-radius: 10px;\n\tbackground: var(--color-background-base);\n}\n\n.chartBar {\n\tfloat: left;\n\theight: 100%;\n\tmax-width: 100%;\n\tbackground: var(--color-secondary);\n\tborder-radius: 10px;\n\ttransition: width 0.2s $ease-out-expo;\n}\n\ndiv[class*='info'] > span > span:last-child {\n\tline-height: 1.4;\n\tpadding: 0 0 0 var(--spacing-4xs);\n}\n</style>\n\n<style lang=\"scss\" scoped>\n.settings-usage-and-plan {\n\t:deep(.el-dialog__wrapper) {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\t.el-dialog {\n\t\t\tmargin: 0;\n\n\t\t\t.el-dialog__footer {\n\t\t\t\tbutton {\n\t\t\t\t\tmargin-left: var(--spacing-xs);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n"],"names":["usageStore","useUsageStore","route","useRoute","router","useRouter","uiStore","useUIStore","toast","useToast","queryParamCallback","ref","viewPlansUrl","computed","managePlanUrl","activationKeyModal","activationKey","activationKeyInput","canUserActivateLicense","hasPermission","showActivationSuccess","locale","showActivationError","error","onLicenseActivation","onMounted","sendUsageTelemetry","action","telemetryPayload","telemetry","onAddActivationKey","onViewPlans","onManagePlan","onDialogClosed","onDialogOpened","_a","openPricingPage","N8N_PRICING_PAGE_URL"],"mappings":"o4CAYA,MAAMA,EAAaC,KACbC,EAAQC,IACRC,EAASC,IACTC,EAAUC,KACVC,EAAQC,KAERC,EAAqBC,EAC1B,YAAY,mBAAmB,GAAG,OAAO,SAAS,MAAM,GAAG,OAAO,SAAS,QAAQ,EAAE,CAAC,EAAA,EAEjFC,EAAeC,EACpB,IAAM,GAAGb,EAAW,YAAY,IAAIU,EAAmB,KAAK,oBAAA,EAEvDI,EAAgBD,EAAS,IAAM,GAAGb,EAAW,aAAa,IAAIU,EAAmB,KAAK,EAAE,EACxFK,EAAqBJ,EAAI,EAAK,EAC9BK,EAAgBL,EAAI,EAAE,EACtBM,EAAqBN,EAA6B,IAAI,EAEtDO,EAAyBL,EAAS,IACvCM,GAAc,CAAC,MAAM,EAAG,CAAE,KAAM,CAAE,MAAO,gBAAiB,EAAG,CAAA,EAGxDC,EAAwB,IAAM,CACnCZ,EAAM,YAAY,CACjB,KAAM,UACN,MAAOa,EAAO,SAAS,wDAAwD,EAC/E,QAASA,EAAO,SAAS,2DAA4D,CACpF,YAAa,CACZ,KAAMrB,EAAW,SACjB,KAAMA,EAAW,OACdqB,EAAO,SAAS,4BAA4B,EAC5CA,EAAO,SAAS,+BAA+B,CACnD,CAAA,CACA,CAAA,CACD,CAAA,EAGIC,EAAuBC,GAAiB,CACvCf,EAAA,UACLe,EACAF,EAAO,SAAS,sDAAsD,EACtEE,EAAM,OAAA,CACP,EAGKC,EAAsB,SAAY,CACnC,GAAA,CACG,MAAAxB,EAAW,gBAAgBgB,EAAc,KAAK,EACpDD,EAAmB,MAAQ,GACLK,UACdG,EAAO,CACfD,EAAoBC,CAAK,CAC1B,CAAA,EAGDE,EAAU,SAAY,CACrB,GAAI,CAAAzB,EAAW,UAKX,IADJA,EAAW,WAAW,EAAI,EACtBE,EAAM,MAAM,IACX,GAAA,CACH,MAAMF,EAAW,gBAAgBE,EAAM,MAAM,GAAa,EAC1D,MAAME,EAAO,QAAQ,CAAE,MAAO,CAAA,CAAI,CAAA,EACZgB,IACtBpB,EAAW,WAAW,EAAK,EAC3B,aACQuB,EAAO,CACfD,EAAoBC,CAAK,CAC1B,CAEG,GAAA,CACC,CAACrB,EAAM,MAAM,KAAOgB,EAAuB,MAC9C,MAAMlB,EAAW,gCAEjB,MAAMA,EAAW,iBAElBA,EAAW,WAAW,EAAK,QACnBuB,EAAO,CACVA,EAAM,OACJA,EAAA,KAAOF,EAAO,SAAS,6BAA6B,GAE3Db,EAAM,UAAUe,EAAOA,EAAM,KAAMA,EAAM,OAAO,CACjD,EAAA,CACA,EAEK,MAAAG,EAAsBC,GAAqC,CAChE,MAAMC,EAAmB5B,EAAW,iBACpC4B,EAAiB,OAASD,EAChBE,GAAA,MAAM,oCAAqCD,CAAgB,CAAA,EAGhEE,EAAqB,IAAM,CAChCf,EAAmB,MAAQ,GAC3BW,EAAmB,oBAAoB,CAAA,EAGlCK,EAAc,IAAM,CACpBzB,EAAQ,YAAY,aAAc,MAAM,EAC7CoB,EAAmB,YAAY,CAAA,EAG1BM,EAAe,IAAM,CAC1BN,EAAmB,aAAa,CAAA,EAG3BO,EAAiB,IAAM,CAC5BjB,EAAc,MAAQ,EAAA,EAGjBkB,EAAiB,IAAM,QAC5BC,EAAAlB,EAAmB,QAAnB,MAAAkB,EAA0B,OAAM,EAG3BC,EAAkB,IAAM,CAC7BV,EAAmB,oBAAoB,EAChC,OAAA,KAAKW,GAAsB,QAAQ,CAAA"}
@@ -1,2 +1,2 @@
1
- import{m as M}from"./pinia-Dh4cxKZ0.js";import{ae as E,u as O,cA as R,cB as A,a as B,i as I,b as P,E as S,r as d,cC as h,V,cD as z}from"./index-CY2ZfL2U.js";import{G as D,l as n,m as l,p,U as a,O as i,S as v,T as b,I as g,R as u,M as m,F as N,a7 as Q,ag as t}from"./vendor-CUQSof8H.js";import{_ as q}from"./n8n-DT_bOwuZ.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BiGWdRh4.js";import"./lodash-es-BFdF4Er8.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-C0ZgbPvs.js";import"./vue-i18n-CG6eDDlD.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-wY6jAr7b.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-DOxvr88t.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const x=D({name:"SettingsUsersView",setup(){return{clipboard:E(),...O()}},computed:{...M(P,I,B,A,R),isSharingEnabled(){return this.settingsStore.isEnterpriseFeatureEnabled(S.Sharing)},showUMSetupWarning(){return d(["defaultUser"])},usersListActions(){return[{label:this.$locale.baseText("settings.users.actions.copyInviteLink"),value:"copyInviteLink",guard:e=>this.settingsStore.isBelowUserQuota&&!e.firstName&&!!e.inviteAcceptUrl},{label:this.$locale.baseText("settings.users.actions.reinvite"),value:"reinvite",guard:e=>this.settingsStore.isBelowUserQuota&&!e.firstName&&this.settingsStore.isSmtpSetup},{label:this.$locale.baseText("settings.users.actions.delete"),value:"delete",guard:e=>d(["rbac"],{rbac:{scope:"user:delete"}})&&e.id!==this.usersStore.currentUserId},{label:this.$locale.baseText("settings.users.actions.copyPasswordResetLink"),value:"copyPasswordResetLink",guard:e=>d(["rbac"],{rbac:{scope:"user:resetPassword"}})&&this.settingsStore.isBelowUserQuota&&!e.isPendingUser&&e.id!==this.usersStore.currentUserId},{label:this.$locale.baseText("settings.users.actions.allowSSOManualLogin"),value:"allowSSOManualLogin",guard:e=>{var s;return this.settingsStore.isSamlLoginEnabled&&!((s=e.settings)!=null&&s.allowSSOManualLogin)}},{label:this.$locale.baseText("settings.users.actions.disallowSSOManualLogin"),value:"disallowSSOManualLogin",guard:e=>{var s;return this.settingsStore.isSamlLoginEnabled&&((s=e.settings)==null?void 0:s.allowSSOManualLogin)===!0}}]},isAdvancedPermissionsEnabled(){return this.settingsStore.isEnterpriseFeatureEnabled(S.AdvancedPermissions)},userRoles(){return[{value:h.Member,label:this.$locale.baseText("auth.roles.member")},{value:h.Admin,label:this.$locale.baseText("auth.roles.admin"),disabled:!this.isAdvancedPermissionsEnabled}]},canUpdateRole(){return d(["rbac"],{rbac:{scope:["user:update","user:changeRole"]}})}},async mounted(){this.showUMSetupWarning||await this.usersStore.fetchUsers()},methods:{async onUsersListAction({action:e,userId:s}){switch(e){case"delete":await this.onDelete(s);break;case"reinvite":await this.onReinvite(s);break;case"copyInviteLink":await this.onCopyInviteLink(s);break;case"copyPasswordResetLink":await this.onCopyPasswordResetLink(s);break;case"allowSSOManualLogin":await this.onAllowSSOManualLogin(s);break;case"disallowSSOManualLogin":await this.onDisallowSSOManualLogin(s);break}},redirectToSetup(){this.$router.push({name:V.SETUP})},onInvite(){this.uiStore.openModal(z)},async onDelete(e){this.usersStore.getUserById(e)&&this.uiStore.openDeleteUserModal(e)},async onReinvite(e){const s=this.usersStore.getUserById(e);if(s!=null&&s.email&&(s!=null&&s.role)){if(!["global:admin","global:member"].includes(s.role))throw new Error("Invalid role name on reinvite");try{await this.usersStore.reinviteUser({email:s.email,role:s.role}),this.showToast({type:"success",title:this.$locale.baseText("settings.users.inviteResent"),message:this.$locale.baseText("settings.users.emailSentTo",{interpolate:{email:s.email??""}})})}catch(c){this.showError(c,this.$locale.baseText("settings.users.userReinviteError"))}}},async onCopyInviteLink(e){const s=this.usersStore.getUserById(e);s!=null&&s.inviteAcceptUrl&&(this.clipboard.copy(s.inviteAcceptUrl),this.showToast({type:"success",title:this.$locale.baseText("settings.users.inviteUrlCreated"),message:this.$locale.baseText("settings.users.inviteUrlCreated.message")}))},async onCopyPasswordResetLink(e){const s=this.usersStore.getUserById(e);if(s){const c=await this.usersStore.getUserPasswordResetLink(s);this.clipboard.copy(c.link),this.showToast({type:"success",title:this.$locale.baseText("settings.users.passwordResetUrlCreated"),message:this.$locale.baseText("settings.users.passwordResetUrlCreated.message")})}},async onAllowSSOManualLogin(e){const s=this.usersStore.getUserById(e);s&&(s.settings||(s.settings={}),s.settings.allowSSOManualLogin=!0,await this.usersStore.updateOtherUserSettings(e,s.settings),this.showToast({type:"success",title:this.$locale.baseText("settings.users.allowSSOManualLogin"),message:this.$locale.baseText("settings.users.allowSSOManualLogin.message")}))},async onDisallowSSOManualLogin(e){const s=this.usersStore.getUserById(e);s!=null&&s.settings&&(s.settings.allowSSOManualLogin=!1,await this.usersStore.updateOtherUserSettings(e,s.settings),this.showToast({type:"success",title:this.$locale.baseText("settings.users.disallowSSOManualLogin"),message:this.$locale.baseText("settings.users.disallowSSOManualLogin.message")}))},goToUpgrade(){this.uiStore.goToUpgrade("settings-users","upgrade-users")},goToUpgradeAdvancedPermissions(){this.uiStore.goToUpgrade("settings-users","upgrade-advanced-permissions")},async onRoleChange(e,s){await this.usersStore.updateGlobalRole({id:e.id,newRoleName:s})}}}),F="_container_1qzsb_1",K="_usersContainer_1qzsb_9",W="_buttonContainer_1qzsb_13",G="_setupInfoContainer_1qzsb_19",Y="_alert_1qzsb_23",j={container:F,usersContainer:K,buttonContainer:W,setupInfoContainer:G,alert:Y};function H(e,s,c,X,Z,ee){const w=t("n8n-heading"),U=t("n8n-button"),y=t("n8n-tooltip"),T=t("n8n-action-box"),L=t("n8n-link"),k=t("i18n-t"),$=t("n8n-notice"),C=t("n8n-option"),_=t("n8n-select"),f=t("n8n-users-list");return n(),l("div",{class:g(e.$style.container)},[p("div",null,[a(w,{size:"2xlarge"},{default:i(()=>[v(b(e.$locale.baseText("settings.users")),1)]),_:1}),e.showUMSetupWarning?u("",!0):(n(),l("div",{key:0,class:g(e.$style.buttonContainer)},[a(y,{disabled:!e.ssoStore.isSamlLoginEnabled},{content:i(()=>[p("span",null,b(e.$locale.baseText("settings.users.invite.tooltip")),1)]),default:i(()=>[p("div",null,[a(U,{disabled:e.ssoStore.isSamlLoginEnabled||!e.settingsStore.isBelowUserQuota,label:e.$locale.baseText("settings.users.invite"),size:"large","data-test-id":"settings-users-invite-button",onClick:e.onInvite},null,8,["disabled","label","onClick"])])]),_:1},8,["disabled"])],2))]),e.settingsStore.isBelowUserQuota?u("",!0):(n(),l("div",{key:0,class:g(e.$style.setupInfoContainer)},[a(T,{heading:e.$locale.baseText(e.uiStore.contextBasedTranslationKeys.users.settings.unavailable.title),description:e.$locale.baseText(e.uiStore.contextBasedTranslationKeys.users.settings.unavailable.description),"button-text":e.$locale.baseText(e.uiStore.contextBasedTranslationKeys.users.settings.unavailable.button),"onClick:button":e.goToUpgrade},null,8,["heading","description","button-text","onClick:button"])],2)),e.isAdvancedPermissionsEnabled?u("",!0):(n(),m($,{key:1},{default:i(()=>[a(k,{keypath:"settings.users.advancedPermissions.warning"},{link:i(()=>[a(L,{size:"small",onClick:e.goToUpgradeAdvancedPermissions},{default:i(()=>[v(b(e.$locale.baseText("settings.users.advancedPermissions.warning.link")),1)]),_:1},8,["onClick"])]),_:1})]),_:1})),e.settingsStore.isBelowUserQuota||e.usersStore.allUsers.length>1?(n(),l("div",{key:2,class:g(e.$style.usersContainer)},[a(f,{actions:e.usersListActions,users:e.usersStore.allUsers,"current-user-id":e.usersStore.currentUserId,"is-saml-login-enabled":e.ssoStore.isSamlLoginEnabled,onAction:e.onUsersListAction},{actions:i(({user:r})=>[r.id!==e.usersStore.currentUserId?(n(),m(_,{key:0,"model-value":(r==null?void 0:r.role)||"global:member",disabled:!e.canUpdateRole,"data-test-id":"user-role-select","onUpdate:modelValue":o=>e.onRoleChange(r,o)},{default:i(()=>[(n(!0),l(N,null,Q(e.userRoles,o=>(n(),m(C,{key:o.value,value:o.value,label:o.label,disabled:o.disabled},null,8,["value","label","disabled"]))),128))]),_:2},1032,["model-value","disabled","onUpdate:modelValue"])):u("",!0)]),_:1},8,["actions","users","current-user-id","is-saml-login-enabled","onAction"])],2)):u("",!0)],2)}const J={$style:j},Ee=q(x,[["render",H],["__cssModules",J]]);export{Ee as default};
2
- //# sourceMappingURL=SettingsUsersView-CY4kSRaG.js.map
1
+ import{m as M}from"./pinia-Dh4cxKZ0.js";import{ae as E,u as O,cA as R,cB as A,a as B,i as I,b as P,E as S,r as d,cC as h,V,cD as z}from"./index-BQ6Z7VRj.js";import{G as D,l as n,m as l,p,U as a,O as i,S as v,T as b,I as g,R as u,M as m,F as N,a7 as Q,ag as t}from"./vendor-CUQSof8H.js";import{_ as q}from"./n8n-DT_bOwuZ.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BiGWdRh4.js";import"./lodash-es-BFdF4Er8.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-C0ZgbPvs.js";import"./vue-i18n-CG6eDDlD.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-wY6jAr7b.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-DOxvr88t.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const x=D({name:"SettingsUsersView",setup(){return{clipboard:E(),...O()}},computed:{...M(P,I,B,A,R),isSharingEnabled(){return this.settingsStore.isEnterpriseFeatureEnabled(S.Sharing)},showUMSetupWarning(){return d(["defaultUser"])},usersListActions(){return[{label:this.$locale.baseText("settings.users.actions.copyInviteLink"),value:"copyInviteLink",guard:e=>this.settingsStore.isBelowUserQuota&&!e.firstName&&!!e.inviteAcceptUrl},{label:this.$locale.baseText("settings.users.actions.reinvite"),value:"reinvite",guard:e=>this.settingsStore.isBelowUserQuota&&!e.firstName&&this.settingsStore.isSmtpSetup},{label:this.$locale.baseText("settings.users.actions.delete"),value:"delete",guard:e=>d(["rbac"],{rbac:{scope:"user:delete"}})&&e.id!==this.usersStore.currentUserId},{label:this.$locale.baseText("settings.users.actions.copyPasswordResetLink"),value:"copyPasswordResetLink",guard:e=>d(["rbac"],{rbac:{scope:"user:resetPassword"}})&&this.settingsStore.isBelowUserQuota&&!e.isPendingUser&&e.id!==this.usersStore.currentUserId},{label:this.$locale.baseText("settings.users.actions.allowSSOManualLogin"),value:"allowSSOManualLogin",guard:e=>{var s;return this.settingsStore.isSamlLoginEnabled&&!((s=e.settings)!=null&&s.allowSSOManualLogin)}},{label:this.$locale.baseText("settings.users.actions.disallowSSOManualLogin"),value:"disallowSSOManualLogin",guard:e=>{var s;return this.settingsStore.isSamlLoginEnabled&&((s=e.settings)==null?void 0:s.allowSSOManualLogin)===!0}}]},isAdvancedPermissionsEnabled(){return this.settingsStore.isEnterpriseFeatureEnabled(S.AdvancedPermissions)},userRoles(){return[{value:h.Member,label:this.$locale.baseText("auth.roles.member")},{value:h.Admin,label:this.$locale.baseText("auth.roles.admin"),disabled:!this.isAdvancedPermissionsEnabled}]},canUpdateRole(){return d(["rbac"],{rbac:{scope:["user:update","user:changeRole"]}})}},async mounted(){this.showUMSetupWarning||await this.usersStore.fetchUsers()},methods:{async onUsersListAction({action:e,userId:s}){switch(e){case"delete":await this.onDelete(s);break;case"reinvite":await this.onReinvite(s);break;case"copyInviteLink":await this.onCopyInviteLink(s);break;case"copyPasswordResetLink":await this.onCopyPasswordResetLink(s);break;case"allowSSOManualLogin":await this.onAllowSSOManualLogin(s);break;case"disallowSSOManualLogin":await this.onDisallowSSOManualLogin(s);break}},redirectToSetup(){this.$router.push({name:V.SETUP})},onInvite(){this.uiStore.openModal(z)},async onDelete(e){this.usersStore.getUserById(e)&&this.uiStore.openDeleteUserModal(e)},async onReinvite(e){const s=this.usersStore.getUserById(e);if(s!=null&&s.email&&(s!=null&&s.role)){if(!["global:admin","global:member"].includes(s.role))throw new Error("Invalid role name on reinvite");try{await this.usersStore.reinviteUser({email:s.email,role:s.role}),this.showToast({type:"success",title:this.$locale.baseText("settings.users.inviteResent"),message:this.$locale.baseText("settings.users.emailSentTo",{interpolate:{email:s.email??""}})})}catch(c){this.showError(c,this.$locale.baseText("settings.users.userReinviteError"))}}},async onCopyInviteLink(e){const s=this.usersStore.getUserById(e);s!=null&&s.inviteAcceptUrl&&(this.clipboard.copy(s.inviteAcceptUrl),this.showToast({type:"success",title:this.$locale.baseText("settings.users.inviteUrlCreated"),message:this.$locale.baseText("settings.users.inviteUrlCreated.message")}))},async onCopyPasswordResetLink(e){const s=this.usersStore.getUserById(e);if(s){const c=await this.usersStore.getUserPasswordResetLink(s);this.clipboard.copy(c.link),this.showToast({type:"success",title:this.$locale.baseText("settings.users.passwordResetUrlCreated"),message:this.$locale.baseText("settings.users.passwordResetUrlCreated.message")})}},async onAllowSSOManualLogin(e){const s=this.usersStore.getUserById(e);s&&(s.settings||(s.settings={}),s.settings.allowSSOManualLogin=!0,await this.usersStore.updateOtherUserSettings(e,s.settings),this.showToast({type:"success",title:this.$locale.baseText("settings.users.allowSSOManualLogin"),message:this.$locale.baseText("settings.users.allowSSOManualLogin.message")}))},async onDisallowSSOManualLogin(e){const s=this.usersStore.getUserById(e);s!=null&&s.settings&&(s.settings.allowSSOManualLogin=!1,await this.usersStore.updateOtherUserSettings(e,s.settings),this.showToast({type:"success",title:this.$locale.baseText("settings.users.disallowSSOManualLogin"),message:this.$locale.baseText("settings.users.disallowSSOManualLogin.message")}))},goToUpgrade(){this.uiStore.goToUpgrade("settings-users","upgrade-users")},goToUpgradeAdvancedPermissions(){this.uiStore.goToUpgrade("settings-users","upgrade-advanced-permissions")},async onRoleChange(e,s){await this.usersStore.updateGlobalRole({id:e.id,newRoleName:s})}}}),F="_container_1qzsb_1",K="_usersContainer_1qzsb_9",W="_buttonContainer_1qzsb_13",G="_setupInfoContainer_1qzsb_19",Y="_alert_1qzsb_23",j={container:F,usersContainer:K,buttonContainer:W,setupInfoContainer:G,alert:Y};function H(e,s,c,X,Z,ee){const w=t("n8n-heading"),U=t("n8n-button"),y=t("n8n-tooltip"),T=t("n8n-action-box"),L=t("n8n-link"),k=t("i18n-t"),$=t("n8n-notice"),C=t("n8n-option"),_=t("n8n-select"),f=t("n8n-users-list");return n(),l("div",{class:g(e.$style.container)},[p("div",null,[a(w,{size:"2xlarge"},{default:i(()=>[v(b(e.$locale.baseText("settings.users")),1)]),_:1}),e.showUMSetupWarning?u("",!0):(n(),l("div",{key:0,class:g(e.$style.buttonContainer)},[a(y,{disabled:!e.ssoStore.isSamlLoginEnabled},{content:i(()=>[p("span",null,b(e.$locale.baseText("settings.users.invite.tooltip")),1)]),default:i(()=>[p("div",null,[a(U,{disabled:e.ssoStore.isSamlLoginEnabled||!e.settingsStore.isBelowUserQuota,label:e.$locale.baseText("settings.users.invite"),size:"large","data-test-id":"settings-users-invite-button",onClick:e.onInvite},null,8,["disabled","label","onClick"])])]),_:1},8,["disabled"])],2))]),e.settingsStore.isBelowUserQuota?u("",!0):(n(),l("div",{key:0,class:g(e.$style.setupInfoContainer)},[a(T,{heading:e.$locale.baseText(e.uiStore.contextBasedTranslationKeys.users.settings.unavailable.title),description:e.$locale.baseText(e.uiStore.contextBasedTranslationKeys.users.settings.unavailable.description),"button-text":e.$locale.baseText(e.uiStore.contextBasedTranslationKeys.users.settings.unavailable.button),"onClick:button":e.goToUpgrade},null,8,["heading","description","button-text","onClick:button"])],2)),e.isAdvancedPermissionsEnabled?u("",!0):(n(),m($,{key:1},{default:i(()=>[a(k,{keypath:"settings.users.advancedPermissions.warning"},{link:i(()=>[a(L,{size:"small",onClick:e.goToUpgradeAdvancedPermissions},{default:i(()=>[v(b(e.$locale.baseText("settings.users.advancedPermissions.warning.link")),1)]),_:1},8,["onClick"])]),_:1})]),_:1})),e.settingsStore.isBelowUserQuota||e.usersStore.allUsers.length>1?(n(),l("div",{key:2,class:g(e.$style.usersContainer)},[a(f,{actions:e.usersListActions,users:e.usersStore.allUsers,"current-user-id":e.usersStore.currentUserId,"is-saml-login-enabled":e.ssoStore.isSamlLoginEnabled,onAction:e.onUsersListAction},{actions:i(({user:r})=>[r.id!==e.usersStore.currentUserId?(n(),m(_,{key:0,"model-value":(r==null?void 0:r.role)||"global:member",disabled:!e.canUpdateRole,"data-test-id":"user-role-select","onUpdate:modelValue":o=>e.onRoleChange(r,o)},{default:i(()=>[(n(!0),l(N,null,Q(e.userRoles,o=>(n(),m(C,{key:o.value,value:o.value,label:o.label,disabled:o.disabled},null,8,["value","label","disabled"]))),128))]),_:2},1032,["model-value","disabled","onUpdate:modelValue"])):u("",!0)]),_:1},8,["actions","users","current-user-id","is-saml-login-enabled","onAction"])],2)):u("",!0)],2)}const J={$style:j},Ee=q(x,[["render",H],["__cssModules",J]]);export{Ee as default};
2
+ //# sourceMappingURL=SettingsUsersView-Tx1-g18F.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsUsersView-CY4kSRaG.js","sources":["../../src/views/SettingsUsersView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.container\">\n\t\t<div>\n\t\t\t<n8n-heading size=\"2xlarge\">{{ $locale.baseText('settings.users') }}</n8n-heading>\n\t\t\t<div v-if=\"!showUMSetupWarning\" :class=\"$style.buttonContainer\">\n\t\t\t\t<n8n-tooltip :disabled=\"!ssoStore.isSamlLoginEnabled\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<span> {{ $locale.baseText('settings.users.invite.tooltip') }} </span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<n8n-button\n\t\t\t\t\t\t\t:disabled=\"ssoStore.isSamlLoginEnabled || !settingsStore.isBelowUserQuota\"\n\t\t\t\t\t\t\t:label=\"$locale.baseText('settings.users.invite')\"\n\t\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t\tdata-test-id=\"settings-users-invite-button\"\n\t\t\t\t\t\t\t@click=\"onInvite\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</n8n-tooltip>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"!settingsStore.isBelowUserQuota\" :class=\"$style.setupInfoContainer\">\n\t\t\t<n8n-action-box\n\t\t\t\t:heading=\"\n\t\t\t\t\t$locale.baseText(uiStore.contextBasedTranslationKeys.users.settings.unavailable.title)\n\t\t\t\t\"\n\t\t\t\t:description=\"\n\t\t\t\t\t$locale.baseText(\n\t\t\t\t\t\tuiStore.contextBasedTranslationKeys.users.settings.unavailable.description,\n\t\t\t\t\t)\n\t\t\t\t\"\n\t\t\t\t:button-text=\"\n\t\t\t\t\t$locale.baseText(uiStore.contextBasedTranslationKeys.users.settings.unavailable.button)\n\t\t\t\t\"\n\t\t\t\t@click:button=\"goToUpgrade\"\n\t\t\t/>\n\t\t</div>\n\t\t<n8n-notice v-if=\"!isAdvancedPermissionsEnabled\">\n\t\t\t<i18n-t keypath=\"settings.users.advancedPermissions.warning\">\n\t\t\t\t<template #link>\n\t\t\t\t\t<n8n-link size=\"small\" @click=\"goToUpgradeAdvancedPermissions\">\n\t\t\t\t\t\t{{ $locale.baseText('settings.users.advancedPermissions.warning.link') }}\n\t\t\t\t\t</n8n-link>\n\t\t\t\t</template>\n\t\t\t</i18n-t>\n\t\t</n8n-notice>\n\t\t<!-- If there's more than 1 user it means the account quota was more than 1 in the past. So we need to allow instance owner to be able to delete users and transfer workflows.\n\t\t-->\n\t\t<div\n\t\t\tv-if=\"settingsStore.isBelowUserQuota || usersStore.allUsers.length > 1\"\n\t\t\t:class=\"$style.usersContainer\"\n\t\t>\n\t\t\t<n8n-users-list\n\t\t\t\t:actions=\"usersListActions\"\n\t\t\t\t:users=\"usersStore.allUsers\"\n\t\t\t\t:current-user-id=\"usersStore.currentUserId\"\n\t\t\t\t:is-saml-login-enabled=\"ssoStore.isSamlLoginEnabled\"\n\t\t\t\t@action=\"onUsersListAction\"\n\t\t\t>\n\t\t\t\t<template #actions=\"{ user }\">\n\t\t\t\t\t<n8n-select\n\t\t\t\t\t\tv-if=\"user.id !== usersStore.currentUserId\"\n\t\t\t\t\t\t:model-value=\"user?.role || 'global:member'\"\n\t\t\t\t\t\t:disabled=\"!canUpdateRole\"\n\t\t\t\t\t\tdata-test-id=\"user-role-select\"\n\t\t\t\t\t\t@update:model-value=\"onRoleChange(user, $event)\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<n8n-option\n\t\t\t\t\t\t\tv-for=\"role in userRoles\"\n\t\t\t\t\t\t\t:key=\"role.value\"\n\t\t\t\t\t\t\t:value=\"role.value\"\n\t\t\t\t\t\t\t:label=\"role.label\"\n\t\t\t\t\t\t\t:disabled=\"role.disabled\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</n8n-select>\n\t\t\t\t</template>\n\t\t\t</n8n-users-list>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\nimport { EnterpriseEditionFeature, INVITE_USER_MODAL_KEY, VIEWS, ROLE } from '@/constants';\n\nimport type { IUser, IUserListAction, InvitableRoleName } from '@/Interface';\nimport { useToast } from '@/composables/useToast';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useUsersStore } from '@/stores/users.store';\nimport { useUsageStore } from '@/stores/usage.store';\nimport { useSSOStore } from '@/stores/sso.store';\nimport { hasPermission } from '@/rbac/permissions';\nimport { useClipboard } from '@/composables/useClipboard';\nimport type { UpdateGlobalRolePayload } from '@/api/users';\n\nexport default defineComponent({\n\tname: 'SettingsUsersView',\n\tsetup() {\n\t\tconst clipboard = useClipboard();\n\n\t\treturn {\n\t\t\tclipboard,\n\t\t\t...useToast(),\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useSettingsStore, useUIStore, useUsersStore, useUsageStore, useSSOStore),\n\t\tisSharingEnabled() {\n\t\t\treturn this.settingsStore.isEnterpriseFeatureEnabled(EnterpriseEditionFeature.Sharing);\n\t\t},\n\t\tshowUMSetupWarning() {\n\t\t\treturn hasPermission(['defaultUser']);\n\t\t},\n\t\tusersListActions(): IUserListAction[] {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.users.actions.copyInviteLink'),\n\t\t\t\t\tvalue: 'copyInviteLink',\n\t\t\t\t\tguard: (user) =>\n\t\t\t\t\t\tthis.settingsStore.isBelowUserQuota && !user.firstName && !!user.inviteAcceptUrl,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.users.actions.reinvite'),\n\t\t\t\t\tvalue: 'reinvite',\n\t\t\t\t\tguard: (user) =>\n\t\t\t\t\t\tthis.settingsStore.isBelowUserQuota &&\n\t\t\t\t\t\t!user.firstName &&\n\t\t\t\t\t\tthis.settingsStore.isSmtpSetup,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.users.actions.delete'),\n\t\t\t\t\tvalue: 'delete',\n\t\t\t\t\tguard: (user) =>\n\t\t\t\t\t\thasPermission(['rbac'], { rbac: { scope: 'user:delete' } }) &&\n\t\t\t\t\t\tuser.id !== this.usersStore.currentUserId,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.users.actions.copyPasswordResetLink'),\n\t\t\t\t\tvalue: 'copyPasswordResetLink',\n\t\t\t\t\tguard: (user) =>\n\t\t\t\t\t\thasPermission(['rbac'], { rbac: { scope: 'user:resetPassword' } }) &&\n\t\t\t\t\t\tthis.settingsStore.isBelowUserQuota &&\n\t\t\t\t\t\t!user.isPendingUser &&\n\t\t\t\t\t\tuser.id !== this.usersStore.currentUserId,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.users.actions.allowSSOManualLogin'),\n\t\t\t\t\tvalue: 'allowSSOManualLogin',\n\t\t\t\t\tguard: (user) =>\n\t\t\t\t\t\tthis.settingsStore.isSamlLoginEnabled && !user.settings?.allowSSOManualLogin,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.users.actions.disallowSSOManualLogin'),\n\t\t\t\t\tvalue: 'disallowSSOManualLogin',\n\t\t\t\t\tguard: (user) =>\n\t\t\t\t\t\tthis.settingsStore.isSamlLoginEnabled && user.settings?.allowSSOManualLogin === true,\n\t\t\t\t},\n\t\t\t];\n\t\t},\n\t\tisAdvancedPermissionsEnabled(): boolean {\n\t\t\treturn this.settingsStore.isEnterpriseFeatureEnabled(\n\t\t\t\tEnterpriseEditionFeature.AdvancedPermissions,\n\t\t\t);\n\t\t},\n\t\tuserRoles(): Array<{ value: IRole; label: string; disabled?: boolean }> {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tvalue: ROLE.Member,\n\t\t\t\t\tlabel: this.$locale.baseText('auth.roles.member'),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: ROLE.Admin,\n\t\t\t\t\tlabel: this.$locale.baseText('auth.roles.admin'),\n\t\t\t\t\tdisabled: !this.isAdvancedPermissionsEnabled,\n\t\t\t\t},\n\t\t\t];\n\t\t},\n\t\tcanUpdateRole(): boolean {\n\t\t\treturn hasPermission(['rbac'], { rbac: { scope: ['user:update', 'user:changeRole'] } });\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (!this.showUMSetupWarning) {\n\t\t\tawait this.usersStore.fetchUsers();\n\t\t}\n\t},\n\tmethods: {\n\t\tasync onUsersListAction({ action, userId }: { action: string; userId: string }) {\n\t\t\tswitch (action) {\n\t\t\t\tcase 'delete':\n\t\t\t\t\tawait this.onDelete(userId);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'reinvite':\n\t\t\t\t\tawait this.onReinvite(userId);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'copyInviteLink':\n\t\t\t\t\tawait this.onCopyInviteLink(userId);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'copyPasswordResetLink':\n\t\t\t\t\tawait this.onCopyPasswordResetLink(userId);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'allowSSOManualLogin':\n\t\t\t\t\tawait this.onAllowSSOManualLogin(userId);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'disallowSSOManualLogin':\n\t\t\t\t\tawait this.onDisallowSSOManualLogin(userId);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\tredirectToSetup() {\n\t\t\tvoid this.$router.push({ name: VIEWS.SETUP });\n\t\t},\n\t\tonInvite() {\n\t\t\tthis.uiStore.openModal(INVITE_USER_MODAL_KEY);\n\t\t},\n\t\tasync onDelete(userId: string) {\n\t\t\tconst user = this.usersStore.getUserById(userId);\n\t\t\tif (user) {\n\t\t\t\tthis.uiStore.openDeleteUserModal(userId);\n\t\t\t}\n\t\t},\n\t\tasync onReinvite(userId: string) {\n\t\t\tconst user = this.usersStore.getUserById(userId);\n\t\t\tif (user?.email && user?.role) {\n\t\t\t\tif (!['global:admin', 'global:member'].includes(user.role)) {\n\t\t\t\t\tthrow new Error('Invalid role name on reinvite');\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tawait this.usersStore.reinviteUser({\n\t\t\t\t\t\temail: user.email,\n\t\t\t\t\t\trole: user.role as InvitableRoleName,\n\t\t\t\t\t});\n\t\t\t\t\tthis.showToast({\n\t\t\t\t\t\ttype: 'success',\n\t\t\t\t\t\ttitle: this.$locale.baseText('settings.users.inviteResent'),\n\t\t\t\t\t\tmessage: this.$locale.baseText('settings.users.emailSentTo', {\n\t\t\t\t\t\t\tinterpolate: { email: user.email ?? '' },\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthis.showError(e, this.$locale.baseText('settings.users.userReinviteError'));\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tasync onCopyInviteLink(userId: string) {\n\t\t\tconst user = this.usersStore.getUserById(userId);\n\t\t\tif (user?.inviteAcceptUrl) {\n\t\t\t\tvoid this.clipboard.copy(user.inviteAcceptUrl);\n\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttype: 'success',\n\t\t\t\t\ttitle: this.$locale.baseText('settings.users.inviteUrlCreated'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.users.inviteUrlCreated.message'),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tasync onCopyPasswordResetLink(userId: string) {\n\t\t\tconst user = this.usersStore.getUserById(userId);\n\t\t\tif (user) {\n\t\t\t\tconst url = await this.usersStore.getUserPasswordResetLink(user);\n\t\t\t\tvoid this.clipboard.copy(url.link);\n\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttype: 'success',\n\t\t\t\t\ttitle: this.$locale.baseText('settings.users.passwordResetUrlCreated'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.users.passwordResetUrlCreated.message'),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tasync onAllowSSOManualLogin(userId: string) {\n\t\t\tconst user = this.usersStore.getUserById(userId);\n\t\t\tif (user) {\n\t\t\t\tif (!user.settings) {\n\t\t\t\t\tuser.settings = {};\n\t\t\t\t}\n\t\t\t\tuser.settings.allowSSOManualLogin = true;\n\t\t\t\tawait this.usersStore.updateOtherUserSettings(userId, user.settings);\n\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttype: 'success',\n\t\t\t\t\ttitle: this.$locale.baseText('settings.users.allowSSOManualLogin'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.users.allowSSOManualLogin.message'),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tasync onDisallowSSOManualLogin(userId: string) {\n\t\t\tconst user = this.usersStore.getUserById(userId);\n\t\t\tif (user?.settings) {\n\t\t\t\tuser.settings.allowSSOManualLogin = false;\n\t\t\t\tawait this.usersStore.updateOtherUserSettings(userId, user.settings);\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttype: 'success',\n\t\t\t\t\ttitle: this.$locale.baseText('settings.users.disallowSSOManualLogin'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.users.disallowSSOManualLogin.message'),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgoToUpgrade() {\n\t\t\tvoid this.uiStore.goToUpgrade('settings-users', 'upgrade-users');\n\t\t},\n\t\tgoToUpgradeAdvancedPermissions() {\n\t\t\tvoid this.uiStore.goToUpgrade('settings-users', 'upgrade-advanced-permissions');\n\t\t},\n\t\tasync onRoleChange(user: IUser, newRoleName: UpdateGlobalRolePayload['newRoleName']) {\n\t\t\tawait this.usersStore.updateGlobalRole({ id: user.id, newRoleName });\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\theight: 100%;\n\tpadding-right: var(--spacing-2xs);\n\n\t> * {\n\t\tmargin-bottom: var(--spacing-2xl);\n\t}\n}\n\n.usersContainer {\n\t> * {\n\t\tmargin-bottom: var(--spacing-2xs);\n\t}\n}\n\n.buttonContainer {\n\tdisplay: inline-block;\n\tfloat: right;\n\tmargin-bottom: var(--spacing-l);\n}\n\n.setupInfoContainer {\n\tmax-width: 728px;\n}\n\n.alert {\n\tleft: calc(50% + 100px);\n}\n</style>\n"],"names":["_sfc_main","defineComponent","useClipboard","useToast","mapStores","useSettingsStore","useUIStore","useUsersStore","useUsageStore","useSSOStore","EnterpriseEditionFeature","hasPermission","user","_a","ROLE","action","userId","VIEWS","INVITE_USER_MODAL_KEY","e","url","newRoleName","_resolveComponent","_normalizeClass","_ctx","_createVNode","_component_n8n_heading","$locale","_withCtx","_createTextVNode","_toDisplayString","showUMSetupWarning","settingsStore","_openBlock","_createElementBlock","$style","_createElementVNode","ssoStore","_component_n8n_action_box","uiStore","goToUpgrade","_createCommentVNode","_component_n8n_notice","_component_i18n_t","goToUpgradeAdvancedPermissions","usersStore","onUsersListAction","_createBlock","_component_n8n_select","$event","_Fragment","_renderList","role","_component_n8n_option"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsUsersView-Tx1-g18F.js","sources":["../../src/views/SettingsUsersView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.container\">\n\t\t<div>\n\t\t\t<n8n-heading size=\"2xlarge\">{{ $locale.baseText('settings.users') }}</n8n-heading>\n\t\t\t<div v-if=\"!showUMSetupWarning\" :class=\"$style.buttonContainer\">\n\t\t\t\t<n8n-tooltip :disabled=\"!ssoStore.isSamlLoginEnabled\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<span> {{ $locale.baseText('settings.users.invite.tooltip') }} </span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<n8n-button\n\t\t\t\t\t\t\t:disabled=\"ssoStore.isSamlLoginEnabled || !settingsStore.isBelowUserQuota\"\n\t\t\t\t\t\t\t:label=\"$locale.baseText('settings.users.invite')\"\n\t\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t\tdata-test-id=\"settings-users-invite-button\"\n\t\t\t\t\t\t\t@click=\"onInvite\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</n8n-tooltip>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"!settingsStore.isBelowUserQuota\" :class=\"$style.setupInfoContainer\">\n\t\t\t<n8n-action-box\n\t\t\t\t:heading=\"\n\t\t\t\t\t$locale.baseText(uiStore.contextBasedTranslationKeys.users.settings.unavailable.title)\n\t\t\t\t\"\n\t\t\t\t:description=\"\n\t\t\t\t\t$locale.baseText(\n\t\t\t\t\t\tuiStore.contextBasedTranslationKeys.users.settings.unavailable.description,\n\t\t\t\t\t)\n\t\t\t\t\"\n\t\t\t\t:button-text=\"\n\t\t\t\t\t$locale.baseText(uiStore.contextBasedTranslationKeys.users.settings.unavailable.button)\n\t\t\t\t\"\n\t\t\t\t@click:button=\"goToUpgrade\"\n\t\t\t/>\n\t\t</div>\n\t\t<n8n-notice v-if=\"!isAdvancedPermissionsEnabled\">\n\t\t\t<i18n-t keypath=\"settings.users.advancedPermissions.warning\">\n\t\t\t\t<template #link>\n\t\t\t\t\t<n8n-link size=\"small\" @click=\"goToUpgradeAdvancedPermissions\">\n\t\t\t\t\t\t{{ $locale.baseText('settings.users.advancedPermissions.warning.link') }}\n\t\t\t\t\t</n8n-link>\n\t\t\t\t</template>\n\t\t\t</i18n-t>\n\t\t</n8n-notice>\n\t\t<!-- If there's more than 1 user it means the account quota was more than 1 in the past. So we need to allow instance owner to be able to delete users and transfer workflows.\n\t\t-->\n\t\t<div\n\t\t\tv-if=\"settingsStore.isBelowUserQuota || usersStore.allUsers.length > 1\"\n\t\t\t:class=\"$style.usersContainer\"\n\t\t>\n\t\t\t<n8n-users-list\n\t\t\t\t:actions=\"usersListActions\"\n\t\t\t\t:users=\"usersStore.allUsers\"\n\t\t\t\t:current-user-id=\"usersStore.currentUserId\"\n\t\t\t\t:is-saml-login-enabled=\"ssoStore.isSamlLoginEnabled\"\n\t\t\t\t@action=\"onUsersListAction\"\n\t\t\t>\n\t\t\t\t<template #actions=\"{ user }\">\n\t\t\t\t\t<n8n-select\n\t\t\t\t\t\tv-if=\"user.id !== usersStore.currentUserId\"\n\t\t\t\t\t\t:model-value=\"user?.role || 'global:member'\"\n\t\t\t\t\t\t:disabled=\"!canUpdateRole\"\n\t\t\t\t\t\tdata-test-id=\"user-role-select\"\n\t\t\t\t\t\t@update:model-value=\"onRoleChange(user, $event)\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<n8n-option\n\t\t\t\t\t\t\tv-for=\"role in userRoles\"\n\t\t\t\t\t\t\t:key=\"role.value\"\n\t\t\t\t\t\t\t:value=\"role.value\"\n\t\t\t\t\t\t\t:label=\"role.label\"\n\t\t\t\t\t\t\t:disabled=\"role.disabled\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</n8n-select>\n\t\t\t\t</template>\n\t\t\t</n8n-users-list>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\nimport { EnterpriseEditionFeature, INVITE_USER_MODAL_KEY, VIEWS, ROLE } from '@/constants';\n\nimport type { IUser, IUserListAction, InvitableRoleName } from '@/Interface';\nimport { useToast } from '@/composables/useToast';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useUsersStore } from '@/stores/users.store';\nimport { useUsageStore } from '@/stores/usage.store';\nimport { useSSOStore } from '@/stores/sso.store';\nimport { hasPermission } from '@/rbac/permissions';\nimport { useClipboard } from '@/composables/useClipboard';\nimport type { UpdateGlobalRolePayload } from '@/api/users';\n\nexport default defineComponent({\n\tname: 'SettingsUsersView',\n\tsetup() {\n\t\tconst clipboard = useClipboard();\n\n\t\treturn {\n\t\t\tclipboard,\n\t\t\t...useToast(),\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useSettingsStore, useUIStore, useUsersStore, useUsageStore, useSSOStore),\n\t\tisSharingEnabled() {\n\t\t\treturn this.settingsStore.isEnterpriseFeatureEnabled(EnterpriseEditionFeature.Sharing);\n\t\t},\n\t\tshowUMSetupWarning() {\n\t\t\treturn hasPermission(['defaultUser']);\n\t\t},\n\t\tusersListActions(): IUserListAction[] {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.users.actions.copyInviteLink'),\n\t\t\t\t\tvalue: 'copyInviteLink',\n\t\t\t\t\tguard: (user) =>\n\t\t\t\t\t\tthis.settingsStore.isBelowUserQuota && !user.firstName && !!user.inviteAcceptUrl,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.users.actions.reinvite'),\n\t\t\t\t\tvalue: 'reinvite',\n\t\t\t\t\tguard: (user) =>\n\t\t\t\t\t\tthis.settingsStore.isBelowUserQuota &&\n\t\t\t\t\t\t!user.firstName &&\n\t\t\t\t\t\tthis.settingsStore.isSmtpSetup,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.users.actions.delete'),\n\t\t\t\t\tvalue: 'delete',\n\t\t\t\t\tguard: (user) =>\n\t\t\t\t\t\thasPermission(['rbac'], { rbac: { scope: 'user:delete' } }) &&\n\t\t\t\t\t\tuser.id !== this.usersStore.currentUserId,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.users.actions.copyPasswordResetLink'),\n\t\t\t\t\tvalue: 'copyPasswordResetLink',\n\t\t\t\t\tguard: (user) =>\n\t\t\t\t\t\thasPermission(['rbac'], { rbac: { scope: 'user:resetPassword' } }) &&\n\t\t\t\t\t\tthis.settingsStore.isBelowUserQuota &&\n\t\t\t\t\t\t!user.isPendingUser &&\n\t\t\t\t\t\tuser.id !== this.usersStore.currentUserId,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.users.actions.allowSSOManualLogin'),\n\t\t\t\t\tvalue: 'allowSSOManualLogin',\n\t\t\t\t\tguard: (user) =>\n\t\t\t\t\t\tthis.settingsStore.isSamlLoginEnabled && !user.settings?.allowSSOManualLogin,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.users.actions.disallowSSOManualLogin'),\n\t\t\t\t\tvalue: 'disallowSSOManualLogin',\n\t\t\t\t\tguard: (user) =>\n\t\t\t\t\t\tthis.settingsStore.isSamlLoginEnabled && user.settings?.allowSSOManualLogin === true,\n\t\t\t\t},\n\t\t\t];\n\t\t},\n\t\tisAdvancedPermissionsEnabled(): boolean {\n\t\t\treturn this.settingsStore.isEnterpriseFeatureEnabled(\n\t\t\t\tEnterpriseEditionFeature.AdvancedPermissions,\n\t\t\t);\n\t\t},\n\t\tuserRoles(): Array<{ value: IRole; label: string; disabled?: boolean }> {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tvalue: ROLE.Member,\n\t\t\t\t\tlabel: this.$locale.baseText('auth.roles.member'),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: ROLE.Admin,\n\t\t\t\t\tlabel: this.$locale.baseText('auth.roles.admin'),\n\t\t\t\t\tdisabled: !this.isAdvancedPermissionsEnabled,\n\t\t\t\t},\n\t\t\t];\n\t\t},\n\t\tcanUpdateRole(): boolean {\n\t\t\treturn hasPermission(['rbac'], { rbac: { scope: ['user:update', 'user:changeRole'] } });\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (!this.showUMSetupWarning) {\n\t\t\tawait this.usersStore.fetchUsers();\n\t\t}\n\t},\n\tmethods: {\n\t\tasync onUsersListAction({ action, userId }: { action: string; userId: string }) {\n\t\t\tswitch (action) {\n\t\t\t\tcase 'delete':\n\t\t\t\t\tawait this.onDelete(userId);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'reinvite':\n\t\t\t\t\tawait this.onReinvite(userId);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'copyInviteLink':\n\t\t\t\t\tawait this.onCopyInviteLink(userId);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'copyPasswordResetLink':\n\t\t\t\t\tawait this.onCopyPasswordResetLink(userId);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'allowSSOManualLogin':\n\t\t\t\t\tawait this.onAllowSSOManualLogin(userId);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'disallowSSOManualLogin':\n\t\t\t\t\tawait this.onDisallowSSOManualLogin(userId);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\tredirectToSetup() {\n\t\t\tvoid this.$router.push({ name: VIEWS.SETUP });\n\t\t},\n\t\tonInvite() {\n\t\t\tthis.uiStore.openModal(INVITE_USER_MODAL_KEY);\n\t\t},\n\t\tasync onDelete(userId: string) {\n\t\t\tconst user = this.usersStore.getUserById(userId);\n\t\t\tif (user) {\n\t\t\t\tthis.uiStore.openDeleteUserModal(userId);\n\t\t\t}\n\t\t},\n\t\tasync onReinvite(userId: string) {\n\t\t\tconst user = this.usersStore.getUserById(userId);\n\t\t\tif (user?.email && user?.role) {\n\t\t\t\tif (!['global:admin', 'global:member'].includes(user.role)) {\n\t\t\t\t\tthrow new Error('Invalid role name on reinvite');\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tawait this.usersStore.reinviteUser({\n\t\t\t\t\t\temail: user.email,\n\t\t\t\t\t\trole: user.role as InvitableRoleName,\n\t\t\t\t\t});\n\t\t\t\t\tthis.showToast({\n\t\t\t\t\t\ttype: 'success',\n\t\t\t\t\t\ttitle: this.$locale.baseText('settings.users.inviteResent'),\n\t\t\t\t\t\tmessage: this.$locale.baseText('settings.users.emailSentTo', {\n\t\t\t\t\t\t\tinterpolate: { email: user.email ?? '' },\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthis.showError(e, this.$locale.baseText('settings.users.userReinviteError'));\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tasync onCopyInviteLink(userId: string) {\n\t\t\tconst user = this.usersStore.getUserById(userId);\n\t\t\tif (user?.inviteAcceptUrl) {\n\t\t\t\tvoid this.clipboard.copy(user.inviteAcceptUrl);\n\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttype: 'success',\n\t\t\t\t\ttitle: this.$locale.baseText('settings.users.inviteUrlCreated'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.users.inviteUrlCreated.message'),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tasync onCopyPasswordResetLink(userId: string) {\n\t\t\tconst user = this.usersStore.getUserById(userId);\n\t\t\tif (user) {\n\t\t\t\tconst url = await this.usersStore.getUserPasswordResetLink(user);\n\t\t\t\tvoid this.clipboard.copy(url.link);\n\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttype: 'success',\n\t\t\t\t\ttitle: this.$locale.baseText('settings.users.passwordResetUrlCreated'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.users.passwordResetUrlCreated.message'),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tasync onAllowSSOManualLogin(userId: string) {\n\t\t\tconst user = this.usersStore.getUserById(userId);\n\t\t\tif (user) {\n\t\t\t\tif (!user.settings) {\n\t\t\t\t\tuser.settings = {};\n\t\t\t\t}\n\t\t\t\tuser.settings.allowSSOManualLogin = true;\n\t\t\t\tawait this.usersStore.updateOtherUserSettings(userId, user.settings);\n\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttype: 'success',\n\t\t\t\t\ttitle: this.$locale.baseText('settings.users.allowSSOManualLogin'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.users.allowSSOManualLogin.message'),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tasync onDisallowSSOManualLogin(userId: string) {\n\t\t\tconst user = this.usersStore.getUserById(userId);\n\t\t\tif (user?.settings) {\n\t\t\t\tuser.settings.allowSSOManualLogin = false;\n\t\t\t\tawait this.usersStore.updateOtherUserSettings(userId, user.settings);\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttype: 'success',\n\t\t\t\t\ttitle: this.$locale.baseText('settings.users.disallowSSOManualLogin'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.users.disallowSSOManualLogin.message'),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgoToUpgrade() {\n\t\t\tvoid this.uiStore.goToUpgrade('settings-users', 'upgrade-users');\n\t\t},\n\t\tgoToUpgradeAdvancedPermissions() {\n\t\t\tvoid this.uiStore.goToUpgrade('settings-users', 'upgrade-advanced-permissions');\n\t\t},\n\t\tasync onRoleChange(user: IUser, newRoleName: UpdateGlobalRolePayload['newRoleName']) {\n\t\t\tawait this.usersStore.updateGlobalRole({ id: user.id, newRoleName });\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\theight: 100%;\n\tpadding-right: var(--spacing-2xs);\n\n\t> * {\n\t\tmargin-bottom: var(--spacing-2xl);\n\t}\n}\n\n.usersContainer {\n\t> * {\n\t\tmargin-bottom: var(--spacing-2xs);\n\t}\n}\n\n.buttonContainer {\n\tdisplay: inline-block;\n\tfloat: right;\n\tmargin-bottom: var(--spacing-l);\n}\n\n.setupInfoContainer {\n\tmax-width: 728px;\n}\n\n.alert {\n\tleft: calc(50% + 100px);\n}\n</style>\n"],"names":["_sfc_main","defineComponent","useClipboard","useToast","mapStores","useSettingsStore","useUIStore","useUsersStore","useUsageStore","useSSOStore","EnterpriseEditionFeature","hasPermission","user","_a","ROLE","action","userId","VIEWS","INVITE_USER_MODAL_KEY","e","url","newRoleName","_resolveComponent","_normalizeClass","_ctx","_createVNode","_component_n8n_heading","$locale","_withCtx","_createTextVNode","_toDisplayString","showUMSetupWarning","settingsStore","_openBlock","_createElementBlock","$style","_createElementVNode","ssoStore","_component_n8n_action_box","uiStore","goToUpgrade","_createCommentVNode","_component_n8n_notice","_component_i18n_t","goToUpgradeAdvancedPermissions","usersStore","onUsersListAction","_createBlock","_component_n8n_select","$event","_Fragment","_renderList","role","_component_n8n_option"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{_ as $,i as N,b as R,l as v,V as t,r as C,a2 as I,a1 as f}from"./index-CY2ZfL2U.js";import{m as y}from"./pinia-Dh4cxKZ0.js";import{G as d,ag as n,l as g,m as _,U as o,O as r,p as a,I as i,S,T as p,K as O}from"./vendor-CUQSof8H.js";import{_ as h}from"./n8n-DT_bOwuZ.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BiGWdRh4.js";import"./lodash-es-BFdF4Er8.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-C0ZgbPvs.js";import"./vue-i18n-CG6eDDlD.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-wY6jAr7b.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-DOxvr88t.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const U=d({name:"SettingsSidebar",mixins:[$],computed:{...y(v,R,N),settingsFakeDoorFeatures(){return this.uiStore.getFakeDoorByLocation("settings")},sidebarMenuItems(){const e=[{id:"settings-usage-and-plan",icon:"chart-bar",label:this.$locale.baseText("settings.usageAndPlan.title"),position:"top",available:this.canAccessUsageAndPlan(),route:{to:{name:t.USAGE}}},{id:"settings-personal",icon:"user-circle",label:this.$locale.baseText("settings.personal"),position:"top",available:this.canAccessPersonalSettings(),route:{to:{name:t.PERSONAL_SETTINGS}}},{id:"settings-users",icon:"user-friends",label:this.$locale.baseText("settings.users"),position:"top",available:this.canAccessUsersSettings(),route:{to:{name:t.USERS_SETTINGS}}},{id:"settings-api",icon:"plug",label:this.$locale.baseText("settings.n8napi"),position:"top",available:this.canAccessApiSettings(),route:{to:{name:t.API_SETTINGS}}},{id:"settings-external-secrets",icon:"vault",label:this.$locale.baseText("settings.externalSecrets.title"),position:"top",available:this.canAccessExternalSecrets(),route:{to:{name:t.EXTERNAL_SECRETS_SETTINGS}}},{id:"settings-source-control",icon:"code-branch",label:this.$locale.baseText("settings.sourceControl.title"),position:"top",available:this.canAccessSourceControl(),route:{to:{name:t.SOURCE_CONTROL}}},{id:"settings-sso",icon:"user-lock",label:this.$locale.baseText("settings.sso"),position:"top",available:this.canAccessSso(),route:{to:{name:t.SSO_SETTINGS}}},{id:"settings-ldap",icon:"network-wired",label:this.$locale.baseText("settings.ldap"),position:"top",available:this.canAccessLdapSettings(),route:{to:{name:t.LDAP_SETTINGS}}},{id:"settings-workersview",icon:"project-diagram",label:this.$locale.baseText("mainSidebar.workersView"),position:"top",available:this.settingsStore.isQueueModeEnabled&&C(["rbac"],{rbac:{scope:"workersView:manage"}}),route:{to:{name:t.WORKER_VIEW}}}];for(const s of this.settingsFakeDoorFeatures)s.uiLocations.includes("settings")&&e.push({id:s.id,icon:s.icon??"question",label:this.$locale.baseText(s.featureName),position:"top",available:!0,activateOnRoutePaths:[`/settings/coming-soon/${s.id}`]});return e.push({id:"settings-log-streaming",icon:"sign-in-alt",label:this.$locale.baseText("settings.log-streaming"),position:"top",available:this.canAccessLogStreamingSettings(),route:{to:{name:t.LOG_STREAMING_SETTINGS}}}),e.push({id:"settings-community-nodes",icon:"cube",label:this.$locale.baseText("settings.communityNodes"),position:"top",available:this.canAccessCommunityNodes(),route:{to:{name:t.COMMUNITY_NODES}}}),e}},methods:{canAccessPersonalSettings(){return this.canUserAccessRouteByName(t.PERSONAL_SETTINGS)},canAccessUsersSettings(){return this.canUserAccessRouteByName(t.USERS_SETTINGS)},canAccessCommunityNodes(){return this.canUserAccessRouteByName(t.COMMUNITY_NODES)},canAccessApiSettings(){return this.settingsStore.isPublicApiEnabled&&this.canUserAccessRouteByName(t.API_SETTINGS)},canAccessLdapSettings(){return this.canUserAccessRouteByName(t.LDAP_SETTINGS)},canAccessLogStreamingSettings(){return this.canUserAccessRouteByName(t.LOG_STREAMING_SETTINGS)},canAccessUsageAndPlan(){return this.canUserAccessRouteByName(t.USAGE)},canAccessExternalSecrets(){return this.canUserAccessRouteByName(t.EXTERNAL_SECRETS_SETTINGS)},canAccessSourceControl(){return this.canUserAccessRouteByName(t.SOURCE_CONTROL)},canAccessSso(){return this.canUserAccessRouteByName(t.SSO_SETTINGS)},onVersionClick(){this.uiStore.openModal(I)},openUpdatesPanel(){this.uiStore.openModal(f)},async navigateTo(e){this.$router.currentRoute.name!==e&&await this.$router.push({name:e})},async handleSelect(e){switch(e){case"users":case"logging":this.$router.push({name:t.FAKE_DOOR,params:{featureId:e}}).catch(()=>{});break}}}}),w="_container_w9grj_1",G="_returnButton_w9grj_10",B="_versionContainer_w9grj_18",k={container:w,returnButton:G,versionContainer:B},L={class:"mr-xs"};function M(e,s,c,l,b,T){const u=n("font-awesome-icon"),m=n("n8n-heading"),A=n("n8n-link"),E=n("n8n-menu");return g(),_("div",{class:i(e.$style.container)},[o(E,{items:e.sidebarMenuItems,onSelect:e.handleSelect},{header:r(()=>[a("div",{class:i(e.$style.returnButton),"data-test-id":"settings-back",onClick:s[0]||(s[0]=H=>e.$emit("return"))},[a("i",L,[o(u,{icon:"arrow-left"})]),o(m,{size:"large",bold:!0},{default:r(()=>[S(p(e.$locale.baseText("settings")),1)]),_:1})],2)]),menuSuffix:r(()=>[a("div",{class:i(e.$style.versionContainer)},[o(A,{size:"small",onClick:e.onVersionClick},{default:r(()=>[S(p(e.$locale.baseText("settings.version"))+" "+p(e.rootStore.versionCli),1)]),_:1},8,["onClick"])],2)]),_:1},8,["items","onSelect"])],2)}const P={$style:k},V=h(U,[["render",M],["__cssModules",P]]),x=d({name:"SettingsView",components:{SettingsSidebar:V},beforeRouteEnter(e,s,c){c(l=>{l.previousRoute=s})},data(){return{previousRoute:null}},methods:{onReturn(){this.$router.push(this.previousRoute?this.previousRoute.path:{name:t.HOMEPAGE})}}}),D=x,F="_container_11adc_1",K="_contentContainer_11adc_8 _container_11adc_1",j="_content_11adc_8",Y={container:F,contentContainer:K,content:j};function z(e,s,c,l,b,T){const u=n("SettingsSidebar"),m=n("router-view");return g(),_("div",{class:i(e.$style.container)},[o(u,{onReturn:e.onReturn},null,8,["onReturn"]),a("div",{class:i(e.$style.contentContainer)},[a("div",{class:i(e.$style.content)},[o(m,O({name:"settingsView"},e.$attrs),null,16)],2)],2)],2)}const W={$style:Y},Re=h(D,[["render",z],["__cssModules",W]]);export{Re as default};
2
- //# sourceMappingURL=SettingsView-jgK3_oOB.js.map
1
+ import{_ as $,i as N,b as R,l as v,V as t,r as C,a2 as I,a1 as f}from"./index-BQ6Z7VRj.js";import{m as y}from"./pinia-Dh4cxKZ0.js";import{G as d,ag as n,l as g,m as _,U as o,O as r,p as a,I as i,S,T as p,K as O}from"./vendor-CUQSof8H.js";import{_ as h}from"./n8n-DT_bOwuZ.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BiGWdRh4.js";import"./lodash-es-BFdF4Er8.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-C0ZgbPvs.js";import"./vue-i18n-CG6eDDlD.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-wY6jAr7b.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-DOxvr88t.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const U=d({name:"SettingsSidebar",mixins:[$],computed:{...y(v,R,N),settingsFakeDoorFeatures(){return this.uiStore.getFakeDoorByLocation("settings")},sidebarMenuItems(){const e=[{id:"settings-usage-and-plan",icon:"chart-bar",label:this.$locale.baseText("settings.usageAndPlan.title"),position:"top",available:this.canAccessUsageAndPlan(),route:{to:{name:t.USAGE}}},{id:"settings-personal",icon:"user-circle",label:this.$locale.baseText("settings.personal"),position:"top",available:this.canAccessPersonalSettings(),route:{to:{name:t.PERSONAL_SETTINGS}}},{id:"settings-users",icon:"user-friends",label:this.$locale.baseText("settings.users"),position:"top",available:this.canAccessUsersSettings(),route:{to:{name:t.USERS_SETTINGS}}},{id:"settings-api",icon:"plug",label:this.$locale.baseText("settings.n8napi"),position:"top",available:this.canAccessApiSettings(),route:{to:{name:t.API_SETTINGS}}},{id:"settings-external-secrets",icon:"vault",label:this.$locale.baseText("settings.externalSecrets.title"),position:"top",available:this.canAccessExternalSecrets(),route:{to:{name:t.EXTERNAL_SECRETS_SETTINGS}}},{id:"settings-source-control",icon:"code-branch",label:this.$locale.baseText("settings.sourceControl.title"),position:"top",available:this.canAccessSourceControl(),route:{to:{name:t.SOURCE_CONTROL}}},{id:"settings-sso",icon:"user-lock",label:this.$locale.baseText("settings.sso"),position:"top",available:this.canAccessSso(),route:{to:{name:t.SSO_SETTINGS}}},{id:"settings-ldap",icon:"network-wired",label:this.$locale.baseText("settings.ldap"),position:"top",available:this.canAccessLdapSettings(),route:{to:{name:t.LDAP_SETTINGS}}},{id:"settings-workersview",icon:"project-diagram",label:this.$locale.baseText("mainSidebar.workersView"),position:"top",available:this.settingsStore.isQueueModeEnabled&&C(["rbac"],{rbac:{scope:"workersView:manage"}}),route:{to:{name:t.WORKER_VIEW}}}];for(const s of this.settingsFakeDoorFeatures)s.uiLocations.includes("settings")&&e.push({id:s.id,icon:s.icon??"question",label:this.$locale.baseText(s.featureName),position:"top",available:!0,activateOnRoutePaths:[`/settings/coming-soon/${s.id}`]});return e.push({id:"settings-log-streaming",icon:"sign-in-alt",label:this.$locale.baseText("settings.log-streaming"),position:"top",available:this.canAccessLogStreamingSettings(),route:{to:{name:t.LOG_STREAMING_SETTINGS}}}),e.push({id:"settings-community-nodes",icon:"cube",label:this.$locale.baseText("settings.communityNodes"),position:"top",available:this.canAccessCommunityNodes(),route:{to:{name:t.COMMUNITY_NODES}}}),e}},methods:{canAccessPersonalSettings(){return this.canUserAccessRouteByName(t.PERSONAL_SETTINGS)},canAccessUsersSettings(){return this.canUserAccessRouteByName(t.USERS_SETTINGS)},canAccessCommunityNodes(){return this.canUserAccessRouteByName(t.COMMUNITY_NODES)},canAccessApiSettings(){return this.settingsStore.isPublicApiEnabled&&this.canUserAccessRouteByName(t.API_SETTINGS)},canAccessLdapSettings(){return this.canUserAccessRouteByName(t.LDAP_SETTINGS)},canAccessLogStreamingSettings(){return this.canUserAccessRouteByName(t.LOG_STREAMING_SETTINGS)},canAccessUsageAndPlan(){return this.canUserAccessRouteByName(t.USAGE)},canAccessExternalSecrets(){return this.canUserAccessRouteByName(t.EXTERNAL_SECRETS_SETTINGS)},canAccessSourceControl(){return this.canUserAccessRouteByName(t.SOURCE_CONTROL)},canAccessSso(){return this.canUserAccessRouteByName(t.SSO_SETTINGS)},onVersionClick(){this.uiStore.openModal(I)},openUpdatesPanel(){this.uiStore.openModal(f)},async navigateTo(e){this.$router.currentRoute.name!==e&&await this.$router.push({name:e})},async handleSelect(e){switch(e){case"users":case"logging":this.$router.push({name:t.FAKE_DOOR,params:{featureId:e}}).catch(()=>{});break}}}}),w="_container_w9grj_1",G="_returnButton_w9grj_10",B="_versionContainer_w9grj_18",k={container:w,returnButton:G,versionContainer:B},L={class:"mr-xs"};function M(e,s,c,l,b,T){const u=n("font-awesome-icon"),m=n("n8n-heading"),A=n("n8n-link"),E=n("n8n-menu");return g(),_("div",{class:i(e.$style.container)},[o(E,{items:e.sidebarMenuItems,onSelect:e.handleSelect},{header:r(()=>[a("div",{class:i(e.$style.returnButton),"data-test-id":"settings-back",onClick:s[0]||(s[0]=H=>e.$emit("return"))},[a("i",L,[o(u,{icon:"arrow-left"})]),o(m,{size:"large",bold:!0},{default:r(()=>[S(p(e.$locale.baseText("settings")),1)]),_:1})],2)]),menuSuffix:r(()=>[a("div",{class:i(e.$style.versionContainer)},[o(A,{size:"small",onClick:e.onVersionClick},{default:r(()=>[S(p(e.$locale.baseText("settings.version"))+" "+p(e.rootStore.versionCli),1)]),_:1},8,["onClick"])],2)]),_:1},8,["items","onSelect"])],2)}const P={$style:k},V=h(U,[["render",M],["__cssModules",P]]),x=d({name:"SettingsView",components:{SettingsSidebar:V},beforeRouteEnter(e,s,c){c(l=>{l.previousRoute=s})},data(){return{previousRoute:null}},methods:{onReturn(){this.$router.push(this.previousRoute?this.previousRoute.path:{name:t.HOMEPAGE})}}}),D=x,F="_container_11adc_1",K="_contentContainer_11adc_8 _container_11adc_1",j="_content_11adc_8",Y={container:F,contentContainer:K,content:j};function z(e,s,c,l,b,T){const u=n("SettingsSidebar"),m=n("router-view");return g(),_("div",{class:i(e.$style.container)},[o(u,{onReturn:e.onReturn},null,8,["onReturn"]),a("div",{class:i(e.$style.contentContainer)},[a("div",{class:i(e.$style.content)},[o(m,O({name:"settingsView"},e.$attrs),null,16)],2)],2)],2)}const W={$style:Y},Re=h(D,[["render",z],["__cssModules",W]]);export{Re as default};
2
+ //# sourceMappingURL=SettingsView-BOZ2SBsQ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsView-jgK3_oOB.js","sources":["../../src/components/SettingsSidebar.vue","../../src/views/SettingsView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.container\">\n\t\t<n8n-menu :items=\"sidebarMenuItems\" @select=\"handleSelect\">\n\t\t\t<template #header>\n\t\t\t\t<div :class=\"$style.returnButton\" data-test-id=\"settings-back\" @click=\"$emit('return')\">\n\t\t\t\t\t<i class=\"mr-xs\">\n\t\t\t\t\t\t<font-awesome-icon icon=\"arrow-left\" />\n\t\t\t\t\t</i>\n\t\t\t\t\t<n8n-heading size=\"large\" :bold=\"true\">{{ $locale.baseText('settings') }}</n8n-heading>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template #menuSuffix>\n\t\t\t\t<div :class=\"$style.versionContainer\">\n\t\t\t\t\t<n8n-link size=\"small\" @click=\"onVersionClick\">\n\t\t\t\t\t\t{{ $locale.baseText('settings.version') }} {{ rootStore.versionCli }}\n\t\t\t\t\t</n8n-link>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</n8n-menu>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\nimport { ABOUT_MODAL_KEY, VERSIONS_MODAL_KEY, VIEWS } from '@/constants';\nimport { userHelpers } from '@/mixins/userHelpers';\nimport type { IFakeDoor } from '@/Interface';\nimport type { IMenuItem } from 'n8n-design-system';\nimport type { BaseTextKey } from '@/plugins/i18n';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useRootStore } from '@/stores/n8nRoot.store';\nimport { hasPermission } from '@/rbac/permissions';\n\nexport default defineComponent({\n\tname: 'SettingsSidebar',\n\tmixins: [userHelpers],\n\tcomputed: {\n\t\t...mapStores(useRootStore, useSettingsStore, useUIStore),\n\t\tsettingsFakeDoorFeatures(): IFakeDoor[] {\n\t\t\treturn this.uiStore.getFakeDoorByLocation('settings');\n\t\t},\n\t\tsidebarMenuItems(): IMenuItem[] {\n\t\t\tconst menuItems: IMenuItem[] = [\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-usage-and-plan',\n\t\t\t\t\ticon: 'chart-bar',\n\t\t\t\t\tlabel: this.$locale.baseText('settings.usageAndPlan.title'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable: this.canAccessUsageAndPlan(),\n\t\t\t\t\troute: { to: { name: VIEWS.USAGE } },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-personal',\n\t\t\t\t\ticon: 'user-circle',\n\t\t\t\t\tlabel: this.$locale.baseText('settings.personal'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable: this.canAccessPersonalSettings(),\n\t\t\t\t\troute: { to: { name: VIEWS.PERSONAL_SETTINGS } },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-users',\n\t\t\t\t\ticon: 'user-friends',\n\t\t\t\t\tlabel: this.$locale.baseText('settings.users'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable: this.canAccessUsersSettings(),\n\t\t\t\t\troute: { to: { name: VIEWS.USERS_SETTINGS } },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-api',\n\t\t\t\t\ticon: 'plug',\n\t\t\t\t\tlabel: this.$locale.baseText('settings.n8napi'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable: this.canAccessApiSettings(),\n\t\t\t\t\troute: { to: { name: VIEWS.API_SETTINGS } },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-external-secrets',\n\t\t\t\t\ticon: 'vault',\n\t\t\t\t\tlabel: this.$locale.baseText('settings.externalSecrets.title'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable: this.canAccessExternalSecrets(),\n\t\t\t\t\troute: { to: { name: VIEWS.EXTERNAL_SECRETS_SETTINGS } },\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-source-control',\n\t\t\t\t\ticon: 'code-branch',\n\t\t\t\t\tlabel: this.$locale.baseText('settings.sourceControl.title'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable: this.canAccessSourceControl(),\n\t\t\t\t\troute: { to: { name: VIEWS.SOURCE_CONTROL } },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-sso',\n\t\t\t\t\ticon: 'user-lock',\n\t\t\t\t\tlabel: this.$locale.baseText('settings.sso'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable: this.canAccessSso(),\n\t\t\t\t\troute: { to: { name: VIEWS.SSO_SETTINGS } },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-ldap',\n\t\t\t\t\ticon: 'network-wired',\n\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable: this.canAccessLdapSettings(),\n\t\t\t\t\troute: { to: { name: VIEWS.LDAP_SETTINGS } },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-workersview',\n\t\t\t\t\ticon: 'project-diagram',\n\t\t\t\t\tlabel: this.$locale.baseText('mainSidebar.workersView'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable:\n\t\t\t\t\t\tthis.settingsStore.isQueueModeEnabled &&\n\t\t\t\t\t\thasPermission(['rbac'], { rbac: { scope: 'workersView:manage' } }),\n\t\t\t\t\troute: { to: { name: VIEWS.WORKER_VIEW } },\n\t\t\t\t},\n\t\t\t];\n\n\t\t\tfor (const item of this.settingsFakeDoorFeatures) {\n\t\t\t\tif (item.uiLocations.includes('settings')) {\n\t\t\t\t\tmenuItems.push({\n\t\t\t\t\t\tid: item.id,\n\t\t\t\t\t\ticon: item.icon ?? 'question',\n\t\t\t\t\t\tlabel: this.$locale.baseText(item.featureName as BaseTextKey),\n\t\t\t\t\t\tposition: 'top',\n\t\t\t\t\t\tavailable: true,\n\t\t\t\t\t\tactivateOnRoutePaths: [`/settings/coming-soon/${item.id}`],\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmenuItems.push({\n\t\t\t\tid: 'settings-log-streaming',\n\t\t\t\ticon: 'sign-in-alt',\n\t\t\t\tlabel: this.$locale.baseText('settings.log-streaming'),\n\t\t\t\tposition: 'top',\n\t\t\t\tavailable: this.canAccessLogStreamingSettings(),\n\t\t\t\troute: { to: { name: VIEWS.LOG_STREAMING_SETTINGS } },\n\t\t\t});\n\n\t\t\tmenuItems.push({\n\t\t\t\tid: 'settings-community-nodes',\n\t\t\t\ticon: 'cube',\n\t\t\t\tlabel: this.$locale.baseText('settings.communityNodes'),\n\t\t\t\tposition: 'top',\n\t\t\t\tavailable: this.canAccessCommunityNodes(),\n\t\t\t\troute: { to: { name: VIEWS.COMMUNITY_NODES } },\n\t\t\t});\n\n\t\t\treturn menuItems;\n\t\t},\n\t},\n\tmethods: {\n\t\tcanAccessPersonalSettings(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.PERSONAL_SETTINGS);\n\t\t},\n\t\tcanAccessUsersSettings(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.USERS_SETTINGS);\n\t\t},\n\t\tcanAccessCommunityNodes(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.COMMUNITY_NODES);\n\t\t},\n\t\tcanAccessApiSettings(): boolean {\n\t\t\treturn (\n\t\t\t\tthis.settingsStore.isPublicApiEnabled && this.canUserAccessRouteByName(VIEWS.API_SETTINGS)\n\t\t\t);\n\t\t},\n\t\tcanAccessLdapSettings(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.LDAP_SETTINGS);\n\t\t},\n\t\tcanAccessLogStreamingSettings(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.LOG_STREAMING_SETTINGS);\n\t\t},\n\t\tcanAccessUsageAndPlan(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.USAGE);\n\t\t},\n\t\tcanAccessExternalSecrets(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.EXTERNAL_SECRETS_SETTINGS);\n\t\t},\n\t\tcanAccessSourceControl(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.SOURCE_CONTROL);\n\t\t},\n\t\tcanAccessSso(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.SSO_SETTINGS);\n\t\t},\n\t\tonVersionClick() {\n\t\t\tthis.uiStore.openModal(ABOUT_MODAL_KEY);\n\t\t},\n\t\topenUpdatesPanel() {\n\t\t\tthis.uiStore.openModal(VERSIONS_MODAL_KEY);\n\t\t},\n\t\tasync navigateTo(routeName: (typeof VIEWS)[keyof typeof VIEWS]) {\n\t\t\tif (this.$router.currentRoute.name !== routeName) {\n\t\t\t\tawait this.$router.push({ name: routeName });\n\t\t\t}\n\t\t},\n\t\tasync handleSelect(key: string) {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'users': // Fakedoor feature added via hooks when user management is disabled on cloud\n\t\t\t\tcase 'logging':\n\t\t\t\t\tthis.$router.push({ name: VIEWS.FAKE_DOOR, params: { featureId: key } }).catch(() => {});\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\tmin-width: $sidebar-expanded-width;\n\theight: 100%;\n\tbackground-color: var(--color-background-xlight);\n\tborder-right: var(--border-base);\n\tposition: relative;\n\toverflow: auto;\n}\n\n.returnButton {\n\tpadding: var(--spacing-s) var(--spacing-l);\n\tcursor: pointer;\n\t&:hover {\n\t\tcolor: var(--color-primary);\n\t}\n}\n\n.versionContainer {\n\tpadding: var(--spacing-xs) var(--spacing-l);\n}\n\n@media screen and (max-height: 420px) {\n\t.versionContainer {\n\t\tdisplay: none;\n\t}\n}\n</style>\n","<template>\n\t<div :class=\"$style.container\">\n\t\t<SettingsSidebar @return=\"onReturn\" />\n\t\t<div :class=\"$style.contentContainer\">\n\t\t\t<div :class=\"$style.content\">\n\t\t\t\t<!--\n\t\t\t\t\tBecause we're using nested routes the props are going to be bind to the top level route\n\t\t\t\t\tso we need to pass them down to the child component\n\t\t\t\t-->\n\t\t\t\t<router-view name=\"settingsView\" v-bind=\"$attrs\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport type { Route } from 'vue-router';\n\nimport { VIEWS } from '@/constants';\nimport SettingsSidebar from '@/components/SettingsSidebar.vue';\n\nconst SettingsView = defineComponent({\n\tname: 'SettingsView',\n\tcomponents: {\n\t\tSettingsSidebar,\n\t},\n\tbeforeRouteEnter(to, from, next) {\n\t\tnext((vm) => {\n\t\t\t(vm as unknown as InstanceType<typeof SettingsView>).previousRoute = from;\n\t\t});\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpreviousRoute: null as Route | null,\n\t\t};\n\t},\n\tmethods: {\n\t\tonReturn() {\n\t\t\tvoid this.$router.push(\n\t\t\t\tthis.previousRoute ? this.previousRoute.path : { name: VIEWS.HOMEPAGE },\n\t\t\t);\n\t\t},\n\t},\n});\n\nexport default SettingsView;\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\theight: 100%;\n\twidth: 100%;\n\tdisplay: flex;\n\toverflow: hidden;\n}\n\n.contentContainer {\n\tcomposes: container;\n\tjustify-content: center;\n\tpadding-top: 70.5px;\n\theight: 100%;\n\toverflow: auto;\n\tbackground-color: var(--color-background-light);\n}\n\n.content {\n\theight: 100%;\n\twidth: 100%;\n\tmax-width: 800px;\n\tpadding: 0 var(--spacing-2xl);\n}\n</style>\n"],"names":["_sfc_main$1","defineComponent","userHelpers","mapStores","useRootStore","useSettingsStore","useUIStore","menuItems","VIEWS","hasPermission","item","ABOUT_MODAL_KEY","VERSIONS_MODAL_KEY","routeName","key","_resolveComponent","_normalizeClass","_ctx","handleSelect","_withCtx","_createElementVNode","$emit","_cache","$event","_createVNode","_component_font_awesome_icon","_component_n8n_heading","_createTextVNode","_toDisplayString","$style","onVersionClick","SettingsView","SettingsSidebar","to","from","next","vm","_sfc_main","_component_SettingsSidebar"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsView-BOZ2SBsQ.js","sources":["../../src/components/SettingsSidebar.vue","../../src/views/SettingsView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.container\">\n\t\t<n8n-menu :items=\"sidebarMenuItems\" @select=\"handleSelect\">\n\t\t\t<template #header>\n\t\t\t\t<div :class=\"$style.returnButton\" data-test-id=\"settings-back\" @click=\"$emit('return')\">\n\t\t\t\t\t<i class=\"mr-xs\">\n\t\t\t\t\t\t<font-awesome-icon icon=\"arrow-left\" />\n\t\t\t\t\t</i>\n\t\t\t\t\t<n8n-heading size=\"large\" :bold=\"true\">{{ $locale.baseText('settings') }}</n8n-heading>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template #menuSuffix>\n\t\t\t\t<div :class=\"$style.versionContainer\">\n\t\t\t\t\t<n8n-link size=\"small\" @click=\"onVersionClick\">\n\t\t\t\t\t\t{{ $locale.baseText('settings.version') }} {{ rootStore.versionCli }}\n\t\t\t\t\t</n8n-link>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</n8n-menu>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\nimport { ABOUT_MODAL_KEY, VERSIONS_MODAL_KEY, VIEWS } from '@/constants';\nimport { userHelpers } from '@/mixins/userHelpers';\nimport type { IFakeDoor } from '@/Interface';\nimport type { IMenuItem } from 'n8n-design-system';\nimport type { BaseTextKey } from '@/plugins/i18n';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useRootStore } from '@/stores/n8nRoot.store';\nimport { hasPermission } from '@/rbac/permissions';\n\nexport default defineComponent({\n\tname: 'SettingsSidebar',\n\tmixins: [userHelpers],\n\tcomputed: {\n\t\t...mapStores(useRootStore, useSettingsStore, useUIStore),\n\t\tsettingsFakeDoorFeatures(): IFakeDoor[] {\n\t\t\treturn this.uiStore.getFakeDoorByLocation('settings');\n\t\t},\n\t\tsidebarMenuItems(): IMenuItem[] {\n\t\t\tconst menuItems: IMenuItem[] = [\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-usage-and-plan',\n\t\t\t\t\ticon: 'chart-bar',\n\t\t\t\t\tlabel: this.$locale.baseText('settings.usageAndPlan.title'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable: this.canAccessUsageAndPlan(),\n\t\t\t\t\troute: { to: { name: VIEWS.USAGE } },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-personal',\n\t\t\t\t\ticon: 'user-circle',\n\t\t\t\t\tlabel: this.$locale.baseText('settings.personal'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable: this.canAccessPersonalSettings(),\n\t\t\t\t\troute: { to: { name: VIEWS.PERSONAL_SETTINGS } },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-users',\n\t\t\t\t\ticon: 'user-friends',\n\t\t\t\t\tlabel: this.$locale.baseText('settings.users'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable: this.canAccessUsersSettings(),\n\t\t\t\t\troute: { to: { name: VIEWS.USERS_SETTINGS } },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-api',\n\t\t\t\t\ticon: 'plug',\n\t\t\t\t\tlabel: this.$locale.baseText('settings.n8napi'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable: this.canAccessApiSettings(),\n\t\t\t\t\troute: { to: { name: VIEWS.API_SETTINGS } },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-external-secrets',\n\t\t\t\t\ticon: 'vault',\n\t\t\t\t\tlabel: this.$locale.baseText('settings.externalSecrets.title'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable: this.canAccessExternalSecrets(),\n\t\t\t\t\troute: { to: { name: VIEWS.EXTERNAL_SECRETS_SETTINGS } },\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-source-control',\n\t\t\t\t\ticon: 'code-branch',\n\t\t\t\t\tlabel: this.$locale.baseText('settings.sourceControl.title'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable: this.canAccessSourceControl(),\n\t\t\t\t\troute: { to: { name: VIEWS.SOURCE_CONTROL } },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-sso',\n\t\t\t\t\ticon: 'user-lock',\n\t\t\t\t\tlabel: this.$locale.baseText('settings.sso'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable: this.canAccessSso(),\n\t\t\t\t\troute: { to: { name: VIEWS.SSO_SETTINGS } },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-ldap',\n\t\t\t\t\ticon: 'network-wired',\n\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable: this.canAccessLdapSettings(),\n\t\t\t\t\troute: { to: { name: VIEWS.LDAP_SETTINGS } },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'settings-workersview',\n\t\t\t\t\ticon: 'project-diagram',\n\t\t\t\t\tlabel: this.$locale.baseText('mainSidebar.workersView'),\n\t\t\t\t\tposition: 'top',\n\t\t\t\t\tavailable:\n\t\t\t\t\t\tthis.settingsStore.isQueueModeEnabled &&\n\t\t\t\t\t\thasPermission(['rbac'], { rbac: { scope: 'workersView:manage' } }),\n\t\t\t\t\troute: { to: { name: VIEWS.WORKER_VIEW } },\n\t\t\t\t},\n\t\t\t];\n\n\t\t\tfor (const item of this.settingsFakeDoorFeatures) {\n\t\t\t\tif (item.uiLocations.includes('settings')) {\n\t\t\t\t\tmenuItems.push({\n\t\t\t\t\t\tid: item.id,\n\t\t\t\t\t\ticon: item.icon ?? 'question',\n\t\t\t\t\t\tlabel: this.$locale.baseText(item.featureName as BaseTextKey),\n\t\t\t\t\t\tposition: 'top',\n\t\t\t\t\t\tavailable: true,\n\t\t\t\t\t\tactivateOnRoutePaths: [`/settings/coming-soon/${item.id}`],\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmenuItems.push({\n\t\t\t\tid: 'settings-log-streaming',\n\t\t\t\ticon: 'sign-in-alt',\n\t\t\t\tlabel: this.$locale.baseText('settings.log-streaming'),\n\t\t\t\tposition: 'top',\n\t\t\t\tavailable: this.canAccessLogStreamingSettings(),\n\t\t\t\troute: { to: { name: VIEWS.LOG_STREAMING_SETTINGS } },\n\t\t\t});\n\n\t\t\tmenuItems.push({\n\t\t\t\tid: 'settings-community-nodes',\n\t\t\t\ticon: 'cube',\n\t\t\t\tlabel: this.$locale.baseText('settings.communityNodes'),\n\t\t\t\tposition: 'top',\n\t\t\t\tavailable: this.canAccessCommunityNodes(),\n\t\t\t\troute: { to: { name: VIEWS.COMMUNITY_NODES } },\n\t\t\t});\n\n\t\t\treturn menuItems;\n\t\t},\n\t},\n\tmethods: {\n\t\tcanAccessPersonalSettings(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.PERSONAL_SETTINGS);\n\t\t},\n\t\tcanAccessUsersSettings(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.USERS_SETTINGS);\n\t\t},\n\t\tcanAccessCommunityNodes(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.COMMUNITY_NODES);\n\t\t},\n\t\tcanAccessApiSettings(): boolean {\n\t\t\treturn (\n\t\t\t\tthis.settingsStore.isPublicApiEnabled && this.canUserAccessRouteByName(VIEWS.API_SETTINGS)\n\t\t\t);\n\t\t},\n\t\tcanAccessLdapSettings(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.LDAP_SETTINGS);\n\t\t},\n\t\tcanAccessLogStreamingSettings(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.LOG_STREAMING_SETTINGS);\n\t\t},\n\t\tcanAccessUsageAndPlan(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.USAGE);\n\t\t},\n\t\tcanAccessExternalSecrets(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.EXTERNAL_SECRETS_SETTINGS);\n\t\t},\n\t\tcanAccessSourceControl(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.SOURCE_CONTROL);\n\t\t},\n\t\tcanAccessSso(): boolean {\n\t\t\treturn this.canUserAccessRouteByName(VIEWS.SSO_SETTINGS);\n\t\t},\n\t\tonVersionClick() {\n\t\t\tthis.uiStore.openModal(ABOUT_MODAL_KEY);\n\t\t},\n\t\topenUpdatesPanel() {\n\t\t\tthis.uiStore.openModal(VERSIONS_MODAL_KEY);\n\t\t},\n\t\tasync navigateTo(routeName: (typeof VIEWS)[keyof typeof VIEWS]) {\n\t\t\tif (this.$router.currentRoute.name !== routeName) {\n\t\t\t\tawait this.$router.push({ name: routeName });\n\t\t\t}\n\t\t},\n\t\tasync handleSelect(key: string) {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'users': // Fakedoor feature added via hooks when user management is disabled on cloud\n\t\t\t\tcase 'logging':\n\t\t\t\t\tthis.$router.push({ name: VIEWS.FAKE_DOOR, params: { featureId: key } }).catch(() => {});\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\tmin-width: $sidebar-expanded-width;\n\theight: 100%;\n\tbackground-color: var(--color-background-xlight);\n\tborder-right: var(--border-base);\n\tposition: relative;\n\toverflow: auto;\n}\n\n.returnButton {\n\tpadding: var(--spacing-s) var(--spacing-l);\n\tcursor: pointer;\n\t&:hover {\n\t\tcolor: var(--color-primary);\n\t}\n}\n\n.versionContainer {\n\tpadding: var(--spacing-xs) var(--spacing-l);\n}\n\n@media screen and (max-height: 420px) {\n\t.versionContainer {\n\t\tdisplay: none;\n\t}\n}\n</style>\n","<template>\n\t<div :class=\"$style.container\">\n\t\t<SettingsSidebar @return=\"onReturn\" />\n\t\t<div :class=\"$style.contentContainer\">\n\t\t\t<div :class=\"$style.content\">\n\t\t\t\t<!--\n\t\t\t\t\tBecause we're using nested routes the props are going to be bind to the top level route\n\t\t\t\t\tso we need to pass them down to the child component\n\t\t\t\t-->\n\t\t\t\t<router-view name=\"settingsView\" v-bind=\"$attrs\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport type { Route } from 'vue-router';\n\nimport { VIEWS } from '@/constants';\nimport SettingsSidebar from '@/components/SettingsSidebar.vue';\n\nconst SettingsView = defineComponent({\n\tname: 'SettingsView',\n\tcomponents: {\n\t\tSettingsSidebar,\n\t},\n\tbeforeRouteEnter(to, from, next) {\n\t\tnext((vm) => {\n\t\t\t(vm as unknown as InstanceType<typeof SettingsView>).previousRoute = from;\n\t\t});\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpreviousRoute: null as Route | null,\n\t\t};\n\t},\n\tmethods: {\n\t\tonReturn() {\n\t\t\tvoid this.$router.push(\n\t\t\t\tthis.previousRoute ? this.previousRoute.path : { name: VIEWS.HOMEPAGE },\n\t\t\t);\n\t\t},\n\t},\n});\n\nexport default SettingsView;\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\theight: 100%;\n\twidth: 100%;\n\tdisplay: flex;\n\toverflow: hidden;\n}\n\n.contentContainer {\n\tcomposes: container;\n\tjustify-content: center;\n\tpadding-top: 70.5px;\n\theight: 100%;\n\toverflow: auto;\n\tbackground-color: var(--color-background-light);\n}\n\n.content {\n\theight: 100%;\n\twidth: 100%;\n\tmax-width: 800px;\n\tpadding: 0 var(--spacing-2xl);\n}\n</style>\n"],"names":["_sfc_main$1","defineComponent","userHelpers","mapStores","useRootStore","useSettingsStore","useUIStore","menuItems","VIEWS","hasPermission","item","ABOUT_MODAL_KEY","VERSIONS_MODAL_KEY","routeName","key","_resolveComponent","_normalizeClass","_ctx","handleSelect","_withCtx","_createElementVNode","$emit","_cache","$event","_createVNode","_component_font_awesome_icon","_component_n8n_heading","_createTextVNode","_toDisplayString","$style","onVersionClick","SettingsView","SettingsSidebar","to","from","next","vm","_sfc_main","_component_SettingsSidebar"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{A as o}from"./AuthView-1FRMwQ3r.js";import{u as i,a as s,i as m,b as p,V as a}from"./index-CY2ZfL2U.js";import{m as l}from"./pinia-Dh4cxKZ0.js";import{G as n,l as u,M as c,ag as h}from"./vendor-CUQSof8H.js";import{_ as d}from"./n8n-DT_bOwuZ.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BiGWdRh4.js";import"./lodash-es-BFdF4Er8.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-C0ZgbPvs.js";import"./vue-i18n-CG6eDDlD.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-wY6jAr7b.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-DOxvr88t.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const f=n({name:"SetupView",components:{AuthView:o},setup(){return i()},data(){return{FORM_CONFIG:{title:this.$locale.baseText("auth.setup.setupOwner"),buttonText:this.$locale.baseText("auth.setup.next"),inputs:[{name:"email",properties:{label:this.$locale.baseText("auth.email"),type:"email",required:!0,validationRules:[{name:"VALID_EMAIL"}],autocomplete:"email",capitalize:!0}},{name:"firstName",properties:{label:this.$locale.baseText("auth.firstName"),maxlength:32,required:!0,autocomplete:"given-name",capitalize:!0}},{name:"lastName",properties:{label:this.$locale.baseText("auth.lastName"),maxlength:32,required:!0,autocomplete:"family-name",capitalize:!0}},{name:"password",properties:{label:this.$locale.baseText("auth.password"),type:"password",required:!0,validationRules:[{name:"DEFAULT_PASSWORD_RULES"}],infoText:this.$locale.baseText("auth.defaultPasswordRequirements"),autocomplete:"new-password",capitalize:!0}},{name:"agree",properties:{label:this.$locale.baseText("auth.agreement.label"),type:"checkbox"}}]},loading:!1}},computed:{...l(p,m,s)},methods:{async onSubmit(e){try{const t=this.settingsStore.showSetupPage;if(this.loading=!0,await this.usersStore.createOwner(e),e.agree===!0)try{await this.uiStore.submitContactEmail(e.email.toString(),e.agree)}catch{}t?await this.$router.push({name:a.NEW_WORKFLOW}):await this.$router.push({name:a.USERS_SETTINGS})}catch(t){this.showError(t,this.$locale.baseText("auth.setup.settingUpOwnerError"))}this.loading=!1}}});function S(e,t,b,w,g,_){const r=h("AuthView");return u(),c(r,{form:e.FORM_CONFIG,"form-loading":e.loading,"data-test-id":"setup-form",onSubmit:e.onSubmit},null,8,["form","form-loading","onSubmit"])}const X=d(f,[["render",S]]);export{X as default};
2
- //# sourceMappingURL=SetupView-O6xv77jO.js.map
1
+ import{A as o}from"./AuthView-DfyvaM6i.js";import{u as i,a as s,i as m,b as p,V as a}from"./index-BQ6Z7VRj.js";import{m as l}from"./pinia-Dh4cxKZ0.js";import{G as n,l as u,M as c,ag as h}from"./vendor-CUQSof8H.js";import{_ as d}from"./n8n-DT_bOwuZ.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BiGWdRh4.js";import"./lodash-es-BFdF4Er8.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-C0ZgbPvs.js";import"./vue-i18n-CG6eDDlD.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-wY6jAr7b.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-DOxvr88t.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const f=n({name:"SetupView",components:{AuthView:o},setup(){return i()},data(){return{FORM_CONFIG:{title:this.$locale.baseText("auth.setup.setupOwner"),buttonText:this.$locale.baseText("auth.setup.next"),inputs:[{name:"email",properties:{label:this.$locale.baseText("auth.email"),type:"email",required:!0,validationRules:[{name:"VALID_EMAIL"}],autocomplete:"email",capitalize:!0}},{name:"firstName",properties:{label:this.$locale.baseText("auth.firstName"),maxlength:32,required:!0,autocomplete:"given-name",capitalize:!0}},{name:"lastName",properties:{label:this.$locale.baseText("auth.lastName"),maxlength:32,required:!0,autocomplete:"family-name",capitalize:!0}},{name:"password",properties:{label:this.$locale.baseText("auth.password"),type:"password",required:!0,validationRules:[{name:"DEFAULT_PASSWORD_RULES"}],infoText:this.$locale.baseText("auth.defaultPasswordRequirements"),autocomplete:"new-password",capitalize:!0}},{name:"agree",properties:{label:this.$locale.baseText("auth.agreement.label"),type:"checkbox"}}]},loading:!1}},computed:{...l(p,m,s)},methods:{async onSubmit(e){try{const t=this.settingsStore.showSetupPage;if(this.loading=!0,await this.usersStore.createOwner(e),e.agree===!0)try{await this.uiStore.submitContactEmail(e.email.toString(),e.agree)}catch{}t?await this.$router.push({name:a.NEW_WORKFLOW}):await this.$router.push({name:a.USERS_SETTINGS})}catch(t){this.showError(t,this.$locale.baseText("auth.setup.settingUpOwnerError"))}this.loading=!1}}});function S(e,t,b,w,g,_){const r=h("AuthView");return u(),c(r,{form:e.FORM_CONFIG,"form-loading":e.loading,"data-test-id":"setup-form",onSubmit:e.onSubmit},null,8,["form","form-loading","onSubmit"])}const X=d(f,[["render",S]]);export{X as default};
2
+ //# sourceMappingURL=SetupView-DY7tVzgF.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SetupView-O6xv77jO.js","sources":["../../src/views/SetupView.vue"],"sourcesContent":["<template>\n\t<AuthView\n\t\t:form=\"FORM_CONFIG\"\n\t\t:form-loading=\"loading\"\n\t\tdata-test-id=\"setup-form\"\n\t\t@submit=\"onSubmit\"\n\t/>\n</template>\n\n<script lang=\"ts\">\nimport AuthView from './AuthView.vue';\nimport { defineComponent } from 'vue';\n\nimport { useToast } from '@/composables/useToast';\nimport type { IFormBoxConfig } from '@/Interface';\nimport { VIEWS } from '@/constants';\nimport { mapStores } from 'pinia';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useUsersStore } from '@/stores/users.store';\n\nexport default defineComponent({\n\tname: 'SetupView',\n\tcomponents: {\n\t\tAuthView,\n\t},\n\tsetup() {\n\t\treturn useToast();\n\t},\n\tdata() {\n\t\tconst FORM_CONFIG: IFormBoxConfig = {\n\t\t\ttitle: this.$locale.baseText('auth.setup.setupOwner'),\n\t\t\tbuttonText: this.$locale.baseText('auth.setup.next'),\n\t\t\tinputs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'email',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tlabel: this.$locale.baseText('auth.email'),\n\t\t\t\t\t\ttype: 'email',\n\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\tvalidationRules: [{ name: 'VALID_EMAIL' }],\n\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'firstName',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tlabel: this.$locale.baseText('auth.firstName'),\n\t\t\t\t\t\tmaxlength: 32,\n\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\tautocomplete: 'given-name',\n\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'lastName',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tlabel: this.$locale.baseText('auth.lastName'),\n\t\t\t\t\t\tmaxlength: 32,\n\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\tautocomplete: 'family-name',\n\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'password',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tlabel: this.$locale.baseText('auth.password'),\n\t\t\t\t\t\ttype: 'password',\n\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\tvalidationRules: [{ name: 'DEFAULT_PASSWORD_RULES' }],\n\t\t\t\t\t\tinfoText: this.$locale.baseText('auth.defaultPasswordRequirements'),\n\t\t\t\t\t\tautocomplete: 'new-password',\n\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'agree',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tlabel: this.$locale.baseText('auth.agreement.label'),\n\t\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\treturn {\n\t\t\tFORM_CONFIG,\n\t\t\tloading: false,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useSettingsStore, useUIStore, useUsersStore),\n\t},\n\tmethods: {\n\t\tasync onSubmit(values: { [key: string]: string | boolean }) {\n\t\t\ttry {\n\t\t\t\tconst forceRedirectedHere = this.settingsStore.showSetupPage;\n\t\t\t\tthis.loading = true;\n\t\t\t\tawait this.usersStore.createOwner(\n\t\t\t\t\tvalues as { firstName: string; lastName: string; email: string; password: string },\n\t\t\t\t);\n\n\t\t\t\tif (values.agree === true) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait this.uiStore.submitContactEmail(values.email.toString(), values.agree);\n\t\t\t\t\t} catch {}\n\t\t\t\t}\n\n\t\t\t\tif (forceRedirectedHere) {\n\t\t\t\t\tawait this.$router.push({ name: VIEWS.NEW_WORKFLOW });\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$router.push({ name: VIEWS.USERS_SETTINGS });\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('auth.setup.settingUpOwnerError'));\n\t\t\t}\n\t\t\tthis.loading = false;\n\t\t},\n\t},\n});\n</script>\n"],"names":["_sfc_main","defineComponent","AuthView","useToast","mapStores","useSettingsStore","useUIStore","useUsersStore","values","forceRedirectedHere","VIEWS","error","_resolveComponent","_openBlock","_createBlock","_component_AuthView","_ctx","onSubmit"],"mappings":"woCAqBA,MAAAA,EAAeC,EAAgB,CAC9B,KAAM,YACN,WAAY,CACX,SAAAC,CACD,EACA,OAAQ,CACP,OAAOC,EAAS,CACjB,EACA,MAAO,CA0DC,MAAA,CACN,YA1DmC,CACnC,MAAO,KAAK,QAAQ,SAAS,uBAAuB,EACpD,WAAY,KAAK,QAAQ,SAAS,iBAAiB,EACnD,OAAQ,CACP,CACC,KAAM,QACN,WAAY,CACX,MAAO,KAAK,QAAQ,SAAS,YAAY,EACzC,KAAM,QACN,SAAU,GACV,gBAAiB,CAAC,CAAE,KAAM,cAAe,EACzC,aAAc,QACd,WAAY,EACb,CACD,EACA,CACC,KAAM,YACN,WAAY,CACX,MAAO,KAAK,QAAQ,SAAS,gBAAgB,EAC7C,UAAW,GACX,SAAU,GACV,aAAc,aACd,WAAY,EACb,CACD,EACA,CACC,KAAM,WACN,WAAY,CACX,MAAO,KAAK,QAAQ,SAAS,eAAe,EAC5C,UAAW,GACX,SAAU,GACV,aAAc,cACd,WAAY,EACb,CACD,EACA,CACC,KAAM,WACN,WAAY,CACX,MAAO,KAAK,QAAQ,SAAS,eAAe,EAC5C,KAAM,WACN,SAAU,GACV,gBAAiB,CAAC,CAAE,KAAM,yBAA0B,EACpD,SAAU,KAAK,QAAQ,SAAS,kCAAkC,EAClE,aAAc,eACd,WAAY,EACb,CACD,EACA,CACC,KAAM,QACN,WAAY,CACX,MAAO,KAAK,QAAQ,SAAS,sBAAsB,EACnD,KAAM,UACP,CACD,CACD,CAAA,EAKA,QAAS,EAAA,CAEX,EACA,SAAU,CACT,GAAGC,EAAUC,EAAkBC,EAAYC,CAAa,CACzD,EACA,QAAS,CACR,MAAM,SAASC,EAA6C,CACvD,GAAA,CACG,MAAAC,EAAsB,KAAK,cAAc,cAM3C,GALJ,KAAK,QAAU,GACf,MAAM,KAAK,WAAW,YACrBD,CAAA,EAGGA,EAAO,QAAU,GAChB,GAAA,CACG,MAAA,KAAK,QAAQ,mBAAmBA,EAAO,MAAM,SAAS,EAAGA,EAAO,KAAK,CAAA,MACpE,CAAC,CAGNC,EACH,MAAM,KAAK,QAAQ,KAAK,CAAE,KAAMC,EAAM,aAAc,EAEpD,MAAM,KAAK,QAAQ,KAAK,CAAE,KAAMA,EAAM,eAAgB,QAE/CC,EAAO,CACf,KAAK,UAAUA,EAAO,KAAK,QAAQ,SAAS,gCAAgC,CAAC,CAC9E,CACA,KAAK,QAAU,EAChB,CACD,CACD,CAAC,kCAxHAC,EAKE,UAAA,EAHA,OAAAC,EAAA,EAAqBC,EAAAC,EAAA,CACtB,KAAAC,EAAA,YACC,eAAQC,EAAAA,QAAAA,eAAAA"}
1
+ {"version":3,"file":"SetupView-DY7tVzgF.js","sources":["../../src/views/SetupView.vue"],"sourcesContent":["<template>\n\t<AuthView\n\t\t:form=\"FORM_CONFIG\"\n\t\t:form-loading=\"loading\"\n\t\tdata-test-id=\"setup-form\"\n\t\t@submit=\"onSubmit\"\n\t/>\n</template>\n\n<script lang=\"ts\">\nimport AuthView from './AuthView.vue';\nimport { defineComponent } from 'vue';\n\nimport { useToast } from '@/composables/useToast';\nimport type { IFormBoxConfig } from '@/Interface';\nimport { VIEWS } from '@/constants';\nimport { mapStores } from 'pinia';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useUsersStore } from '@/stores/users.store';\n\nexport default defineComponent({\n\tname: 'SetupView',\n\tcomponents: {\n\t\tAuthView,\n\t},\n\tsetup() {\n\t\treturn useToast();\n\t},\n\tdata() {\n\t\tconst FORM_CONFIG: IFormBoxConfig = {\n\t\t\ttitle: this.$locale.baseText('auth.setup.setupOwner'),\n\t\t\tbuttonText: this.$locale.baseText('auth.setup.next'),\n\t\t\tinputs: [\n\t\t\t\t{\n\t\t\t\t\tname: 'email',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tlabel: this.$locale.baseText('auth.email'),\n\t\t\t\t\t\ttype: 'email',\n\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\tvalidationRules: [{ name: 'VALID_EMAIL' }],\n\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'firstName',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tlabel: this.$locale.baseText('auth.firstName'),\n\t\t\t\t\t\tmaxlength: 32,\n\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\tautocomplete: 'given-name',\n\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'lastName',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tlabel: this.$locale.baseText('auth.lastName'),\n\t\t\t\t\t\tmaxlength: 32,\n\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\tautocomplete: 'family-name',\n\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'password',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tlabel: this.$locale.baseText('auth.password'),\n\t\t\t\t\t\ttype: 'password',\n\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\tvalidationRules: [{ name: 'DEFAULT_PASSWORD_RULES' }],\n\t\t\t\t\t\tinfoText: this.$locale.baseText('auth.defaultPasswordRequirements'),\n\t\t\t\t\t\tautocomplete: 'new-password',\n\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'agree',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tlabel: this.$locale.baseText('auth.agreement.label'),\n\t\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\treturn {\n\t\t\tFORM_CONFIG,\n\t\t\tloading: false,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useSettingsStore, useUIStore, useUsersStore),\n\t},\n\tmethods: {\n\t\tasync onSubmit(values: { [key: string]: string | boolean }) {\n\t\t\ttry {\n\t\t\t\tconst forceRedirectedHere = this.settingsStore.showSetupPage;\n\t\t\t\tthis.loading = true;\n\t\t\t\tawait this.usersStore.createOwner(\n\t\t\t\t\tvalues as { firstName: string; lastName: string; email: string; password: string },\n\t\t\t\t);\n\n\t\t\t\tif (values.agree === true) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait this.uiStore.submitContactEmail(values.email.toString(), values.agree);\n\t\t\t\t\t} catch {}\n\t\t\t\t}\n\n\t\t\t\tif (forceRedirectedHere) {\n\t\t\t\t\tawait this.$router.push({ name: VIEWS.NEW_WORKFLOW });\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$router.push({ name: VIEWS.USERS_SETTINGS });\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('auth.setup.settingUpOwnerError'));\n\t\t\t}\n\t\t\tthis.loading = false;\n\t\t},\n\t},\n});\n</script>\n"],"names":["_sfc_main","defineComponent","AuthView","useToast","mapStores","useSettingsStore","useUIStore","useUsersStore","values","forceRedirectedHere","VIEWS","error","_resolveComponent","_openBlock","_createBlock","_component_AuthView","_ctx","onSubmit"],"mappings":"woCAqBA,MAAAA,EAAeC,EAAgB,CAC9B,KAAM,YACN,WAAY,CACX,SAAAC,CACD,EACA,OAAQ,CACP,OAAOC,EAAS,CACjB,EACA,MAAO,CA0DC,MAAA,CACN,YA1DmC,CACnC,MAAO,KAAK,QAAQ,SAAS,uBAAuB,EACpD,WAAY,KAAK,QAAQ,SAAS,iBAAiB,EACnD,OAAQ,CACP,CACC,KAAM,QACN,WAAY,CACX,MAAO,KAAK,QAAQ,SAAS,YAAY,EACzC,KAAM,QACN,SAAU,GACV,gBAAiB,CAAC,CAAE,KAAM,cAAe,EACzC,aAAc,QACd,WAAY,EACb,CACD,EACA,CACC,KAAM,YACN,WAAY,CACX,MAAO,KAAK,QAAQ,SAAS,gBAAgB,EAC7C,UAAW,GACX,SAAU,GACV,aAAc,aACd,WAAY,EACb,CACD,EACA,CACC,KAAM,WACN,WAAY,CACX,MAAO,KAAK,QAAQ,SAAS,eAAe,EAC5C,UAAW,GACX,SAAU,GACV,aAAc,cACd,WAAY,EACb,CACD,EACA,CACC,KAAM,WACN,WAAY,CACX,MAAO,KAAK,QAAQ,SAAS,eAAe,EAC5C,KAAM,WACN,SAAU,GACV,gBAAiB,CAAC,CAAE,KAAM,yBAA0B,EACpD,SAAU,KAAK,QAAQ,SAAS,kCAAkC,EAClE,aAAc,eACd,WAAY,EACb,CACD,EACA,CACC,KAAM,QACN,WAAY,CACX,MAAO,KAAK,QAAQ,SAAS,sBAAsB,EACnD,KAAM,UACP,CACD,CACD,CAAA,EAKA,QAAS,EAAA,CAEX,EACA,SAAU,CACT,GAAGC,EAAUC,EAAkBC,EAAYC,CAAa,CACzD,EACA,QAAS,CACR,MAAM,SAASC,EAA6C,CACvD,GAAA,CACG,MAAAC,EAAsB,KAAK,cAAc,cAM3C,GALJ,KAAK,QAAU,GACf,MAAM,KAAK,WAAW,YACrBD,CAAA,EAGGA,EAAO,QAAU,GAChB,GAAA,CACG,MAAA,KAAK,QAAQ,mBAAmBA,EAAO,MAAM,SAAS,EAAGA,EAAO,KAAK,CAAA,MACpE,CAAC,CAGNC,EACH,MAAM,KAAK,QAAQ,KAAK,CAAE,KAAMC,EAAM,aAAc,EAEpD,MAAM,KAAK,QAAQ,KAAK,CAAE,KAAMA,EAAM,eAAgB,QAE/CC,EAAO,CACf,KAAK,UAAUA,EAAO,KAAK,QAAQ,SAAS,gCAAgC,CAAC,CAC9E,CACA,KAAK,QAAU,EAChB,CACD,CACD,CAAC,kCAxHAC,EAKE,UAAA,EAHA,OAAAC,EAAA,EAAqBC,EAAAC,EAAA,CACtB,KAAAC,EAAA,YACC,eAAQC,EAAAA,QAAAA,eAAAA"}
@@ -1,2 +1,2 @@
1
- import{j as _,a4 as E,i as S,cQ as T,ei as w,cW as k,ej as l,w as b}from"./index-CY2ZfL2U.js";import{G as v,e as n,d as y,y as M,ag as N,l as g,M as I,u as A,R as B}from"./vendor-CUQSof8H.js";import"./pinia-Dh4cxKZ0.js";import"./n8n-DT_bOwuZ.js";import"./axios-Mm4CS0gO.js";import"./esprima-next-nhoSXAeq.js";import"./luxon-CLwAIbs0.js";import"./lodash-es-BFdF4Er8.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BiGWdRh4.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-C0ZgbPvs.js";import"./vue-i18n-CG6eDDlD.js";import"./uuid-SoommWqA.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./fast-json-stable-stringify-wY6jAr7b.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-DOxvr88t.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const pe=v({__name:"SetupWorkflowCredentialsButton",setup(F){const o=_(),m=E(),a=S(),u=T(),d=b(),p=n(()=>{var e,t;return!!((t=(e=o.workflow)==null?void 0:e.meta)!=null&&t.templateCredsSetupCompleted)}),i=n(()=>{if(p.value)return!0;const e=o.getNodes();return e.length?e.every(t=>w(m,t)):!1}),c=n(()=>{var r,s;const e=u.isFeatureEnabled(k),t=!!((s=(r=o.workflow)==null?void 0:r.meta)!=null&&s.templateId);return!e||!t||p.value?!1:!i.value}),f=y(i,e=>{e&&(o.addToWorkflowMetadata({templateCredsSetupCompleted:!0}),f())}),C=()=>{a.openModal(l)};return M(()=>{a.closeModal(l)}),(e,t)=>{const r=N("n8n-button");return c.value?(g(),I(r,{key:0,label:A(d).baseText("nodeView.setupTemplate"),size:"large",icon:"box-open",type:"secondary",onClick:t[0]||(t[0]=s=>C())},null,8,["label"])):B("",!0)}}});export{pe as default};
2
- //# sourceMappingURL=SetupWorkflowCredentialsButton-oGzzXD7H.js.map
1
+ import{j as _,a4 as E,i as S,cQ as T,ei as w,cW as k,ej as l,w as b}from"./index-BQ6Z7VRj.js";import{G as v,e as n,d as y,y as M,ag as N,l as g,M as I,u as A,R as B}from"./vendor-CUQSof8H.js";import"./pinia-Dh4cxKZ0.js";import"./n8n-DT_bOwuZ.js";import"./axios-Mm4CS0gO.js";import"./esprima-next-nhoSXAeq.js";import"./luxon-CLwAIbs0.js";import"./lodash-es-BFdF4Er8.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BiGWdRh4.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-C0ZgbPvs.js";import"./vue-i18n-CG6eDDlD.js";import"./uuid-SoommWqA.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./fast-json-stable-stringify-wY6jAr7b.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-DOxvr88t.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const pe=v({__name:"SetupWorkflowCredentialsButton",setup(F){const o=_(),m=E(),a=S(),u=T(),d=b(),p=n(()=>{var e,t;return!!((t=(e=o.workflow)==null?void 0:e.meta)!=null&&t.templateCredsSetupCompleted)}),i=n(()=>{if(p.value)return!0;const e=o.getNodes();return e.length?e.every(t=>w(m,t)):!1}),c=n(()=>{var r,s;const e=u.isFeatureEnabled(k),t=!!((s=(r=o.workflow)==null?void 0:r.meta)!=null&&s.templateId);return!e||!t||p.value?!1:!i.value}),f=y(i,e=>{e&&(o.addToWorkflowMetadata({templateCredsSetupCompleted:!0}),f())}),C=()=>{a.openModal(l)};return M(()=>{a.closeModal(l)}),(e,t)=>{const r=N("n8n-button");return c.value?(g(),I(r,{key:0,label:A(d).baseText("nodeView.setupTemplate"),size:"large",icon:"box-open",type:"secondary",onClick:t[0]||(t[0]=s=>C())},null,8,["label"])):B("",!0)}}});export{pe as default};
2
+ //# sourceMappingURL=SetupWorkflowCredentialsButton-B9Acgowu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SetupWorkflowCredentialsButton-oGzzXD7H.js","sources":["../../src/components/SetupWorkflowCredentialsButton/SetupWorkflowCredentialsButton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, watch } from 'vue';\nimport { useI18n } from '@/composables/useI18n';\nimport { SETUP_CREDENTIALS_MODAL_KEY, TEMPLATE_CREDENTIAL_SETUP_EXPERIMENT } from '@/constants';\nimport { useNodeTypesStore } from '@/stores/nodeTypes.store';\nimport { usePostHog } from '@/stores/posthog.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { doesNodeHaveAllCredentialsFilled } from '@/utils/nodes/nodeTransforms';\n\nconst workflowsStore = useWorkflowsStore();\nconst nodeTypesStore = useNodeTypesStore();\nconst uiStore = useUIStore();\nconst posthogStore = usePostHog();\nconst i18n = useI18n();\n\nconst isTemplateSetupCompleted = computed(() => {\n\treturn !!workflowsStore.workflow?.meta?.templateCredsSetupCompleted;\n});\n\nconst allCredentialsFilled = computed(() => {\n\tif (isTemplateSetupCompleted.value) {\n\t\treturn true;\n\t}\n\n\tconst nodes = workflowsStore.getNodes();\n\tif (!nodes.length) {\n\t\treturn false;\n\t}\n\n\treturn nodes.every((node) => doesNodeHaveAllCredentialsFilled(nodeTypesStore, node));\n});\n\nconst showButton = computed(() => {\n\tconst isFeatureEnabled = posthogStore.isFeatureEnabled(TEMPLATE_CREDENTIAL_SETUP_EXPERIMENT);\n\tconst isCreatedFromTemplate = !!workflowsStore.workflow?.meta?.templateId;\n\tif (!isFeatureEnabled || !isCreatedFromTemplate || isTemplateSetupCompleted.value) {\n\t\treturn false;\n\t}\n\n\treturn !allCredentialsFilled.value;\n});\n\nconst unsubscribe = watch(allCredentialsFilled, (newValue) => {\n\tif (newValue) {\n\t\tworkflowsStore.addToWorkflowMetadata({\n\t\t\ttemplateCredsSetupCompleted: true,\n\t\t});\n\n\t\tunsubscribe();\n\t}\n});\n\nconst handleClick = () => {\n\tuiStore.openModal(SETUP_CREDENTIALS_MODAL_KEY);\n};\n\nonBeforeUnmount(() => {\n\tuiStore.closeModal(SETUP_CREDENTIALS_MODAL_KEY);\n});\n</script>\n\n<template>\n\t<n8n-button\n\t\tv-if=\"showButton\"\n\t\t:label=\"i18n.baseText('nodeView.setupTemplate')\"\n\t\tsize=\"large\"\n\t\ticon=\"box-open\"\n\t\ttype=\"secondary\"\n\t\t@click=\"handleClick()\"\n\t/>\n</template>\n"],"names":["workflowsStore","useWorkflowsStore","nodeTypesStore","useNodeTypesStore","uiStore","useUIStore","posthogStore","usePostHog","i18n","useI18n","isTemplateSetupCompleted","computed","_b","_a","allCredentialsFilled","nodes","node","doesNodeHaveAllCredentialsFilled","showButton","isFeatureEnabled","TEMPLATE_CREDENTIAL_SETUP_EXPERIMENT","isCreatedFromTemplate","unsubscribe","watch","newValue","handleClick","SETUP_CREDENTIALS_MODAL_KEY","onBeforeUnmount"],"mappings":"+rCAUA,MAAMA,EAAiBC,IACjBC,EAAiBC,IACjBC,EAAUC,IACVC,EAAeC,IACfC,EAAOC,IAEPC,EAA2BC,EAAS,IAAM,SAC/C,MAAO,CAAC,GAACC,GAAAC,EAAAb,EAAe,WAAf,YAAAa,EAAyB,OAAzB,MAAAD,EAA+B,4BAAA,CACxC,EAEKE,EAAuBH,EAAS,IAAM,CAC3C,GAAID,EAAyB,MACrB,MAAA,GAGF,MAAAK,EAAQf,EAAe,WACzB,OAACe,EAAM,OAIJA,EAAM,MAAOC,GAASC,EAAiCf,EAAgBc,CAAI,CAAC,EAH3E,EAG2E,CACnF,EAEKE,EAAaP,EAAS,IAAM,SAC3B,MAAAQ,EAAmBb,EAAa,iBAAiBc,CAAoC,EACrFC,EAAwB,CAAC,GAACT,GAAAC,EAAAb,EAAe,WAAf,YAAAa,EAAyB,OAAzB,MAAAD,EAA+B,YAC/D,MAAI,CAACO,GAAoB,CAACE,GAAyBX,EAAyB,MACpE,GAGD,CAACI,EAAqB,KAAA,CAC7B,EAEKQ,EAAcC,EAAMT,EAAuBU,GAAa,CACzDA,IACHxB,EAAe,sBAAsB,CACpC,4BAA6B,EAAA,CAC7B,EAEWsB,IACb,CACA,EAEKG,EAAc,IAAM,CACzBrB,EAAQ,UAAUsB,CAA2B,CAAA,EAG9C,OAAAC,EAAgB,IAAM,CACrBvB,EAAQ,WAAWsB,CAA2B,CAAA,CAC9C"}
1
+ {"version":3,"file":"SetupWorkflowCredentialsButton-B9Acgowu.js","sources":["../../src/components/SetupWorkflowCredentialsButton/SetupWorkflowCredentialsButton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, watch } from 'vue';\nimport { useI18n } from '@/composables/useI18n';\nimport { SETUP_CREDENTIALS_MODAL_KEY, TEMPLATE_CREDENTIAL_SETUP_EXPERIMENT } from '@/constants';\nimport { useNodeTypesStore } from '@/stores/nodeTypes.store';\nimport { usePostHog } from '@/stores/posthog.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { doesNodeHaveAllCredentialsFilled } from '@/utils/nodes/nodeTransforms';\n\nconst workflowsStore = useWorkflowsStore();\nconst nodeTypesStore = useNodeTypesStore();\nconst uiStore = useUIStore();\nconst posthogStore = usePostHog();\nconst i18n = useI18n();\n\nconst isTemplateSetupCompleted = computed(() => {\n\treturn !!workflowsStore.workflow?.meta?.templateCredsSetupCompleted;\n});\n\nconst allCredentialsFilled = computed(() => {\n\tif (isTemplateSetupCompleted.value) {\n\t\treturn true;\n\t}\n\n\tconst nodes = workflowsStore.getNodes();\n\tif (!nodes.length) {\n\t\treturn false;\n\t}\n\n\treturn nodes.every((node) => doesNodeHaveAllCredentialsFilled(nodeTypesStore, node));\n});\n\nconst showButton = computed(() => {\n\tconst isFeatureEnabled = posthogStore.isFeatureEnabled(TEMPLATE_CREDENTIAL_SETUP_EXPERIMENT);\n\tconst isCreatedFromTemplate = !!workflowsStore.workflow?.meta?.templateId;\n\tif (!isFeatureEnabled || !isCreatedFromTemplate || isTemplateSetupCompleted.value) {\n\t\treturn false;\n\t}\n\n\treturn !allCredentialsFilled.value;\n});\n\nconst unsubscribe = watch(allCredentialsFilled, (newValue) => {\n\tif (newValue) {\n\t\tworkflowsStore.addToWorkflowMetadata({\n\t\t\ttemplateCredsSetupCompleted: true,\n\t\t});\n\n\t\tunsubscribe();\n\t}\n});\n\nconst handleClick = () => {\n\tuiStore.openModal(SETUP_CREDENTIALS_MODAL_KEY);\n};\n\nonBeforeUnmount(() => {\n\tuiStore.closeModal(SETUP_CREDENTIALS_MODAL_KEY);\n});\n</script>\n\n<template>\n\t<n8n-button\n\t\tv-if=\"showButton\"\n\t\t:label=\"i18n.baseText('nodeView.setupTemplate')\"\n\t\tsize=\"large\"\n\t\ticon=\"box-open\"\n\t\ttype=\"secondary\"\n\t\t@click=\"handleClick()\"\n\t/>\n</template>\n"],"names":["workflowsStore","useWorkflowsStore","nodeTypesStore","useNodeTypesStore","uiStore","useUIStore","posthogStore","usePostHog","i18n","useI18n","isTemplateSetupCompleted","computed","_b","_a","allCredentialsFilled","nodes","node","doesNodeHaveAllCredentialsFilled","showButton","isFeatureEnabled","TEMPLATE_CREDENTIAL_SETUP_EXPERIMENT","isCreatedFromTemplate","unsubscribe","watch","newValue","handleClick","SETUP_CREDENTIALS_MODAL_KEY","onBeforeUnmount"],"mappings":"+rCAUA,MAAMA,EAAiBC,IACjBC,EAAiBC,IACjBC,EAAUC,IACVC,EAAeC,IACfC,EAAOC,IAEPC,EAA2BC,EAAS,IAAM,SAC/C,MAAO,CAAC,GAACC,GAAAC,EAAAb,EAAe,WAAf,YAAAa,EAAyB,OAAzB,MAAAD,EAA+B,4BAAA,CACxC,EAEKE,EAAuBH,EAAS,IAAM,CAC3C,GAAID,EAAyB,MACrB,MAAA,GAGF,MAAAK,EAAQf,EAAe,WACzB,OAACe,EAAM,OAIJA,EAAM,MAAOC,GAASC,EAAiCf,EAAgBc,CAAI,CAAC,EAH3E,EAG2E,CACnF,EAEKE,EAAaP,EAAS,IAAM,SAC3B,MAAAQ,EAAmBb,EAAa,iBAAiBc,CAAoC,EACrFC,EAAwB,CAAC,GAACT,GAAAC,EAAAb,EAAe,WAAf,YAAAa,EAAyB,OAAzB,MAAAD,EAA+B,YAC/D,MAAI,CAACO,GAAoB,CAACE,GAAyBX,EAAyB,MACpE,GAGD,CAACI,EAAqB,KAAA,CAC7B,EAEKQ,EAAcC,EAAMT,EAAuBU,GAAa,CACzDA,IACHxB,EAAe,sBAAsB,CACpC,4BAA6B,EAAA,CAC7B,EAEWsB,IACb,CACA,EAEKG,EAAc,IAAM,CACzBrB,EAAQ,UAAUsB,CAA2B,CAAA,EAG9C,OAAAC,EAAgB,IAAM,CACrBvB,EAAQ,WAAWsB,CAA2B,CAAA,CAC9C"}
@@ -1,2 +1,2 @@
1
- import{r as M,e as k,G as D,az as K,aH as z,d as q,D as Q,b as X,l as o,M as f,O as S,u as a,S as V,T as $,p as h,I as u,m as A,F as j,a7 as G,U as g,ag as U}from"./vendor-CUQSof8H.js";import{d as Y}from"./pinia-Dh4cxKZ0.js";import{$ as J,a4 as Z,ar as ee,l as te,j as ae,cV as se,V as E,bC as x,a3 as oe,F as H,cQ as le,cW as re,cX as ne,w as ie,cY as de}from"./index-CY2ZfL2U.js";import{c as pe}from"./templateActions-DvpFnju7.js";import{a8 as ue,au as ce,_ as me}from"./n8n-DT_bOwuZ.js";import{T as fe}from"./TemplatesView-DuT3R1EI.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BiGWdRh4.js";import"./lodash-es-BFdF4Er8.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-C0ZgbPvs.js";import"./vue-i18n-CG6eDDlD.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-wY6jAr7b.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-DOxvr88t.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const ye=Y("setupTemplate",()=>{const l=M(""),e=M(!0),d=M(!1),c=J(),y=Z(),i=ee(),w=te(),N=ae(),r=k(()=>l.value?c.getFullTemplateById(l.value):null),P=k(()=>{var s;return((s=r.value)==null?void 0:s.workflow.nodes)??[]}),{appCredentials:R,credentialOverrides:b,credentialUsages:t,credentialsByKey:n,nodesRequiringCredentialsSorted:m,numFilledCredentials:I,selectedCredentialIdByKey:T,setSelectedCredentialId:p,unsetSelectedCredential:F}=se(P),v=s=>{l.value=s},O=new Set(["httpBasicAuth","httpCustomAuth","httpDigestAuth","httpHeaderAuth","oAuth1Api","oAuth2Api","httpQueryAuth"]),W=()=>{for(const s of t.value){if(O.has(s.credentialType))continue;const _=i.getCredentialsByType(s.credentialType);_.length===1&&(T.value[s.key]=_[0].id)}},B=async()=>{r.value||!l.value||(await c.fetchTemplateById(l.value),W())};return{credentialsByKey:n,isLoading:e,isSaving:d,appCredentials:R,nodesRequiringCredentialsSorted:m,template:r,credentialUsages:t,selectedCredentialIdByKey:T,credentialOverrides:b,numFilledCredentials:I,createWorkflow:async s=>{const{router:_}=s,C=H();if(r.value)try{d.value=!0;const L=await pe({template:r.value,credentialOverrides:b.value,rootStore:w,workflowsStore:N,nodeTypeProvider:y});C.track("User closed cred setup",{completed:!0,creds_filled:I.value,creds_needed:t.value.length,workflow_id:L.id}),C.track("User inserted workflow template",{source:"workflow",template_id:x(l.value),wf_template_repo_session_id:c.currentSessionId},{withPostHog:!0}),C.track("User saved new workflow from template",{template_id:x(l.value),workflow_id:L.id,wf_template_repo_session_id:c.currentSessionId}),await _.replace({name:E.WORKFLOW,params:{name:L.id}})}finally{d.value=!1}},skipSetup:async({router:s})=>{const _=oe(),C=H();await _.run("templatesWorkflowView.openWorkflow",{source:"workflow",template_id:l.value,wf_template_repo_session_id:c.currentSessionId}),C.track("User closed cred setup",{completed:!1,creds_filled:0,creds_needed:t.value.length,workflow_id:null}),await s.replace({name:E.TEMPLATE_IMPORT,params:{id:l.value}})},init:async()=>{e.value=!0;try{T.value={},await Promise.all([i.fetchAllCredentials(),i.fetchCredentialTypes(!1),y.loadNodeTypesIfNotLoaded(),B()]),W()}finally{e.value=!1}},loadTemplateIfNeeded:B,setInitialCredentialSelection:W,setTemplateId:v,setSelectedCredentialId:p,unsetSelectedCredential:F}}),we={key:1},ve=D({__name:"SetupWorkflowFromTemplateView",setup(l){const e=ye(),d=ie(),c=le(),y=K(),i=z(),w=k(()=>Array.isArray(y.params.id)?y.params.id[0]:y.params.id),N=k(()=>{var t;return((t=e.template)==null?void 0:t.name)??"unknown"}),r=k(()=>!e.isLoading),P=k(()=>i.resolve({name:E.TEMPLATE_IMPORT,params:{id:w.value}}).fullPath);q(w,async t=>{e.setTemplateId(t),await e.loadTemplateIfNeeded()});const R=async t=>{t.preventDefault(),await e.skipSetup({router:i})},b=async()=>!e.template?!1:e.credentialUsages.length===0?(await e.skipSetup({router:i}),!0):!1;return e.setTemplateId(w.value),Q(async()=>{c.isFeatureEnabled(re)||i.replace({name:E.TEMPLATE_IMPORT,params:{id:w.value}})}),X(async()=>{await e.init(),await b()}),(t,n)=>{const m=U("n8n-loading"),I=U("n8n-button"),T=U("n8n-tooltip");return o(),f(fe,{"go-back-enabled":!0},{header:S(()=>[r.value?(o(),f(a(ue),{key:0,tag:"h1",size:"2xlarge"},{default:S(()=>[V($(a(d).baseText("templateSetup.title",{interpolate:{name:N.value}})),1)]),_:1})):(o(),f(m,{key:1,variant:"h1"}))]),content:S(()=>[h("div",{class:u(t.$style.grid)},[h("div",{class:u(t.$style.notice),"data-test-id":"info-callout"},[r.value?(o(),f(ne,{key:0,"app-credentials":a(e).appCredentials},null,8,["app-credentials"])):(o(),f(m,{key:1,variant:"p"}))],2),h("div",null,[r.value?(o(),A("ol",{key:0,class:u(t.$style.appCredentialsContainer)},[(o(!0),A(j,null,G(a(e).credentialUsages,(p,F)=>(o(),f(de,{key:p.key,class:u(t.$style.appCredential),order:F+1,credentials:p,"selected-credential-id":a(e).selectedCredentialIdByKey[p.key],onCredentialSelected:n[0]||(n[0]=v=>a(e).setSelectedCredentialId(v.credentialUsageKey,v.credentialId)),onCredentialDeselected:n[1]||(n[1]=v=>a(e).unsetSelectedCredential(v.credentialUsageKey))},null,8,["class","order","credentials","selected-credential-id"]))),128))],2)):(o(),A("div",{key:1,class:u(t.$style.appCredentialsContainer)},[g(m,{class:u(t.$style.appCredential),variant:"p",rows:3},null,8,["class"]),g(m,{class:u(t.$style.appCredential),variant:"p",rows:3},null,8,["class"])],2))]),h("div",{class:u(t.$style.actions)},[g(a(ce),{href:P.value,"new-window":!1,onClick:n[2]||(n[2]=p=>R(p))},{default:S(()=>[V($(a(d).baseText("templateSetup.skip")),1)]),_:1},8,["href"]),r.value?(o(),f(T,{key:0,content:a(d).baseText("templateSetup.continue.button.fillRemaining"),disabled:a(e).numFilledCredentials>0},{default:S(()=>[g(I,{size:"large",label:a(d).baseText("templateSetup.continue.button"),disabled:a(e).isSaving||a(e).numFilledCredentials===0,"data-test-id":"continue-button",onClick:n[3]||(n[3]=p=>a(e).createWorkflow({router:a(i)}))},null,8,["label","disabled"])]),_:1},8,["content","disabled"])):(o(),A("div",we,[g(m,{variant:"button"})]))],2)],2)]),_:1})}}}),_e="_grid_6bgsx_1",ke="_notice_6bgsx_9",Te="_appCredentialsContainer_6bgsx_13",Ce="_appCredential_6bgsx_13",Se="_actions_6bgsx_24",ge={grid:_e,notice:ke,appCredentialsContainer:Te,appCredential:Ce,actions:Se},be={$style:ge},lt=me(ve,[["__cssModules",be]]);export{lt as default};
2
- //# sourceMappingURL=SetupWorkflowFromTemplateView-BDUp9JWx.js.map
1
+ import{r as M,e as k,G as D,az as K,aH as z,d as q,D as Q,b as X,l as o,M as f,O as S,u as a,S as V,T as $,p as h,I as u,m as A,F as j,a7 as G,U as g,ag as U}from"./vendor-CUQSof8H.js";import{d as Y}from"./pinia-Dh4cxKZ0.js";import{$ as J,a4 as Z,ar as ee,l as te,j as ae,cV as se,V as E,bC as x,a3 as oe,F as H,cQ as le,cW as re,cX as ne,w as ie,cY as de}from"./index-BQ6Z7VRj.js";import{c as pe}from"./templateActions-F64sfZ3n.js";import{a8 as ue,au as ce,_ as me}from"./n8n-DT_bOwuZ.js";import{T as fe}from"./TemplatesView-CuyRlzAM.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BiGWdRh4.js";import"./lodash-es-BFdF4Er8.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-C0ZgbPvs.js";import"./vue-i18n-CG6eDDlD.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-wY6jAr7b.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-DOxvr88t.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const ye=Y("setupTemplate",()=>{const l=M(""),e=M(!0),d=M(!1),c=J(),y=Z(),i=ee(),w=te(),N=ae(),r=k(()=>l.value?c.getFullTemplateById(l.value):null),P=k(()=>{var s;return((s=r.value)==null?void 0:s.workflow.nodes)??[]}),{appCredentials:R,credentialOverrides:b,credentialUsages:t,credentialsByKey:n,nodesRequiringCredentialsSorted:m,numFilledCredentials:I,selectedCredentialIdByKey:T,setSelectedCredentialId:p,unsetSelectedCredential:F}=se(P),v=s=>{l.value=s},O=new Set(["httpBasicAuth","httpCustomAuth","httpDigestAuth","httpHeaderAuth","oAuth1Api","oAuth2Api","httpQueryAuth"]),W=()=>{for(const s of t.value){if(O.has(s.credentialType))continue;const _=i.getCredentialsByType(s.credentialType);_.length===1&&(T.value[s.key]=_[0].id)}},B=async()=>{r.value||!l.value||(await c.fetchTemplateById(l.value),W())};return{credentialsByKey:n,isLoading:e,isSaving:d,appCredentials:R,nodesRequiringCredentialsSorted:m,template:r,credentialUsages:t,selectedCredentialIdByKey:T,credentialOverrides:b,numFilledCredentials:I,createWorkflow:async s=>{const{router:_}=s,C=H();if(r.value)try{d.value=!0;const L=await pe({template:r.value,credentialOverrides:b.value,rootStore:w,workflowsStore:N,nodeTypeProvider:y});C.track("User closed cred setup",{completed:!0,creds_filled:I.value,creds_needed:t.value.length,workflow_id:L.id}),C.track("User inserted workflow template",{source:"workflow",template_id:x(l.value),wf_template_repo_session_id:c.currentSessionId},{withPostHog:!0}),C.track("User saved new workflow from template",{template_id:x(l.value),workflow_id:L.id,wf_template_repo_session_id:c.currentSessionId}),await _.replace({name:E.WORKFLOW,params:{name:L.id}})}finally{d.value=!1}},skipSetup:async({router:s})=>{const _=oe(),C=H();await _.run("templatesWorkflowView.openWorkflow",{source:"workflow",template_id:l.value,wf_template_repo_session_id:c.currentSessionId}),C.track("User closed cred setup",{completed:!1,creds_filled:0,creds_needed:t.value.length,workflow_id:null}),await s.replace({name:E.TEMPLATE_IMPORT,params:{id:l.value}})},init:async()=>{e.value=!0;try{T.value={},await Promise.all([i.fetchAllCredentials(),i.fetchCredentialTypes(!1),y.loadNodeTypesIfNotLoaded(),B()]),W()}finally{e.value=!1}},loadTemplateIfNeeded:B,setInitialCredentialSelection:W,setTemplateId:v,setSelectedCredentialId:p,unsetSelectedCredential:F}}),we={key:1},ve=D({__name:"SetupWorkflowFromTemplateView",setup(l){const e=ye(),d=ie(),c=le(),y=K(),i=z(),w=k(()=>Array.isArray(y.params.id)?y.params.id[0]:y.params.id),N=k(()=>{var t;return((t=e.template)==null?void 0:t.name)??"unknown"}),r=k(()=>!e.isLoading),P=k(()=>i.resolve({name:E.TEMPLATE_IMPORT,params:{id:w.value}}).fullPath);q(w,async t=>{e.setTemplateId(t),await e.loadTemplateIfNeeded()});const R=async t=>{t.preventDefault(),await e.skipSetup({router:i})},b=async()=>!e.template?!1:e.credentialUsages.length===0?(await e.skipSetup({router:i}),!0):!1;return e.setTemplateId(w.value),Q(async()=>{c.isFeatureEnabled(re)||i.replace({name:E.TEMPLATE_IMPORT,params:{id:w.value}})}),X(async()=>{await e.init(),await b()}),(t,n)=>{const m=U("n8n-loading"),I=U("n8n-button"),T=U("n8n-tooltip");return o(),f(fe,{"go-back-enabled":!0},{header:S(()=>[r.value?(o(),f(a(ue),{key:0,tag:"h1",size:"2xlarge"},{default:S(()=>[V($(a(d).baseText("templateSetup.title",{interpolate:{name:N.value}})),1)]),_:1})):(o(),f(m,{key:1,variant:"h1"}))]),content:S(()=>[h("div",{class:u(t.$style.grid)},[h("div",{class:u(t.$style.notice),"data-test-id":"info-callout"},[r.value?(o(),f(ne,{key:0,"app-credentials":a(e).appCredentials},null,8,["app-credentials"])):(o(),f(m,{key:1,variant:"p"}))],2),h("div",null,[r.value?(o(),A("ol",{key:0,class:u(t.$style.appCredentialsContainer)},[(o(!0),A(j,null,G(a(e).credentialUsages,(p,F)=>(o(),f(de,{key:p.key,class:u(t.$style.appCredential),order:F+1,credentials:p,"selected-credential-id":a(e).selectedCredentialIdByKey[p.key],onCredentialSelected:n[0]||(n[0]=v=>a(e).setSelectedCredentialId(v.credentialUsageKey,v.credentialId)),onCredentialDeselected:n[1]||(n[1]=v=>a(e).unsetSelectedCredential(v.credentialUsageKey))},null,8,["class","order","credentials","selected-credential-id"]))),128))],2)):(o(),A("div",{key:1,class:u(t.$style.appCredentialsContainer)},[g(m,{class:u(t.$style.appCredential),variant:"p",rows:3},null,8,["class"]),g(m,{class:u(t.$style.appCredential),variant:"p",rows:3},null,8,["class"])],2))]),h("div",{class:u(t.$style.actions)},[g(a(ce),{href:P.value,"new-window":!1,onClick:n[2]||(n[2]=p=>R(p))},{default:S(()=>[V($(a(d).baseText("templateSetup.skip")),1)]),_:1},8,["href"]),r.value?(o(),f(T,{key:0,content:a(d).baseText("templateSetup.continue.button.fillRemaining"),disabled:a(e).numFilledCredentials>0},{default:S(()=>[g(I,{size:"large",label:a(d).baseText("templateSetup.continue.button"),disabled:a(e).isSaving||a(e).numFilledCredentials===0,"data-test-id":"continue-button",onClick:n[3]||(n[3]=p=>a(e).createWorkflow({router:a(i)}))},null,8,["label","disabled"])]),_:1},8,["content","disabled"])):(o(),A("div",we,[g(m,{variant:"button"})]))],2)],2)]),_:1})}}}),_e="_grid_6bgsx_1",ke="_notice_6bgsx_9",Te="_appCredentialsContainer_6bgsx_13",Ce="_appCredential_6bgsx_13",Se="_actions_6bgsx_24",ge={grid:_e,notice:ke,appCredentialsContainer:Te,appCredential:Ce,actions:Se},be={$style:ge},lt=me(ve,[["__cssModules",be]]);export{lt as default};
2
+ //# sourceMappingURL=SetupWorkflowFromTemplateView-C2E8A8g4.js.map