n8n-editor-ui 1.47.0 → 1.47.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 (160) hide show
  1. package/.turbo/turbo-build.log +78 -78
  2. package/dist/assets/{AuthView-BgFWzBDm.js → AuthView-CMxdNKZJ.js} +2 -2
  3. package/dist/assets/{AuthView-BgFWzBDm.js.map → AuthView-CMxdNKZJ.js.map} +1 -1
  4. package/dist/assets/{CanvasControls-m_3acPPd.js → CanvasControls-3FMjwMqA.js} +2 -2
  5. package/dist/assets/{CanvasControls-m_3acPPd.js.map → CanvasControls-3FMjwMqA.js.map} +1 -1
  6. package/dist/assets/{ChangePasswordView-CN6JWR-N.js → ChangePasswordView-_NkkcUVb.js} +2 -2
  7. package/dist/assets/{ChangePasswordView-CN6JWR-N.js.map → ChangePasswordView-_NkkcUVb.js.map} +1 -1
  8. package/dist/assets/{CollectionParameter-DHmcKhO-.js → CollectionParameter-BXMOfisf.js} +2 -2
  9. package/dist/assets/CollectionParameter-BXMOfisf.js.map +1 -0
  10. package/dist/assets/{CredentialsView-D9TXjOnK.js → CredentialsView-B2UF3tK_.js} +2 -2
  11. package/dist/assets/{CredentialsView-D9TXjOnK.js.map → CredentialsView-B2UF3tK_.js.map} +1 -1
  12. package/dist/assets/{ErrorView-CYag8fsg.js → ErrorView-B_lpOlen.js} +2 -2
  13. package/dist/assets/{ErrorView-CYag8fsg.js.map → ErrorView-B_lpOlen.js.map} +1 -1
  14. package/dist/assets/{ExecutionsFilter-Cf35yNfd.js → ExecutionsFilter-dNFZor7l.js} +2 -2
  15. package/dist/assets/{ExecutionsFilter-Cf35yNfd.js.map → ExecutionsFilter-dNFZor7l.js.map} +1 -1
  16. package/dist/assets/{ExecutionsView-ztrgLYNP.js → ExecutionsView-BYe-KERG.js} +2 -2
  17. package/dist/assets/{ExecutionsView-ztrgLYNP.js.map → ExecutionsView-BYe-KERG.js.map} +1 -1
  18. package/dist/assets/{ForgotMyPasswordView-C-0yB-bx.js → ForgotMyPasswordView-D97J06wc.js} +2 -2
  19. package/dist/assets/{ForgotMyPasswordView-C-0yB-bx.js.map → ForgotMyPasswordView-D97J06wc.js.map} +1 -1
  20. package/dist/assets/MainHeader-CT4nF2mY.js +2 -0
  21. package/dist/assets/{MainHeader-CMxbwL4C.js.map → MainHeader-CT4nF2mY.js.map} +1 -1
  22. package/dist/assets/{MainSidebar-BuwaBgG9.js → MainSidebar-CTg5wPzP.js} +2 -2
  23. package/dist/assets/{MainSidebar-BuwaBgG9.js.map → MainSidebar-CTg5wPzP.js.map} +1 -1
  24. package/dist/assets/{NodeCreation-B7Uimsok.js → NodeCreation-BF_L2-99.js} +3 -3
  25. package/dist/assets/{NodeCreation-B7Uimsok.js.map → NodeCreation-BF_L2-99.js.map} +1 -1
  26. package/dist/assets/{NodeCreator-IRjqf3_R.js → NodeCreator-B_yCtSu6.js} +2 -2
  27. package/dist/assets/{NodeCreator-IRjqf3_R.js.map → NodeCreator-B_yCtSu6.js.map} +1 -1
  28. package/dist/assets/{NodeDetailsView-CSnjluIR.js → NodeDetailsView-ggolOsHM.js} +4 -4
  29. package/dist/assets/{NodeDetailsView-CSnjluIR.js.map → NodeDetailsView-ggolOsHM.js.map} +1 -1
  30. package/dist/assets/{NodeView-DMzj-gox.css → NodeView--67hs6V6.css} +1 -1
  31. package/dist/assets/NodeView-B2MlTl6g.js +3 -0
  32. package/dist/assets/NodeView-B2MlTl6g.js.map +1 -0
  33. package/dist/assets/{NodeView.v2-DyU_S0rY.js → NodeView.v2-D_CKj9CS.js} +3 -3
  34. package/dist/assets/{NodeView.v2-DyU_S0rY.js.map → NodeView.v2-D_CKj9CS.js.map} +1 -1
  35. package/dist/assets/{ProjectCardBadge.vue_vue_type_script_setup_true_lang-C1N0EZCM.js → ProjectCardBadge.vue_vue_type_script_setup_true_lang-DdHOM703.js} +2 -2
  36. package/dist/assets/{ProjectCardBadge.vue_vue_type_script_setup_true_lang-C1N0EZCM.js.map → ProjectCardBadge.vue_vue_type_script_setup_true_lang-DdHOM703.js.map} +1 -1
  37. package/dist/assets/{ProjectSettings-CbNlX27g.js → ProjectSettings-DpJesEZX.js} +2 -2
  38. package/dist/assets/{ProjectSettings-CbNlX27g.js.map → ProjectSettings-DpJesEZX.js.map} +1 -1
  39. package/dist/assets/{ProjectTabs-Cx2VWeba.js → ProjectTabs-D7nNxtFO.js} +2 -2
  40. package/dist/assets/{ProjectTabs-Cx2VWeba.js.map → ProjectTabs-D7nNxtFO.js.map} +1 -1
  41. package/dist/assets/{PushConnectionTracker-C_r8Zv-p.js → PushConnectionTracker-YJuy57g2.js} +2 -2
  42. package/dist/assets/{PushConnectionTracker-C_r8Zv-p.js.map → PushConnectionTracker-YJuy57g2.js.map} +1 -1
  43. package/dist/assets/{ResourcesListLayout-CKSHiUAP.js → ResourcesListLayout-mZ4ijKRB.js} +2 -2
  44. package/dist/assets/{ResourcesListLayout-CKSHiUAP.js.map → ResourcesListLayout-mZ4ijKRB.js.map} +1 -1
  45. package/dist/assets/{RunDataAi-BVqsN7UN.js → RunDataAi-D0m0Vg_p.js} +2 -2
  46. package/dist/assets/{RunDataAi-BVqsN7UN.js.map → RunDataAi-D0m0Vg_p.js.map} +1 -1
  47. package/dist/assets/{RunDataJson-6Yfwd78r.js → RunDataJson-DkHNIqVj.js} +3 -3
  48. package/dist/assets/{RunDataJson-6Yfwd78r.js.map → RunDataJson-DkHNIqVj.js.map} +1 -1
  49. package/dist/assets/{RunDataJsonActions-5ig3g4km.js → RunDataJsonActions-Cgxcpw8t.js} +2 -2
  50. package/dist/assets/{RunDataJsonActions-5ig3g4km.js.map → RunDataJsonActions-Cgxcpw8t.js.map} +1 -1
  51. package/dist/assets/{RunDataSchema-CrW957BW.js → RunDataSchema-C6aZoC0a.js} +3 -3
  52. package/dist/assets/{RunDataSchema-CrW957BW.js.map → RunDataSchema-C6aZoC0a.js.map} +1 -1
  53. package/dist/assets/{RunDataSearch-BrIWOZXO.js → RunDataSearch-D2CDg21N.js} +2 -2
  54. package/dist/assets/{RunDataSearch-BrIWOZXO.js.map → RunDataSearch-D2CDg21N.js.map} +1 -1
  55. package/dist/assets/RunDataTable-D597NRFD.js +2 -0
  56. package/dist/assets/{RunDataTable-B01U16vv.js.map → RunDataTable-D597NRFD.js.map} +1 -1
  57. package/dist/assets/{SamlOnboarding-CfbBlTNm.js → SamlOnboarding-Me669myi.js} +2 -2
  58. package/dist/assets/{SamlOnboarding-CfbBlTNm.js.map → SamlOnboarding-Me669myi.js.map} +1 -1
  59. package/dist/assets/{SettingsApiView-CuliNEKo.js → SettingsApiView-DV8pIHDw.js} +2 -2
  60. package/dist/assets/{SettingsApiView-CuliNEKo.js.map → SettingsApiView-DV8pIHDw.js.map} +1 -1
  61. package/dist/assets/{SettingsCommunityNodesView-CeY4uqH-.js → SettingsCommunityNodesView-D_gtSdk3.js} +2 -2
  62. package/dist/assets/{SettingsCommunityNodesView-CeY4uqH-.js.map → SettingsCommunityNodesView-D_gtSdk3.js.map} +1 -1
  63. package/dist/assets/{SettingsExternalSecrets-CE7ObFx_.js → SettingsExternalSecrets-xprYKjAW.js} +2 -2
  64. package/dist/assets/{SettingsExternalSecrets-CE7ObFx_.js.map → SettingsExternalSecrets-xprYKjAW.js.map} +1 -1
  65. package/dist/assets/{SettingsFakeDoorView-DQqNf_Q9.js → SettingsFakeDoorView-CKaSOYh5.js} +2 -2
  66. package/dist/assets/{SettingsFakeDoorView-DQqNf_Q9.js.map → SettingsFakeDoorView-CKaSOYh5.js.map} +1 -1
  67. package/dist/assets/{SettingsLdapView-9hy5C87y.js → SettingsLdapView-BBCv2tmk.js} +2 -2
  68. package/dist/assets/{SettingsLdapView-9hy5C87y.js.map → SettingsLdapView-BBCv2tmk.js.map} +1 -1
  69. package/dist/assets/{SettingsLogStreamingView-Cc0h5DhT.js → SettingsLogStreamingView-HRIp8kyL.js} +2 -2
  70. package/dist/assets/{SettingsLogStreamingView-Cc0h5DhT.js.map → SettingsLogStreamingView-HRIp8kyL.js.map} +1 -1
  71. package/dist/assets/{SettingsPersonalView-Cs82ezMX.js → SettingsPersonalView-CsUb3SvK.js} +2 -2
  72. package/dist/assets/{SettingsPersonalView-Cs82ezMX.js.map → SettingsPersonalView-CsUb3SvK.js.map} +1 -1
  73. package/dist/assets/{SettingsSourceControl-Dr7R-QpH.js → SettingsSourceControl-BkPpVGsk.js} +2 -2
  74. package/dist/assets/{SettingsSourceControl-Dr7R-QpH.js.map → SettingsSourceControl-BkPpVGsk.js.map} +1 -1
  75. package/dist/assets/{SettingsSso-Di6lHXV2.js → SettingsSso-BueUV3RH.js} +2 -2
  76. package/dist/assets/{SettingsSso-Di6lHXV2.js.map → SettingsSso-BueUV3RH.js.map} +1 -1
  77. package/dist/assets/{SettingsUsageAndPlan-g86Q7EQY.js → SettingsUsageAndPlan-DzDC9m54.js} +2 -2
  78. package/dist/assets/{SettingsUsageAndPlan-g86Q7EQY.js.map → SettingsUsageAndPlan-DzDC9m54.js.map} +1 -1
  79. package/dist/assets/{SettingsUsersView-dOWjUJTW.js → SettingsUsersView-CTd5MQLw.js} +2 -2
  80. package/dist/assets/{SettingsUsersView-dOWjUJTW.js.map → SettingsUsersView-CTd5MQLw.js.map} +1 -1
  81. package/dist/assets/{SettingsView-DQ0hQWFt.js → SettingsView-DMxqsNh0.js} +2 -2
  82. package/dist/assets/{SettingsView-DQ0hQWFt.js.map → SettingsView-DMxqsNh0.js.map} +1 -1
  83. package/dist/assets/{SetupView-CqT8d0D8.js → SetupView-tkyttChl.js} +2 -2
  84. package/dist/assets/{SetupView-CqT8d0D8.js.map → SetupView-tkyttChl.js.map} +1 -1
  85. package/dist/assets/{SetupWorkflowCredentialsButton-BR-ObOqw.js → SetupWorkflowCredentialsButton-B3HZvKQp.js} +2 -2
  86. package/dist/assets/{SetupWorkflowCredentialsButton-BR-ObOqw.js.map → SetupWorkflowCredentialsButton-B3HZvKQp.js.map} +1 -1
  87. package/dist/assets/{SetupWorkflowFromTemplateView-DHHtk6_-.js → SetupWorkflowFromTemplateView-DL3b-TZS.js} +2 -2
  88. package/dist/assets/{SetupWorkflowFromTemplateView-DHHtk6_-.js.map → SetupWorkflowFromTemplateView-DL3b-TZS.js.map} +1 -1
  89. package/dist/assets/{SigninView-2eLLF8DU.js → SigninView-BPLGsvzz.js} +2 -2
  90. package/dist/assets/{SigninView-2eLLF8DU.js.map → SigninView-BPLGsvzz.js.map} +1 -1
  91. package/dist/assets/{SignoutView-BQyCyjsK.js → SignoutView-BySf9D7k.js} +2 -2
  92. package/dist/assets/{SignoutView-BQyCyjsK.js.map → SignoutView-BySf9D7k.js.map} +1 -1
  93. package/dist/assets/{SignupView-ByYEkUpW.js → SignupView-EU3JWt4T.js} +2 -2
  94. package/dist/assets/{SignupView-ByYEkUpW.js.map → SignupView-EU3JWt4T.js.map} +1 -1
  95. package/dist/assets/{TemplateDetails-I6WMCxGm.js → TemplateDetails-Cemx-ozB.js} +2 -2
  96. package/dist/assets/{TemplateDetails-I6WMCxGm.js.map → TemplateDetails-Cemx-ozB.js.map} +1 -1
  97. package/dist/assets/{TemplateList-DRf0Cbhg.js → TemplateList-h3b91b7e.js} +2 -2
  98. package/dist/assets/{TemplateList-DRf0Cbhg.js.map → TemplateList-h3b91b7e.js.map} +1 -1
  99. package/dist/assets/{TemplatesCollectionView-BYkDe49v.js → TemplatesCollectionView-aBX3f7Pp.js} +2 -2
  100. package/dist/assets/{TemplatesCollectionView-BYkDe49v.js.map → TemplatesCollectionView-aBX3f7Pp.js.map} +1 -1
  101. package/dist/assets/{TemplatesSearchView-CiZ7aZcy.js → TemplatesSearchView-DyoC9WUR.js} +2 -2
  102. package/dist/assets/{TemplatesSearchView-CiZ7aZcy.js.map → TemplatesSearchView-DyoC9WUR.js.map} +1 -1
  103. package/dist/assets/{TemplatesView-zULLoEwu.js → TemplatesView-GQmC_sY8.js} +2 -2
  104. package/dist/assets/{TemplatesView-zULLoEwu.js.map → TemplatesView-GQmC_sY8.js.map} +1 -1
  105. package/dist/assets/{TemplatesWorkflowView-DptRLbdX.js → TemplatesWorkflowView-C-0pXdDh.js} +2 -2
  106. package/dist/assets/{TemplatesWorkflowView-DptRLbdX.js.map → TemplatesWorkflowView-C-0pXdDh.js.map} +1 -1
  107. package/dist/assets/{VariablesView-NcNcsjHY.js → VariablesView-BO5fdkwt.js} +2 -2
  108. package/dist/assets/{VariablesView-NcNcsjHY.js.map → VariablesView-BO5fdkwt.js.map} +1 -1
  109. package/dist/assets/{WorkerView-dtJzfgCM.js → WorkerView-C3Rdbsfq.js} +2 -2
  110. package/dist/assets/{WorkerView-dtJzfgCM.js.map → WorkerView-C3Rdbsfq.js.map} +1 -1
  111. package/dist/assets/{WorkflowActivator-D6Zad1X2.js → WorkflowActivator-DQXSsw0V.js} +2 -2
  112. package/dist/assets/{WorkflowActivator-D6Zad1X2.js.map → WorkflowActivator-DQXSsw0V.js.map} +1 -1
  113. package/dist/assets/{WorkflowExecutionsInfoAccordion-C86A1CHv.js → WorkflowExecutionsInfoAccordion-DJPF47om.js} +2 -2
  114. package/dist/assets/{WorkflowExecutionsInfoAccordion-C86A1CHv.js.map → WorkflowExecutionsInfoAccordion-DJPF47om.js.map} +1 -1
  115. package/dist/assets/{WorkflowExecutionsLandingPage-DAfHDMth.js → WorkflowExecutionsLandingPage-DoSsHWxH.js} +2 -2
  116. package/dist/assets/{WorkflowExecutionsLandingPage-DAfHDMth.js.map → WorkflowExecutionsLandingPage-DoSsHWxH.js.map} +1 -1
  117. package/dist/assets/{WorkflowExecutionsPreview-C_EBlNX6.js → WorkflowExecutionsPreview-Dt23N5A4.js} +2 -2
  118. package/dist/assets/WorkflowExecutionsPreview-Dt23N5A4.js.map +1 -0
  119. package/dist/assets/WorkflowExecutionsView-CpAIVxYQ.js +2 -0
  120. package/dist/assets/WorkflowExecutionsView-CpAIVxYQ.js.map +1 -0
  121. package/dist/assets/{WorkflowHistory-DkdQ1koF.js → WorkflowHistory-D1-E_J_s.js} +2 -2
  122. package/dist/assets/{WorkflowHistory-DkdQ1koF.js.map → WorkflowHistory-D1-E_J_s.js.map} +1 -1
  123. package/dist/assets/{WorkflowOnboardingView-BPMBW_hz.js → WorkflowOnboardingView-fzAZuVh5.js} +2 -2
  124. package/dist/assets/{WorkflowOnboardingView-BPMBW_hz.js.map → WorkflowOnboardingView-fzAZuVh5.js.map} +1 -1
  125. package/dist/assets/{WorkflowPreview-CLzyAzmJ.js → WorkflowPreview-BkL2jDRm.js} +2 -2
  126. package/dist/assets/{WorkflowPreview-CLzyAzmJ.js.map → WorkflowPreview-BkL2jDRm.js.map} +1 -1
  127. package/dist/assets/{WorkflowsView-CzJx_-P5.js → WorkflowsView-rbygROmM.js} +2 -2
  128. package/dist/assets/{WorkflowsView-CzJx_-P5.js.map → WorkflowsView-rbygROmM.js.map} +1 -1
  129. package/dist/assets/{cloud-CRMEbZfJ.js → cloud-B90x0-JC.js} +2 -2
  130. package/dist/assets/{cloud-CRMEbZfJ.js.map → cloud-B90x0-JC.js.map} +1 -1
  131. package/dist/assets/{collaboration.store-Co5wlk8y.js → collaboration.store-ElxCV91F.js} +2 -2
  132. package/dist/assets/{collaboration.store-Co5wlk8y.js.map → collaboration.store-ElxCV91F.js.map} +1 -1
  133. package/dist/assets/index-BE0Xl-jy.js +341 -0
  134. package/dist/assets/index-BE0Xl-jy.js.map +1 -0
  135. package/dist/assets/{nodeCreator.store-CTXKjjQB.js → nodeCreator.store-Q1T99YCl.js} +2 -2
  136. package/dist/assets/{nodeCreator.store-CTXKjjQB.js.map → nodeCreator.store-Q1T99YCl.js.map} +1 -1
  137. package/dist/assets/{templateActions-CIRsIG2W.js → templateActions-B7R6qRak.js} +2 -2
  138. package/dist/assets/{templateActions-CIRsIG2W.js.map → templateActions-B7R6qRak.js.map} +1 -1
  139. package/dist/assets/{useExecutionDebugging-BzC-1xF-.js → useExecutionDebugging-BJ0CgMh8.js} +2 -2
  140. package/dist/assets/{useExecutionDebugging-BzC-1xF-.js.map → useExecutionDebugging-BJ0CgMh8.js.map} +1 -1
  141. package/dist/assets/{useExecutionHelpers-C2K8pfbF.js → useExecutionHelpers-D3294Pbg.js} +2 -2
  142. package/dist/assets/{useExecutionHelpers-C2K8pfbF.js.map → useExecutionHelpers-D3294Pbg.js.map} +1 -1
  143. package/dist/assets/{usePushConnection-EMXpPhl-.js → usePushConnection-CsYeEXN4.js} +2 -2
  144. package/dist/assets/{usePushConnection-EMXpPhl-.js.map → usePushConnection-CsYeEXN4.js.map} +1 -1
  145. package/dist/assets/{useUserHelpers-Bn_ZV9Jv.js → useUserHelpers-CzNhI0vP.js} +2 -2
  146. package/dist/assets/{useUserHelpers-Bn_ZV9Jv.js.map → useUserHelpers-CzNhI0vP.js.map} +1 -1
  147. package/dist/assets/{useWorkflowActivate-BwVActuc.js → useWorkflowActivate-D8iK20ua.js} +2 -2
  148. package/dist/assets/{useWorkflowActivate-BwVActuc.js.map → useWorkflowActivate-D8iK20ua.js.map} +1 -1
  149. package/dist/index.html +1 -1
  150. package/package.json +1 -1
  151. package/dist/assets/CollectionParameter-DHmcKhO-.js.map +0 -1
  152. package/dist/assets/MainHeader-CMxbwL4C.js +0 -2
  153. package/dist/assets/NodeView-C-hQ3_xD.js +0 -3
  154. package/dist/assets/NodeView-C-hQ3_xD.js.map +0 -1
  155. package/dist/assets/RunDataTable-B01U16vv.js +0 -2
  156. package/dist/assets/WorkflowExecutionsPreview-C_EBlNX6.js.map +0 -1
  157. package/dist/assets/WorkflowExecutionsView-Nm1Oo9El.js +0 -2
  158. package/dist/assets/WorkflowExecutionsView-Nm1Oo9El.js.map +0 -1
  159. package/dist/assets/index-Dtri_pSJ.js +0 -341
  160. package/dist/assets/index-Dtri_pSJ.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsSso-Di6lHXV2.js","sources":["../../src/views/SettingsSso.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, ref, onMounted } from 'vue';\nimport { useSSOStore } from '@/stores/sso.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport CopyInput from '@/components/CopyInput.vue';\nimport { useI18n } from '@/composables/useI18n';\nimport { useMessage } from '@/composables/useMessage';\nimport { useToast } from '@/composables/useToast';\nimport { useTelemetry } from '@/composables/useTelemetry';\nimport { useRootStore } from '@/stores/root.store';\n\nconst IdentityProviderSettingsType = {\n\tURL: 'url',\n\tXML: 'xml',\n};\n\nconst i18n = useI18n();\nconst telemetry = useTelemetry();\nconst rootStore = useRootStore();\nconst ssoStore = useSSOStore();\nconst uiStore = useUIStore();\nconst message = useMessage();\nconst toast = useToast();\n\nconst ssoActivatedLabel = computed(() =>\n\tssoStore.isSamlLoginEnabled\n\t\t? i18n.baseText('settings.sso.activated')\n\t\t: i18n.baseText('settings.sso.deactivated'),\n);\nconst ssoSettingsSaved = ref(false);\n\nconst redirectUrl = ref();\nconst entityId = ref();\n\nconst ipsOptions = ref([\n\t{\n\t\tlabel: i18n.baseText('settings.sso.settings.ips.options.url'),\n\t\tvalue: IdentityProviderSettingsType.URL,\n\t},\n\t{\n\t\tlabel: i18n.baseText('settings.sso.settings.ips.options.xml'),\n\t\tvalue: IdentityProviderSettingsType.XML,\n\t},\n]);\nconst ipsType = ref(IdentityProviderSettingsType.URL);\n\nconst metadataUrl = ref();\nconst metadata = ref();\n\nconst isSaveEnabled = computed(() => {\n\tif (ipsType.value === IdentityProviderSettingsType.URL) {\n\t\treturn !!metadataUrl.value && metadataUrl.value !== ssoStore.samlConfig?.metadataUrl;\n\t} else if (ipsType.value === IdentityProviderSettingsType.XML) {\n\t\treturn !!metadata.value && metadata.value !== ssoStore.samlConfig?.metadata;\n\t}\n\treturn false;\n});\n\nconst isTestEnabled = computed(() => {\n\tif (ipsType.value === IdentityProviderSettingsType.URL) {\n\t\treturn !!metadataUrl.value && ssoSettingsSaved.value;\n\t} else if (ipsType.value === IdentityProviderSettingsType.XML) {\n\t\treturn !!metadata.value && ssoSettingsSaved.value;\n\t}\n\treturn false;\n});\n\nconst getSamlConfig = async () => {\n\tconst config = await ssoStore.getSamlConfig();\n\n\tentityId.value = config?.entityID;\n\tredirectUrl.value = config?.returnUrl;\n\n\tif (config?.metadataUrl) {\n\t\tipsType.value = IdentityProviderSettingsType.URL;\n\t} else if (config?.metadata) {\n\t\tipsType.value = IdentityProviderSettingsType.XML;\n\t}\n\n\tmetadata.value = config?.metadata;\n\tmetadataUrl.value = config?.metadataUrl;\n\tssoSettingsSaved.value = !!config?.metadata;\n};\n\nconst onSave = async () => {\n\ttry {\n\t\tconst config =\n\t\t\tipsType.value === IdentityProviderSettingsType.URL\n\t\t\t\t? { metadataUrl: metadataUrl.value }\n\t\t\t\t: { metadata: metadata.value };\n\t\tawait ssoStore.saveSamlConfig(config);\n\n\t\tif (!ssoStore.isSamlLoginEnabled) {\n\t\t\tconst answer = await message.confirm(\n\t\t\t\ti18n.baseText('settings.sso.settings.save.activate.message'),\n\t\t\t\ti18n.baseText('settings.sso.settings.save.activate.title'),\n\t\t\t\t{\n\t\t\t\t\tconfirmButtonText: i18n.baseText('settings.sso.settings.save.activate.test'),\n\t\t\t\t\tcancelButtonText: i18n.baseText('settings.sso.settings.save.activate.cancel'),\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tif (answer === 'confirm') {\n\t\t\t\tawait onTest();\n\t\t\t}\n\t\t}\n\n\t\ttelemetry.track('User updated single sign on settings', {\n\t\t\tinstance_id: rootStore.instanceId,\n\t\t\tidentity_provider: ipsType.value === 'url' ? 'metadata' : 'xml',\n\t\t\tis_active: ssoStore.isSamlLoginEnabled,\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('settings.sso.settings.save.error'));\n\t\treturn;\n\t} finally {\n\t\tawait getSamlConfig();\n\t}\n};\n\nconst onTest = async () => {\n\ttry {\n\t\tconst url = await ssoStore.testSamlConfig();\n\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.open(url, '_blank');\n\t\t}\n\t} catch (error) {\n\t\ttoast.showError(error, 'error');\n\t}\n};\n\nconst goToUpgrade = () => {\n\tvoid uiStore.goToUpgrade('sso', 'upgrade-sso');\n};\n\nonMounted(async () => {\n\tif (!ssoStore.isEnterpriseSamlEnabled) {\n\t\treturn;\n\t}\n\ttry {\n\t\tawait getSamlConfig();\n\t} catch (error) {\n\t\ttoast.showError(error, 'error');\n\t}\n});\n</script>\n\n<template>\n\t<div class=\"pb-3xl\">\n\t\t<n8n-heading size=\"2xlarge\">{{ i18n.baseText('settings.sso.title') }}</n8n-heading>\n\t\t<div :class=\"$style.top\">\n\t\t\t<n8n-heading size=\"xlarge\">{{ i18n.baseText('settings.sso.subtitle') }}</n8n-heading>\n\t\t\t<n8n-tooltip\n\t\t\t\tv-if=\"ssoStore.isEnterpriseSamlEnabled\"\n\t\t\t\t:disabled=\"ssoStore.isSamlLoginEnabled || ssoSettingsSaved\"\n\t\t\t>\n\t\t\t\t<template #content>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{ i18n.baseText('settings.sso.activation.tooltip') }}\n\t\t\t\t\t</span>\n\t\t\t\t</template>\n\t\t\t\t<el-switch\n\t\t\t\t\tv-model=\"ssoStore.isSamlLoginEnabled\"\n\t\t\t\t\t:disabled=\"!ssoSettingsSaved\"\n\t\t\t\t\t:class=\"$style.switch\"\n\t\t\t\t\t:inactive-text=\"ssoActivatedLabel\"\n\t\t\t\t/>\n\t\t\t</n8n-tooltip>\n\t\t</div>\n\t\t<n8n-info-tip>\n\t\t\t{{ i18n.baseText('settings.sso.info') }}\n\t\t\t<a href=\"https://docs.n8n.io/user-management/saml/\" target=\"_blank\">\n\t\t\t\t{{ i18n.baseText('settings.sso.info.link') }}\n\t\t\t</a>\n\t\t</n8n-info-tip>\n\t\t<div v-if=\"ssoStore.isEnterpriseSamlEnabled\" data-test-id=\"sso-content-licensed\">\n\t\t\t<div :class=\"$style.group\">\n\t\t\t\t<label>{{ i18n.baseText('settings.sso.settings.redirectUrl.label') }}</label>\n\t\t\t\t<CopyInput\n\t\t\t\t\t:value=\"redirectUrl\"\n\t\t\t\t\t:copy-button-text=\"i18n.baseText('generic.clickToCopy')\"\n\t\t\t\t\t:toast-title=\"i18n.baseText('settings.sso.settings.redirectUrl.copied')\"\n\t\t\t\t/>\n\t\t\t\t<small>{{ i18n.baseText('settings.sso.settings.redirectUrl.help') }}</small>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.group\">\n\t\t\t\t<label>{{ i18n.baseText('settings.sso.settings.entityId.label') }}</label>\n\t\t\t\t<CopyInput\n\t\t\t\t\t:value=\"entityId\"\n\t\t\t\t\t:copy-button-text=\"i18n.baseText('generic.clickToCopy')\"\n\t\t\t\t\t:toast-title=\"i18n.baseText('settings.sso.settings.entityId.copied')\"\n\t\t\t\t/>\n\t\t\t\t<small>{{ i18n.baseText('settings.sso.settings.entityId.help') }}</small>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.group\">\n\t\t\t\t<label>{{ i18n.baseText('settings.sso.settings.ips.label') }}</label>\n\t\t\t\t<div class=\"mt-2xs mb-s\">\n\t\t\t\t\t<n8n-radio-buttons v-model=\"ipsType\" :options=\"ipsOptions\" />\n\t\t\t\t</div>\n\t\t\t\t<div v-show=\"ipsType === IdentityProviderSettingsType.URL\">\n\t\t\t\t\t<n8n-input\n\t\t\t\t\t\tv-model=\"metadataUrl\"\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tname=\"metadataUrl\"\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t:placeholder=\"i18n.baseText('settings.sso.settings.ips.url.placeholder')\"\n\t\t\t\t\t/>\n\t\t\t\t\t<small>{{ i18n.baseText('settings.sso.settings.ips.url.help') }}</small>\n\t\t\t\t</div>\n\t\t\t\t<div v-show=\"ipsType === IdentityProviderSettingsType.XML\">\n\t\t\t\t\t<n8n-input v-model=\"metadata\" type=\"textarea\" name=\"metadata\" :rows=\"4\" />\n\t\t\t\t\t<small>{{ i18n.baseText('settings.sso.settings.ips.xml.help') }}</small>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.buttons\">\n\t\t\t\t<n8n-button :disabled=\"!isSaveEnabled\" size=\"large\" data-test-id=\"sso-save\" @click=\"onSave\">\n\t\t\t\t\t{{ i18n.baseText('settings.sso.settings.save') }}\n\t\t\t\t</n8n-button>\n\t\t\t\t<n8n-button\n\t\t\t\t\t:disabled=\"!isTestEnabled\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\tdata-test-id=\"sso-test\"\n\t\t\t\t\t@click=\"onTest\"\n\t\t\t\t>\n\t\t\t\t\t{{ i18n.baseText('settings.sso.settings.test') }}\n\t\t\t\t</n8n-button>\n\t\t\t</div>\n\t\t\t<footer :class=\"$style.footer\">\n\t\t\t\t{{ i18n.baseText('settings.sso.settings.footer.hint') }}\n\t\t\t</footer>\n\t\t</div>\n\t\t<n8n-action-box\n\t\t\tv-else\n\t\t\tdata-test-id=\"sso-content-unlicensed\"\n\t\t\t:class=\"$style.actionBox\"\n\t\t\t:description=\"i18n.baseText('settings.sso.actionBox.description')\"\n\t\t\t:button-text=\"i18n.baseText('settings.sso.actionBox.buttonText')\"\n\t\t\t@click:button=\"goToUpgrade\"\n\t\t>\n\t\t\t<template #heading>\n\t\t\t\t<span>{{ i18n.baseText('settings.sso.actionBox.title') }}</span>\n\t\t\t</template>\n\t\t</n8n-action-box>\n\t</div>\n</template>\n\n<style lang=\"scss\" module>\n.top {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: var(--spacing-2xl) 0 var(--spacing-xl);\n}\n\n.switch {\n\tspan {\n\t\tfont-size: var(--font-size-2xs);\n\t\tfont-weight: var(--font-weight-bold);\n\t\tcolor: var(--color-text-light);\n\t}\n}\n\n.buttons {\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tpadding: var(--spacing-2xl) 0 var(--spacing-2xs);\n\n\tbutton {\n\t\tmargin: 0 var(--spacing-s) 0 0;\n\t}\n}\n\n.group {\n\tpadding: var(--spacing-xl) 0 0;\n\n\t> label {\n\t\tdisplay: inline-block;\n\t\tfont-size: var(--font-size-s);\n\t\tfont-weight: var(--font-weight-bold);\n\t\tpadding: 0 0 var(--spacing-2xs);\n\t}\n\n\tsmall {\n\t\tdisplay: block;\n\t\tpadding: var(--spacing-2xs) 0 0;\n\t\tfont-size: var(--font-size-2xs);\n\t\tcolor: var(--color-text-base);\n\t}\n}\n\n.actionBox {\n\tmargin: var(--spacing-2xl) 0 0;\n}\n\n.footer {\n\tcolor: var(--color-text-base);\n\tfont-size: var(--font-size-2xs);\n}\n</style>\n"],"names":["IdentityProviderSettingsType","i18n","useI18n","telemetry","useTelemetry","rootStore","useRootStore","ssoStore","useSSOStore","uiStore","useUIStore","message","useMessage","toast","useToast","ssoActivatedLabel","computed","ssoSettingsSaved","ref","redirectUrl","entityId","ipsOptions","ipsType","metadataUrl","metadata","isSaveEnabled","_a","_b","isTestEnabled","getSamlConfig","config","onSave","onTest","error","url","goToUpgrade","onMounted"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsSso-BueUV3RH.js","sources":["../../src/views/SettingsSso.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, ref, onMounted } from 'vue';\nimport { useSSOStore } from '@/stores/sso.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport CopyInput from '@/components/CopyInput.vue';\nimport { useI18n } from '@/composables/useI18n';\nimport { useMessage } from '@/composables/useMessage';\nimport { useToast } from '@/composables/useToast';\nimport { useTelemetry } from '@/composables/useTelemetry';\nimport { useRootStore } from '@/stores/root.store';\n\nconst IdentityProviderSettingsType = {\n\tURL: 'url',\n\tXML: 'xml',\n};\n\nconst i18n = useI18n();\nconst telemetry = useTelemetry();\nconst rootStore = useRootStore();\nconst ssoStore = useSSOStore();\nconst uiStore = useUIStore();\nconst message = useMessage();\nconst toast = useToast();\n\nconst ssoActivatedLabel = computed(() =>\n\tssoStore.isSamlLoginEnabled\n\t\t? i18n.baseText('settings.sso.activated')\n\t\t: i18n.baseText('settings.sso.deactivated'),\n);\nconst ssoSettingsSaved = ref(false);\n\nconst redirectUrl = ref();\nconst entityId = ref();\n\nconst ipsOptions = ref([\n\t{\n\t\tlabel: i18n.baseText('settings.sso.settings.ips.options.url'),\n\t\tvalue: IdentityProviderSettingsType.URL,\n\t},\n\t{\n\t\tlabel: i18n.baseText('settings.sso.settings.ips.options.xml'),\n\t\tvalue: IdentityProviderSettingsType.XML,\n\t},\n]);\nconst ipsType = ref(IdentityProviderSettingsType.URL);\n\nconst metadataUrl = ref();\nconst metadata = ref();\n\nconst isSaveEnabled = computed(() => {\n\tif (ipsType.value === IdentityProviderSettingsType.URL) {\n\t\treturn !!metadataUrl.value && metadataUrl.value !== ssoStore.samlConfig?.metadataUrl;\n\t} else if (ipsType.value === IdentityProviderSettingsType.XML) {\n\t\treturn !!metadata.value && metadata.value !== ssoStore.samlConfig?.metadata;\n\t}\n\treturn false;\n});\n\nconst isTestEnabled = computed(() => {\n\tif (ipsType.value === IdentityProviderSettingsType.URL) {\n\t\treturn !!metadataUrl.value && ssoSettingsSaved.value;\n\t} else if (ipsType.value === IdentityProviderSettingsType.XML) {\n\t\treturn !!metadata.value && ssoSettingsSaved.value;\n\t}\n\treturn false;\n});\n\nconst getSamlConfig = async () => {\n\tconst config = await ssoStore.getSamlConfig();\n\n\tentityId.value = config?.entityID;\n\tredirectUrl.value = config?.returnUrl;\n\n\tif (config?.metadataUrl) {\n\t\tipsType.value = IdentityProviderSettingsType.URL;\n\t} else if (config?.metadata) {\n\t\tipsType.value = IdentityProviderSettingsType.XML;\n\t}\n\n\tmetadata.value = config?.metadata;\n\tmetadataUrl.value = config?.metadataUrl;\n\tssoSettingsSaved.value = !!config?.metadata;\n};\n\nconst onSave = async () => {\n\ttry {\n\t\tconst config =\n\t\t\tipsType.value === IdentityProviderSettingsType.URL\n\t\t\t\t? { metadataUrl: metadataUrl.value }\n\t\t\t\t: { metadata: metadata.value };\n\t\tawait ssoStore.saveSamlConfig(config);\n\n\t\tif (!ssoStore.isSamlLoginEnabled) {\n\t\t\tconst answer = await message.confirm(\n\t\t\t\ti18n.baseText('settings.sso.settings.save.activate.message'),\n\t\t\t\ti18n.baseText('settings.sso.settings.save.activate.title'),\n\t\t\t\t{\n\t\t\t\t\tconfirmButtonText: i18n.baseText('settings.sso.settings.save.activate.test'),\n\t\t\t\t\tcancelButtonText: i18n.baseText('settings.sso.settings.save.activate.cancel'),\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tif (answer === 'confirm') {\n\t\t\t\tawait onTest();\n\t\t\t}\n\t\t}\n\n\t\ttelemetry.track('User updated single sign on settings', {\n\t\t\tinstance_id: rootStore.instanceId,\n\t\t\tidentity_provider: ipsType.value === 'url' ? 'metadata' : 'xml',\n\t\t\tis_active: ssoStore.isSamlLoginEnabled,\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('settings.sso.settings.save.error'));\n\t\treturn;\n\t} finally {\n\t\tawait getSamlConfig();\n\t}\n};\n\nconst onTest = async () => {\n\ttry {\n\t\tconst url = await ssoStore.testSamlConfig();\n\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.open(url, '_blank');\n\t\t}\n\t} catch (error) {\n\t\ttoast.showError(error, 'error');\n\t}\n};\n\nconst goToUpgrade = () => {\n\tvoid uiStore.goToUpgrade('sso', 'upgrade-sso');\n};\n\nonMounted(async () => {\n\tif (!ssoStore.isEnterpriseSamlEnabled) {\n\t\treturn;\n\t}\n\ttry {\n\t\tawait getSamlConfig();\n\t} catch (error) {\n\t\ttoast.showError(error, 'error');\n\t}\n});\n</script>\n\n<template>\n\t<div class=\"pb-3xl\">\n\t\t<n8n-heading size=\"2xlarge\">{{ i18n.baseText('settings.sso.title') }}</n8n-heading>\n\t\t<div :class=\"$style.top\">\n\t\t\t<n8n-heading size=\"xlarge\">{{ i18n.baseText('settings.sso.subtitle') }}</n8n-heading>\n\t\t\t<n8n-tooltip\n\t\t\t\tv-if=\"ssoStore.isEnterpriseSamlEnabled\"\n\t\t\t\t:disabled=\"ssoStore.isSamlLoginEnabled || ssoSettingsSaved\"\n\t\t\t>\n\t\t\t\t<template #content>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{ i18n.baseText('settings.sso.activation.tooltip') }}\n\t\t\t\t\t</span>\n\t\t\t\t</template>\n\t\t\t\t<el-switch\n\t\t\t\t\tv-model=\"ssoStore.isSamlLoginEnabled\"\n\t\t\t\t\t:disabled=\"!ssoSettingsSaved\"\n\t\t\t\t\t:class=\"$style.switch\"\n\t\t\t\t\t:inactive-text=\"ssoActivatedLabel\"\n\t\t\t\t/>\n\t\t\t</n8n-tooltip>\n\t\t</div>\n\t\t<n8n-info-tip>\n\t\t\t{{ i18n.baseText('settings.sso.info') }}\n\t\t\t<a href=\"https://docs.n8n.io/user-management/saml/\" target=\"_blank\">\n\t\t\t\t{{ i18n.baseText('settings.sso.info.link') }}\n\t\t\t</a>\n\t\t</n8n-info-tip>\n\t\t<div v-if=\"ssoStore.isEnterpriseSamlEnabled\" data-test-id=\"sso-content-licensed\">\n\t\t\t<div :class=\"$style.group\">\n\t\t\t\t<label>{{ i18n.baseText('settings.sso.settings.redirectUrl.label') }}</label>\n\t\t\t\t<CopyInput\n\t\t\t\t\t:value=\"redirectUrl\"\n\t\t\t\t\t:copy-button-text=\"i18n.baseText('generic.clickToCopy')\"\n\t\t\t\t\t:toast-title=\"i18n.baseText('settings.sso.settings.redirectUrl.copied')\"\n\t\t\t\t/>\n\t\t\t\t<small>{{ i18n.baseText('settings.sso.settings.redirectUrl.help') }}</small>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.group\">\n\t\t\t\t<label>{{ i18n.baseText('settings.sso.settings.entityId.label') }}</label>\n\t\t\t\t<CopyInput\n\t\t\t\t\t:value=\"entityId\"\n\t\t\t\t\t:copy-button-text=\"i18n.baseText('generic.clickToCopy')\"\n\t\t\t\t\t:toast-title=\"i18n.baseText('settings.sso.settings.entityId.copied')\"\n\t\t\t\t/>\n\t\t\t\t<small>{{ i18n.baseText('settings.sso.settings.entityId.help') }}</small>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.group\">\n\t\t\t\t<label>{{ i18n.baseText('settings.sso.settings.ips.label') }}</label>\n\t\t\t\t<div class=\"mt-2xs mb-s\">\n\t\t\t\t\t<n8n-radio-buttons v-model=\"ipsType\" :options=\"ipsOptions\" />\n\t\t\t\t</div>\n\t\t\t\t<div v-show=\"ipsType === IdentityProviderSettingsType.URL\">\n\t\t\t\t\t<n8n-input\n\t\t\t\t\t\tv-model=\"metadataUrl\"\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tname=\"metadataUrl\"\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t:placeholder=\"i18n.baseText('settings.sso.settings.ips.url.placeholder')\"\n\t\t\t\t\t/>\n\t\t\t\t\t<small>{{ i18n.baseText('settings.sso.settings.ips.url.help') }}</small>\n\t\t\t\t</div>\n\t\t\t\t<div v-show=\"ipsType === IdentityProviderSettingsType.XML\">\n\t\t\t\t\t<n8n-input v-model=\"metadata\" type=\"textarea\" name=\"metadata\" :rows=\"4\" />\n\t\t\t\t\t<small>{{ i18n.baseText('settings.sso.settings.ips.xml.help') }}</small>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.buttons\">\n\t\t\t\t<n8n-button :disabled=\"!isSaveEnabled\" size=\"large\" data-test-id=\"sso-save\" @click=\"onSave\">\n\t\t\t\t\t{{ i18n.baseText('settings.sso.settings.save') }}\n\t\t\t\t</n8n-button>\n\t\t\t\t<n8n-button\n\t\t\t\t\t:disabled=\"!isTestEnabled\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\tdata-test-id=\"sso-test\"\n\t\t\t\t\t@click=\"onTest\"\n\t\t\t\t>\n\t\t\t\t\t{{ i18n.baseText('settings.sso.settings.test') }}\n\t\t\t\t</n8n-button>\n\t\t\t</div>\n\t\t\t<footer :class=\"$style.footer\">\n\t\t\t\t{{ i18n.baseText('settings.sso.settings.footer.hint') }}\n\t\t\t</footer>\n\t\t</div>\n\t\t<n8n-action-box\n\t\t\tv-else\n\t\t\tdata-test-id=\"sso-content-unlicensed\"\n\t\t\t:class=\"$style.actionBox\"\n\t\t\t:description=\"i18n.baseText('settings.sso.actionBox.description')\"\n\t\t\t:button-text=\"i18n.baseText('settings.sso.actionBox.buttonText')\"\n\t\t\t@click:button=\"goToUpgrade\"\n\t\t>\n\t\t\t<template #heading>\n\t\t\t\t<span>{{ i18n.baseText('settings.sso.actionBox.title') }}</span>\n\t\t\t</template>\n\t\t</n8n-action-box>\n\t</div>\n</template>\n\n<style lang=\"scss\" module>\n.top {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: var(--spacing-2xl) 0 var(--spacing-xl);\n}\n\n.switch {\n\tspan {\n\t\tfont-size: var(--font-size-2xs);\n\t\tfont-weight: var(--font-weight-bold);\n\t\tcolor: var(--color-text-light);\n\t}\n}\n\n.buttons {\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tpadding: var(--spacing-2xl) 0 var(--spacing-2xs);\n\n\tbutton {\n\t\tmargin: 0 var(--spacing-s) 0 0;\n\t}\n}\n\n.group {\n\tpadding: var(--spacing-xl) 0 0;\n\n\t> label {\n\t\tdisplay: inline-block;\n\t\tfont-size: var(--font-size-s);\n\t\tfont-weight: var(--font-weight-bold);\n\t\tpadding: 0 0 var(--spacing-2xs);\n\t}\n\n\tsmall {\n\t\tdisplay: block;\n\t\tpadding: var(--spacing-2xs) 0 0;\n\t\tfont-size: var(--font-size-2xs);\n\t\tcolor: var(--color-text-base);\n\t}\n}\n\n.actionBox {\n\tmargin: var(--spacing-2xl) 0 0;\n}\n\n.footer {\n\tcolor: var(--color-text-base);\n\tfont-size: var(--font-size-2xs);\n}\n</style>\n"],"names":["IdentityProviderSettingsType","i18n","useI18n","telemetry","useTelemetry","rootStore","useRootStore","ssoStore","useSSOStore","uiStore","useUIStore","message","useMessage","toast","useToast","ssoActivatedLabel","computed","ssoSettingsSaved","ref","redirectUrl","entityId","ipsOptions","ipsType","metadataUrl","metadata","isSaveEnabled","_a","_b","isTestEnabled","getSamlConfig","config","onSave","onTest","error","url","goToUpgrade","onMounted"],"mappings":"+5CAWA,MAAMA,EAA+B,CACpC,IAAK,MACL,IAAK,KAAA,EAGAC,EAAOC,KACPC,EAAYC,KACZC,EAAYC,IACZC,EAAWC,IACXC,EAAUC,KACVC,EAAUC,KACVC,EAAQC,KAERC,EAAoBC,EAAS,IAClCT,EAAS,mBACNN,EAAK,SAAS,wBAAwB,EACtCA,EAAK,SAAS,0BAA0B,CAAA,EAEtCgB,EAAmBC,EAAI,EAAK,EAE5BC,EAAcD,IACdE,EAAWF,IAEXG,EAAaH,EAAI,CACtB,CACC,MAAOjB,EAAK,SAAS,uCAAuC,EAC5D,MAAOD,EAA6B,GACrC,EACA,CACC,MAAOC,EAAK,SAAS,uCAAuC,EAC5D,MAAOD,EAA6B,GACrC,CAAA,CACA,EACKsB,EAAUJ,EAAIlB,EAA6B,GAAG,EAE9CuB,EAAcL,IACdM,EAAWN,IAEXO,EAAgBT,EAAS,IAAM,SAChC,OAAAM,EAAQ,QAAUtB,EAA6B,IAC3C,CAAC,CAACuB,EAAY,OAASA,EAAY,UAAUG,EAAAnB,EAAS,aAAT,YAAAmB,EAAqB,aAC/DJ,EAAQ,QAAUtB,EAA6B,IAClD,CAAC,CAACwB,EAAS,OAASA,EAAS,UAAUG,EAAApB,EAAS,aAAT,YAAAoB,EAAqB,UAE7D,EAAA,CACP,EAEKC,EAAgBZ,EAAS,IAC1BM,EAAQ,QAAUtB,EAA6B,IAC3C,CAAC,CAACuB,EAAY,OAASN,EAAiB,MACrCK,EAAQ,QAAUtB,EAA6B,IAClD,CAAC,CAACwB,EAAS,OAASP,EAAiB,MAEtC,EACP,EAEKY,EAAgB,SAAY,CAC3B,MAAAC,EAAS,MAAMvB,EAAS,gBAE9Ba,EAAS,MAAQU,GAAA,YAAAA,EAAQ,SACzBX,EAAY,MAAQW,GAAA,YAAAA,EAAQ,UAExBA,GAAA,MAAAA,EAAQ,YACXR,EAAQ,MAAQtB,EAA6B,IACnC8B,GAAA,MAAAA,EAAQ,WAClBR,EAAQ,MAAQtB,EAA6B,KAG9CwB,EAAS,MAAQM,GAAA,YAAAA,EAAQ,SACzBP,EAAY,MAAQO,GAAA,YAAAA,EAAQ,YACXb,EAAA,MAAQ,CAAC,EAACa,GAAA,MAAAA,EAAQ,SAAA,EAG9BC,EAAS,SAAY,CACtB,GAAA,CACH,MAAMD,EACLR,EAAQ,QAAUtB,EAA6B,IAC5C,CAAE,YAAauB,EAAY,KAAM,EACjC,CAAE,SAAUC,EAAS,KAAM,EACzB,MAAAjB,EAAS,eAAeuB,CAAM,EAE/BvB,EAAS,oBACE,MAAMI,EAAQ,QAC5BV,EAAK,SAAS,6CAA6C,EAC3DA,EAAK,SAAS,2CAA2C,EACzD,CACC,kBAAmBA,EAAK,SAAS,0CAA0C,EAC3E,iBAAkBA,EAAK,SAAS,4CAA4C,CAC7E,CAAA,IAGc,WACd,MAAM+B,EAAO,EAIf7B,EAAU,MAAM,uCAAwC,CACvD,YAAaE,EAAU,WACvB,kBAAmBiB,EAAQ,QAAU,MAAQ,WAAa,MAC1D,UAAWf,EAAS,kBAAA,CACpB,QACO0B,EAAO,CACfpB,EAAM,UAAUoB,EAAOhC,EAAK,SAAS,kCAAkC,CAAC,EACxE,MAAA,QACC,CACD,MAAM4B,EAAc,CACrB,CAAA,EAGKG,EAAS,SAAY,CACtB,GAAA,CACG,MAAAE,EAAM,MAAM3B,EAAS,iBAEvB,OAAO,OAAW,KACd,OAAA,KAAK2B,EAAK,QAAQ,QAElBD,EAAO,CACTpB,EAAA,UAAUoB,EAAO,OAAO,CAC/B,CAAA,EAGKE,EAAc,IAAM,CACpB1B,EAAQ,YAAY,MAAO,aAAa,CAAA,EAG9C,OAAA2B,EAAU,SAAY,CACjB,GAAC7B,EAAS,wBAGV,GAAA,CACH,MAAMsB,EAAc,QACZI,EAAO,CACTpB,EAAA,UAAUoB,EAAO,OAAO,CAC/B,CAAA,CACA"}
@@ -1,2 +1,2 @@
1
- import{G as H,az as J,aH as Q,r as f,e as A,b as X,ag as u,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}from"./vendor-Dv5OeN6t.js";import{cT as ee,e as te,u as ne,t as ae,O as a,dq as se,dr as oe}from"./index-Dtri_pSJ.js";import{_ as ie}from"./n8n-4UEsHtUL.js";import"./pinia-sugP77Im.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BBHtM40w.js";import"./lodash-es-CZ1inz46.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-CIxnBJXX.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-DBO6T13I.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-CWDO6_kP.js";import"./@n8n/codemirror-lang-Dl0FW_KM.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-BOfzoJX1.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.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)},q=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")},M=()=>{I.goToUpgrade("usage_page","open"),y("view_plans")},N=()=>{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"),O=u("n8n-text"),W=u("n8n-info-tip"),m=u("n8n-button"),F=u("n8n-input"),G=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(O,{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(W,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:N},{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(M,["prevent"])},{default:s(()=>[g("a",{href:V.value,target:"_blank"},o(t(a).baseText("settings.usageAndPlan.button.plans")),9,_e)]),_:1}))],2),l(G,{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(F,{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:q},{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-698d6909"]]);export{st as default};
2
- //# sourceMappingURL=SettingsUsageAndPlan-g86Q7EQY.js.map
1
+ import{G as H,az as J,aH as Q,r as f,e as A,b as X,ag as u,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}from"./vendor-Dv5OeN6t.js";import{cR as ee,e as te,u as ne,t as ae,O as a,dn as se,dp as oe}from"./index-BE0Xl-jy.js";import{_ as ie}from"./n8n-4UEsHtUL.js";import"./pinia-sugP77Im.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BBHtM40w.js";import"./lodash-es-CZ1inz46.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-CIxnBJXX.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-DBO6T13I.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-CWDO6_kP.js";import"./@n8n/codemirror-lang-Dl0FW_KM.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-BOfzoJX1.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.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)},S=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)},q=()=>{_.value=!0,y("add_activation_key")},M=()=>{I.goToUpgrade("usage_page","open"),y("view_plans")},N=()=>{y("manage_plan")},R=()=>{v.value=""},D=()=>{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"),O=u("n8n-text"),W=u("n8n-info-tip"),m=u("n8n-button"),F=u("n8n-input"),G=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(O,{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(W,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:q},{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:N},{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(M,["prevent"])},{default:s(()=>[g("a",{href:V.value,target:"_blank"},o(t(a).baseText("settings.usageAndPlan.button.plans")),9,_e)]),_:1}))],2),l(G,{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:R,onOpened:D},{default:s(()=>[l(F,{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:S},{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-698d6909"]]);export{st as default};
2
+ //# sourceMappingURL=SettingsUsageAndPlan-DzDC9m54.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsUsageAndPlan-g86Q7EQY.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 '@/utils/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-DzDC9m54.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 '@/utils/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-sugP77Im.js";import{aK as E,u as O,cS as R,cT as A,a as B,e as I,b as P,E as S,t as d,cU as h,V,cV as z}from"./index-Dtri_pSJ.js";import{G as D,ag as t,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}from"./vendor-Dv5OeN6t.js";import{_ as q}from"./n8n-4UEsHtUL.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BBHtM40w.js";import"./lodash-es-CZ1inz46.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-CIxnBJXX.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-DBO6T13I.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-CWDO6_kP.js";import"./@n8n/codemirror-lang-Dl0FW_KM.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-BOfzoJX1.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.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-dOWjUJTW.js.map
1
+ import{m as M}from"./pinia-sugP77Im.js";import{aK as E,u as O,cQ as R,cR as A,a as B,e as I,b as P,E as S,t as d,cS as h,V,cT as z}from"./index-BE0Xl-jy.js";import{G as D,ag as t,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}from"./vendor-Dv5OeN6t.js";import{_ as q}from"./n8n-4UEsHtUL.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BBHtM40w.js";import"./lodash-es-CZ1inz46.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-CIxnBJXX.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-DBO6T13I.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-CWDO6_kP.js";import"./@n8n/codemirror-lang-Dl0FW_KM.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-BOfzoJX1.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.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-CTd5MQLw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsUsersView-dOWjUJTW.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 { IRole, 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 '@/utils/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-CTd5MQLw.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 { IRole, 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 '@/utils/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{G as d,aH as g,az as v,ag as a,l as _,m as h,U as n,O as l,p as r,S,T as m,I as o,r as R,b as $,K as C}from"./vendor-Dv5OeN6t.js";import{e as I,b as f,l as y,V as e,t as U,a2 as O,a1 as w,cM as G}from"./index-Dtri_pSJ.js";import{m as M}from"./pinia-sugP77Im.js";import{u as k}from"./useUserHelpers-Bn_ZV9Jv.js";import{_ as b}from"./n8n-4UEsHtUL.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BBHtM40w.js";import"./lodash-es-CZ1inz46.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-CIxnBJXX.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-DBO6T13I.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-CWDO6_kP.js";import"./@n8n/codemirror-lang-Dl0FW_KM.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-BOfzoJX1.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const B=d({name:"SettingsSidebar",setup(){const t=g(),s=v();return{...k(t,s)}},computed:{...M(y,f,I),settingsFakeDoorFeatures(){return this.uiStore.getFakeDoorByLocation("settings")},sidebarMenuItems(){const t=[{id:"settings-usage-and-plan",icon:"chart-bar",label:this.$locale.baseText("settings.usageAndPlan.title"),position:"top",available:this.canAccessUsageAndPlan(),route:{to:{name:e.USAGE}}},{id:"settings-personal",icon:"user-circle",label:this.$locale.baseText("settings.personal"),position:"top",available:this.canAccessPersonalSettings(),route:{to:{name:e.PERSONAL_SETTINGS}}},{id:"settings-users",icon:"user-friends",label:this.$locale.baseText("settings.users"),position:"top",available:this.canAccessUsersSettings(),route:{to:{name:e.USERS_SETTINGS}}},{id:"settings-api",icon:"plug",label:this.$locale.baseText("settings.n8napi"),position:"top",available:this.canAccessApiSettings(),route:{to:{name:e.API_SETTINGS}}},{id:"settings-external-secrets",icon:"vault",label:this.$locale.baseText("settings.externalSecrets.title"),position:"top",available:this.canAccessExternalSecrets(),route:{to:{name:e.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:e.SOURCE_CONTROL}}},{id:"settings-sso",icon:"user-lock",label:this.$locale.baseText("settings.sso"),position:"top",available:this.canAccessSso(),route:{to:{name:e.SSO_SETTINGS}}},{id:"settings-ldap",icon:"network-wired",label:this.$locale.baseText("settings.ldap"),position:"top",available:this.canAccessLdapSettings(),route:{to:{name:e.LDAP_SETTINGS}}},{id:"settings-workersview",icon:"project-diagram",label:this.$locale.baseText("mainSidebar.workersView"),position:"top",available:this.settingsStore.isQueueModeEnabled&&U(["rbac"],{rbac:{scope:"workersView:manage"}}),route:{to:{name:e.WORKER_VIEW}}}];for(const s of this.settingsFakeDoorFeatures)s.uiLocations.includes("settings")&&t.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 t.push({id:"settings-log-streaming",icon:"sign-in-alt",label:this.$locale.baseText("settings.log-streaming"),position:"top",available:this.canAccessLogStreamingSettings(),route:{to:{name:e.LOG_STREAMING_SETTINGS}}}),t.push({id:"settings-community-nodes",icon:"cube",label:this.$locale.baseText("settings.communityNodes"),position:"top",available:this.canAccessCommunityNodes(),route:{to:{name:e.COMMUNITY_NODES}}}),t}},methods:{canAccessPersonalSettings(){return this.canUserAccessRouteByName(e.PERSONAL_SETTINGS)},canAccessUsersSettings(){return this.canUserAccessRouteByName(e.USERS_SETTINGS)},canAccessCommunityNodes(){return this.canUserAccessRouteByName(e.COMMUNITY_NODES)},canAccessApiSettings(){return this.settingsStore.isPublicApiEnabled&&this.canUserAccessRouteByName(e.API_SETTINGS)},canAccessLdapSettings(){return this.canUserAccessRouteByName(e.LDAP_SETTINGS)},canAccessLogStreamingSettings(){return this.canUserAccessRouteByName(e.LOG_STREAMING_SETTINGS)},canAccessUsageAndPlan(){return this.canUserAccessRouteByName(e.USAGE)},canAccessExternalSecrets(){return this.canUserAccessRouteByName(e.EXTERNAL_SECRETS_SETTINGS)},canAccessSourceControl(){return this.canUserAccessRouteByName(e.SOURCE_CONTROL)},canAccessSso(){return this.canUserAccessRouteByName(e.SSO_SETTINGS)},onVersionClick(){this.uiStore.openModal(O)},openUpdatesPanel(){this.uiStore.openModal(w)},async handleSelect(t){switch(t){case"users":case"logging":this.$router.push({name:e.FAKE_DOOR,params:{featureId:t}}).catch(()=>{});break}}}}),L="_container_w9grj_1",P="_returnButton_w9grj_10",V="_versionContainer_w9grj_18",x={container:L,returnButton:P,versionContainer:V},D={class:"mr-xs"};function F(t,s,c,p,i,T){const u=a("font-awesome-icon"),A=a("n8n-heading"),E=a("n8n-link"),N=a("n8n-menu");return _(),h("div",{class:o(t.$style.container)},[n(N,{items:t.sidebarMenuItems,onSelect:t.handleSelect},{header:l(()=>[r("div",{class:o(t.$style.returnButton),"data-test-id":"settings-back",onClick:s[0]||(s[0]=Q=>t.$emit("return"))},[r("i",D,[n(u,{icon:"arrow-left"})]),n(A,{size:"large",bold:!0},{default:l(()=>[S(m(t.$locale.baseText("settings")),1)]),_:1})],2)]),menuSuffix:l(()=>[r("div",{class:o(t.$style.versionContainer)},[n(E,{size:"small",onClick:t.onVersionClick},{default:l(()=>[S(m(t.$locale.baseText("settings.version"))+" "+m(t.rootStore.versionCli),1)]),_:1},8,["onClick"])],2)]),_:1},8,["items","onSelect"])],2)}const K={$style:x},j=b(B,[["render",F],["__cssModules",K]]),z=d({__name:"SettingsView",setup(t){const s=g(),c=R();function p(){s.push(G(c.value)?c.value:{name:e.HOMEPAGE})}return $(()=>{c.value=s.options.history.state.back}),(i,T)=>{const u=a("router-view");return _(),h("div",{class:o(i.$style.container)},[n(j,{onReturn:p}),r("div",{class:o(i.$style.contentContainer)},[r("div",{class:o(i.$style.content)},[n(u,C({name:"settingsView"},i.$attrs),null,16)],2)],2)],2)}}}),Y="_container_11adc_1",H="_contentContainer_11adc_8 _container_11adc_1",W="_content_11adc_8",X={container:Y,contentContainer:H,content:W},q={$style:X},fe=b(z,[["__cssModules",q]]);export{fe as default};
2
- //# sourceMappingURL=SettingsView-DQ0hQWFt.js.map
1
+ import{G as d,aH as g,az as v,ag as a,l as _,m as h,U as n,O as l,p as r,S,T as m,I as o,r as R,b as $,K as C}from"./vendor-Dv5OeN6t.js";import{e as I,b as f,l as y,V as e,t as U,a2 as O,a1 as w,cK as G}from"./index-BE0Xl-jy.js";import{m as k}from"./pinia-sugP77Im.js";import{u as B}from"./useUserHelpers-CzNhI0vP.js";import{_ as b}from"./n8n-4UEsHtUL.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BBHtM40w.js";import"./lodash-es-CZ1inz46.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-CIxnBJXX.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-DBO6T13I.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-CWDO6_kP.js";import"./@n8n/codemirror-lang-Dl0FW_KM.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-BOfzoJX1.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const L=d({name:"SettingsSidebar",setup(){const t=g(),s=v();return{...B(t,s)}},computed:{...k(y,f,I),settingsFakeDoorFeatures(){return this.uiStore.getFakeDoorByLocation("settings")},sidebarMenuItems(){const t=[{id:"settings-usage-and-plan",icon:"chart-bar",label:this.$locale.baseText("settings.usageAndPlan.title"),position:"top",available:this.canAccessUsageAndPlan(),route:{to:{name:e.USAGE}}},{id:"settings-personal",icon:"user-circle",label:this.$locale.baseText("settings.personal"),position:"top",available:this.canAccessPersonalSettings(),route:{to:{name:e.PERSONAL_SETTINGS}}},{id:"settings-users",icon:"user-friends",label:this.$locale.baseText("settings.users"),position:"top",available:this.canAccessUsersSettings(),route:{to:{name:e.USERS_SETTINGS}}},{id:"settings-api",icon:"plug",label:this.$locale.baseText("settings.n8napi"),position:"top",available:this.canAccessApiSettings(),route:{to:{name:e.API_SETTINGS}}},{id:"settings-external-secrets",icon:"vault",label:this.$locale.baseText("settings.externalSecrets.title"),position:"top",available:this.canAccessExternalSecrets(),route:{to:{name:e.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:e.SOURCE_CONTROL}}},{id:"settings-sso",icon:"user-lock",label:this.$locale.baseText("settings.sso"),position:"top",available:this.canAccessSso(),route:{to:{name:e.SSO_SETTINGS}}},{id:"settings-ldap",icon:"network-wired",label:this.$locale.baseText("settings.ldap"),position:"top",available:this.canAccessLdapSettings(),route:{to:{name:e.LDAP_SETTINGS}}},{id:"settings-workersview",icon:"project-diagram",label:this.$locale.baseText("mainSidebar.workersView"),position:"top",available:this.settingsStore.isQueueModeEnabled&&U(["rbac"],{rbac:{scope:"workersView:manage"}}),route:{to:{name:e.WORKER_VIEW}}}];for(const s of this.settingsFakeDoorFeatures)s.uiLocations.includes("settings")&&t.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 t.push({id:"settings-log-streaming",icon:"sign-in-alt",label:this.$locale.baseText("settings.log-streaming"),position:"top",available:this.canAccessLogStreamingSettings(),route:{to:{name:e.LOG_STREAMING_SETTINGS}}}),t.push({id:"settings-community-nodes",icon:"cube",label:this.$locale.baseText("settings.communityNodes"),position:"top",available:this.canAccessCommunityNodes(),route:{to:{name:e.COMMUNITY_NODES}}}),t}},methods:{canAccessPersonalSettings(){return this.canUserAccessRouteByName(e.PERSONAL_SETTINGS)},canAccessUsersSettings(){return this.canUserAccessRouteByName(e.USERS_SETTINGS)},canAccessCommunityNodes(){return this.canUserAccessRouteByName(e.COMMUNITY_NODES)},canAccessApiSettings(){return this.settingsStore.isPublicApiEnabled&&this.canUserAccessRouteByName(e.API_SETTINGS)},canAccessLdapSettings(){return this.canUserAccessRouteByName(e.LDAP_SETTINGS)},canAccessLogStreamingSettings(){return this.canUserAccessRouteByName(e.LOG_STREAMING_SETTINGS)},canAccessUsageAndPlan(){return this.canUserAccessRouteByName(e.USAGE)},canAccessExternalSecrets(){return this.canUserAccessRouteByName(e.EXTERNAL_SECRETS_SETTINGS)},canAccessSourceControl(){return this.canUserAccessRouteByName(e.SOURCE_CONTROL)},canAccessSso(){return this.canUserAccessRouteByName(e.SSO_SETTINGS)},onVersionClick(){this.uiStore.openModal(O)},openUpdatesPanel(){this.uiStore.openModal(w)},async handleSelect(t){switch(t){case"users":case"logging":this.$router.push({name:e.FAKE_DOOR,params:{featureId:t}}).catch(()=>{});break}}}}),M="_container_w9grj_1",P="_returnButton_w9grj_10",V="_versionContainer_w9grj_18",x={container:M,returnButton:P,versionContainer:V},D={class:"mr-xs"};function F(t,s,c,p,i,T){const u=a("font-awesome-icon"),A=a("n8n-heading"),E=a("n8n-link"),N=a("n8n-menu");return _(),h("div",{class:o(t.$style.container)},[n(N,{items:t.sidebarMenuItems,onSelect:t.handleSelect},{header:l(()=>[r("div",{class:o(t.$style.returnButton),"data-test-id":"settings-back",onClick:s[0]||(s[0]=Q=>t.$emit("return"))},[r("i",D,[n(u,{icon:"arrow-left"})]),n(A,{size:"large",bold:!0},{default:l(()=>[S(m(t.$locale.baseText("settings")),1)]),_:1})],2)]),menuSuffix:l(()=>[r("div",{class:o(t.$style.versionContainer)},[n(E,{size:"small",onClick:t.onVersionClick},{default:l(()=>[S(m(t.$locale.baseText("settings.version"))+" "+m(t.rootStore.versionCli),1)]),_:1},8,["onClick"])],2)]),_:1},8,["items","onSelect"])],2)}const K={$style:x},j=b(L,[["render",F],["__cssModules",K]]),z=d({__name:"SettingsView",setup(t){const s=g(),c=R();function p(){s.push(G(c.value)?c.value:{name:e.HOMEPAGE})}return $(()=>{c.value=s.options.history.state.back}),(i,T)=>{const u=a("router-view");return _(),h("div",{class:o(i.$style.container)},[n(j,{onReturn:p}),r("div",{class:o(i.$style.contentContainer)},[r("div",{class:o(i.$style.content)},[n(u,C({name:"settingsView"},i.$attrs),null,16)],2)],2)],2)}}}),Y="_container_11adc_1",H="_contentContainer_11adc_8 _container_11adc_1",W="_content_11adc_8",X={container:Y,contentContainer:H,content:W},q={$style:X},fe=b(z,[["__cssModules",q]]);export{fe as default};
2
+ //# sourceMappingURL=SettingsView-DMxqsNh0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsView-DQ0hQWFt.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 { useUserHelpers } from '@/composables/useUserHelpers';\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/root.store';\nimport { hasPermission } from '@/utils/rbac/permissions';\nimport { useRoute, useRouter } from 'vue-router';\n\nexport default defineComponent({\n\tname: 'SettingsSidebar',\n\tsetup() {\n\t\tconst router = useRouter();\n\t\tconst route = useRoute();\n\t\treturn {\n\t\t\t...useUserHelpers(router, route),\n\t\t};\n\t},\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 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","<script lang=\"ts\" setup>\nimport { onMounted, ref } from 'vue';\nimport type { HistoryState } from 'vue-router';\nimport { useRouter } from 'vue-router';\nimport { VIEWS } from '@/constants';\nimport SettingsSidebar from '@/components/SettingsSidebar.vue';\nimport { isRouteLocationRaw } from '@/utils/typeGuards';\n\nconst router = useRouter();\n\nconst previousRoute = ref<HistoryState[string] | undefined>();\n\nfunction onReturn() {\n\tvoid router.push(\n\t\tisRouteLocationRaw(previousRoute.value) ? previousRoute.value : { name: VIEWS.HOMEPAGE },\n\t);\n}\n\nonMounted(() => {\n\tpreviousRoute.value = router.options.history.state.back;\n});\n</script>\n\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<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","router","useRouter","route","useRoute","useUserHelpers","mapStores","useRootStore","useSettingsStore","useUIStore","menuItems","VIEWS","hasPermission","item","ABOUT_MODAL_KEY","VERSIONS_MODAL_KEY","key","_resolveComponent","_normalizeClass","_ctx","handleSelect","_withCtx","_createElementVNode","$emit","_cache","$event","_createVNode","_component_font_awesome_icon","_component_n8n_heading","_createTextVNode","_toDisplayString","$style","onVersionClick","previousRoute","ref","onReturn","isRouteLocationRaw","onMounted"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsView-DMxqsNh0.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 { useUserHelpers } from '@/composables/useUserHelpers';\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/root.store';\nimport { hasPermission } from '@/utils/rbac/permissions';\nimport { useRoute, useRouter } from 'vue-router';\n\nexport default defineComponent({\n\tname: 'SettingsSidebar',\n\tsetup() {\n\t\tconst router = useRouter();\n\t\tconst route = useRoute();\n\t\treturn {\n\t\t\t...useUserHelpers(router, route),\n\t\t};\n\t},\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 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","<script lang=\"ts\" setup>\nimport { onMounted, ref } from 'vue';\nimport type { HistoryState } from 'vue-router';\nimport { useRouter } from 'vue-router';\nimport { VIEWS } from '@/constants';\nimport SettingsSidebar from '@/components/SettingsSidebar.vue';\nimport { isRouteLocationRaw } from '@/utils/typeGuards';\n\nconst router = useRouter();\n\nconst previousRoute = ref<HistoryState[string] | undefined>();\n\nfunction onReturn() {\n\tvoid router.push(\n\t\tisRouteLocationRaw(previousRoute.value) ? previousRoute.value : { name: VIEWS.HOMEPAGE },\n\t);\n}\n\nonMounted(() => {\n\tpreviousRoute.value = router.options.history.state.back;\n});\n</script>\n\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<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","router","useRouter","route","useRoute","useUserHelpers","mapStores","useRootStore","useSettingsStore","useUIStore","menuItems","VIEWS","hasPermission","item","ABOUT_MODAL_KEY","VERSIONS_MODAL_KEY","key","_resolveComponent","_normalizeClass","_ctx","handleSelect","_withCtx","_createElementVNode","$emit","_cache","$event","_createVNode","_component_font_awesome_icon","_component_n8n_heading","_createTextVNode","_toDisplayString","$style","onVersionClick","previousRoute","ref","onReturn","isRouteLocationRaw","onMounted"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{A as o}from"./AuthView-BgFWzBDm.js";import{u as i,a as s,e as m,b as p,V as a}from"./index-Dtri_pSJ.js";import{m as l}from"./pinia-sugP77Im.js";import{G as n,ag as u,l as c,M as h}from"./vendor-Dv5OeN6t.js";import{_ as d}from"./n8n-4UEsHtUL.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BBHtM40w.js";import"./lodash-es-CZ1inz46.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-CIxnBJXX.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-DBO6T13I.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-CWDO6_kP.js";import"./@n8n/codemirror-lang-Dl0FW_KM.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-BOfzoJX1.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.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=u("AuthView");return c(),h(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-CqT8d0D8.js.map
1
+ import{A as o}from"./AuthView-CMxdNKZJ.js";import{u as i,a as s,e as m,b as p,V as a}from"./index-BE0Xl-jy.js";import{m as l}from"./pinia-sugP77Im.js";import{G as n,ag as u,l as c,M as h}from"./vendor-Dv5OeN6t.js";import{_ as d}from"./n8n-4UEsHtUL.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BBHtM40w.js";import"./lodash-es-CZ1inz46.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-CIxnBJXX.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-DBO6T13I.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-CWDO6_kP.js";import"./@n8n/codemirror-lang-Dl0FW_KM.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-BOfzoJX1.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.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=u("AuthView");return c(),h(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-tkyttChl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SetupView-CqT8d0D8.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-tkyttChl.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,e as S,bG as T,er as w,df as b,es as i,x as k}from"./index-Dtri_pSJ.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 x,R as A}from"./vendor-Dv5OeN6t.js";import"./pinia-sugP77Im.js";import"./n8n-4UEsHtUL.js";import"./axios-Mm4CS0gO.js";import"./esprima-next-nhoSXAeq.js";import"./luxon-CLwAIbs0.js";import"./lodash-es-CZ1inz46.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BBHtM40w.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-CIxnBJXX.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./@n8n/codemirror-lang-sql-DBO6T13I.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-CWDO6_kP.js";import"./@n8n/codemirror-lang-Dl0FW_KM.js";import"./fast-json-stable-stringify-BOfzoJX1.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const pe=v({__name:"SetupWorkflowCredentialsButton",setup(B){const o=_(),m=E(),a=S(),u=T(),d=k(),p=n(()=>{var e,t;return!!((t=(e=o.workflow)==null?void 0:e.meta)!=null&&t.templateCredsSetupCompleted)}),l=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(b),t=!!((s=(r=o.workflow)==null?void 0:r.meta)!=null&&s.templateId);return!e||!t||p.value?!1:!l.value}),f=y(l,e=>{e&&(o.addToWorkflowMetadata({templateCredsSetupCompleted:!0}),f())}),C=()=>{a.openModal(i)};return M(()=>{a.closeModal(i)}),(e,t)=>{const r=N("n8n-button");return c.value?(g(),I(r,{key:0,label:x(d).baseText("nodeView.setupTemplate"),size:"large",icon:"box-open",type:"secondary",onClick:t[0]||(t[0]=s=>C())},null,8,["label"])):A("",!0)}}});export{pe as default};
2
- //# sourceMappingURL=SetupWorkflowCredentialsButton-BR-ObOqw.js.map
1
+ import{j as _,a4 as E,e as S,bG as T,ep as w,dd as b,eq as i,x as k}from"./index-BE0Xl-jy.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 x,R as A}from"./vendor-Dv5OeN6t.js";import"./pinia-sugP77Im.js";import"./n8n-4UEsHtUL.js";import"./axios-Mm4CS0gO.js";import"./esprima-next-nhoSXAeq.js";import"./luxon-CLwAIbs0.js";import"./lodash-es-CZ1inz46.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BBHtM40w.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-CIxnBJXX.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./@n8n/codemirror-lang-sql-DBO6T13I.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-CWDO6_kP.js";import"./@n8n/codemirror-lang-Dl0FW_KM.js";import"./fast-json-stable-stringify-BOfzoJX1.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const pe=v({__name:"SetupWorkflowCredentialsButton",setup(B){const o=_(),m=E(),a=S(),u=T(),d=k(),p=n(()=>{var e,t;return!!((t=(e=o.workflow)==null?void 0:e.meta)!=null&&t.templateCredsSetupCompleted)}),l=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(b),t=!!((s=(r=o.workflow)==null?void 0:r.meta)!=null&&s.templateId);return!e||!t||p.value?!1:!l.value}),f=y(l,e=>{e&&(o.addToWorkflowMetadata({templateCredsSetupCompleted:!0}),f())}),C=()=>{a.openModal(i)};return M(()=>{a.closeModal(i)}),(e,t)=>{const r=N("n8n-button");return c.value?(g(),I(r,{key:0,label:x(d).baseText("nodeView.setupTemplate"),size:"large",icon:"box-open",type:"secondary",onClick:t[0]||(t[0]=s=>C())},null,8,["label"])):A("",!0)}}});export{pe as default};
2
+ //# sourceMappingURL=SetupWorkflowCredentialsButton-B3HZvKQp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SetupWorkflowCredentialsButton-BR-ObOqw.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-B3HZvKQp.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"}