n8n-editor-ui 1.41.0 → 1.41.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.
- package/.turbo/turbo-build.log +61 -61
- package/dist/assets/{AuthView-E0Dwqa78.js → AuthView-CMX_-yPy.js} +2 -2
- package/dist/assets/{AuthView-E0Dwqa78.js.map → AuthView-CMX_-yPy.js.map} +1 -1
- package/dist/assets/{CanvasControls-yrXCY2V6.js → CanvasControls-9oKgZX9B.js} +2 -2
- package/dist/assets/{CanvasControls-yrXCY2V6.js.map → CanvasControls-9oKgZX9B.js.map} +1 -1
- package/dist/assets/{ChangePasswordView-kHBWSwn5.js → ChangePasswordView-GG3ESv5E.js} +2 -2
- package/dist/assets/{ChangePasswordView-kHBWSwn5.js.map → ChangePasswordView-GG3ESv5E.js.map} +1 -1
- package/dist/assets/{CollectionParameter-ZuNQUd29.js → CollectionParameter-1UnufhEZ.js} +2 -2
- package/dist/assets/CollectionParameter-1UnufhEZ.js.map +1 -0
- package/dist/assets/{CredentialsView-24rpr6nX.js → CredentialsView-TrGa_IpW.js} +2 -2
- package/dist/assets/{CredentialsView-24rpr6nX.js.map → CredentialsView-TrGa_IpW.js.map} +1 -1
- package/dist/assets/{ExecutionsFilter-RyBW2SgR.js → ExecutionsFilter-W0_jymTM.js} +2 -2
- package/dist/assets/{ExecutionsFilter-RyBW2SgR.js.map → ExecutionsFilter-W0_jymTM.js.map} +1 -1
- package/dist/assets/{ExecutionsView-NIusemYP.js → ExecutionsView-P-nSEBpq.js} +2 -2
- package/dist/assets/{ExecutionsView-NIusemYP.js.map → ExecutionsView-P-nSEBpq.js.map} +1 -1
- package/dist/assets/{ForgotMyPasswordView-ebrry8c_.js → ForgotMyPasswordView-_Ft-h_Xq.js} +2 -2
- package/dist/assets/{ForgotMyPasswordView-ebrry8c_.js.map → ForgotMyPasswordView-_Ft-h_Xq.js.map} +1 -1
- package/dist/assets/{MainHeader-JJIRXuyj.js → MainHeader-UFj-n8nH.js} +2 -2
- package/dist/assets/{MainHeader-JJIRXuyj.js.map → MainHeader-UFj-n8nH.js.map} +1 -1
- package/dist/assets/{MainSidebar-KnXGjnqU.js → MainSidebar-H7A2NfnT.js} +2 -2
- package/dist/assets/{MainSidebar-KnXGjnqU.js.map → MainSidebar-H7A2NfnT.js.map} +1 -1
- package/dist/assets/{NodeCreation-01VRbmJn.js → NodeCreation-MVULkw2n.js} +3 -3
- package/dist/assets/{NodeCreation-01VRbmJn.js.map → NodeCreation-MVULkw2n.js.map} +1 -1
- package/dist/assets/{NodeCreator-D_gQXSbT.js → NodeCreator-NjQetiNP.js} +2 -2
- package/dist/assets/{NodeCreator-D_gQXSbT.js.map → NodeCreator-NjQetiNP.js.map} +1 -1
- package/dist/assets/{NodeList-Ysq3Cjbn.js → NodeList-f4t5_e24.js} +2 -2
- package/dist/assets/{NodeList-Ysq3Cjbn.js.map → NodeList-f4t5_e24.js.map} +1 -1
- package/dist/assets/{NodeView-QjQV3eFX.js → NodeView-kA0j8oya.js} +4 -4
- package/dist/assets/{NodeView-QjQV3eFX.js.map → NodeView-kA0j8oya.js.map} +1 -1
- package/dist/assets/{RunDataAi-wbEK-oHX.js → RunDataAi-9Rk5nlrG.js} +2 -2
- package/dist/assets/{RunDataAi-wbEK-oHX.js.map → RunDataAi-9Rk5nlrG.js.map} +1 -1
- package/dist/assets/{RunDataJson-YtVT_k9o.js → RunDataJson-3HvvCXQv.js} +3 -3
- package/dist/assets/{RunDataJson-YtVT_k9o.js.map → RunDataJson-3HvvCXQv.js.map} +1 -1
- package/dist/assets/{RunDataJsonActions-dl7uUHxF.js → RunDataJsonActions-QVURaY0g.js} +2 -2
- package/dist/assets/{RunDataJsonActions-dl7uUHxF.js.map → RunDataJsonActions-QVURaY0g.js.map} +1 -1
- package/dist/assets/{RunDataSchema-zsup9Psk.js → RunDataSchema-8AcA4SSx.js} +2 -2
- package/dist/assets/{RunDataSchema-zsup9Psk.js.map → RunDataSchema-8AcA4SSx.js.map} +1 -1
- package/dist/assets/{RunDataTable-4PVwCliN.js → RunDataTable-aySP3LG2.js} +2 -2
- package/dist/assets/{RunDataTable-4PVwCliN.js.map → RunDataTable-aySP3LG2.js.map} +1 -1
- package/dist/assets/{SamlOnboarding-a7AOJSPY.js → SamlOnboarding-g5DOLc7y.js} +2 -2
- package/dist/assets/{SamlOnboarding-a7AOJSPY.js.map → SamlOnboarding-g5DOLc7y.js.map} +1 -1
- package/dist/assets/{SettingsApiView-MKVmxKrc.js → SettingsApiView-368bFhYh.js} +2 -2
- package/dist/assets/{SettingsApiView-MKVmxKrc.js.map → SettingsApiView-368bFhYh.js.map} +1 -1
- package/dist/assets/{SettingsCommunityNodesView-JSEAJRmQ.js → SettingsCommunityNodesView-4ma9ZrA6.js} +2 -2
- package/dist/assets/{SettingsCommunityNodesView-JSEAJRmQ.js.map → SettingsCommunityNodesView-4ma9ZrA6.js.map} +1 -1
- package/dist/assets/{SettingsExternalSecrets-LATcSwCb.js → SettingsExternalSecrets-anO5H_X6.js} +2 -2
- package/dist/assets/{SettingsExternalSecrets-LATcSwCb.js.map → SettingsExternalSecrets-anO5H_X6.js.map} +1 -1
- package/dist/assets/{SettingsFakeDoorView-JXYglIiV.js → SettingsFakeDoorView-DP8hJH_b.js} +2 -2
- package/dist/assets/{SettingsFakeDoorView-JXYglIiV.js.map → SettingsFakeDoorView-DP8hJH_b.js.map} +1 -1
- package/dist/assets/{SettingsLdapView-2qYzfmuL.js → SettingsLdapView-TVoyUgkx.js} +2 -2
- package/dist/assets/{SettingsLdapView-2qYzfmuL.js.map → SettingsLdapView-TVoyUgkx.js.map} +1 -1
- package/dist/assets/{SettingsLogStreamingView-Xc6EScgx.js → SettingsLogStreamingView-IIFjEkjs.js} +2 -2
- package/dist/assets/{SettingsLogStreamingView-Xc6EScgx.js.map → SettingsLogStreamingView-IIFjEkjs.js.map} +1 -1
- package/dist/assets/{SettingsSourceControl-Mb0LqGSl.js → SettingsSourceControl-1zDUY0dl.js} +2 -2
- package/dist/assets/{SettingsSourceControl-Mb0LqGSl.js.map → SettingsSourceControl-1zDUY0dl.js.map} +1 -1
- package/dist/assets/{SettingsSso-2YEXaMhF.js → SettingsSso-7dAOqmaA.js} +2 -2
- package/dist/assets/{SettingsSso-2YEXaMhF.js.map → SettingsSso-7dAOqmaA.js.map} +1 -1
- package/dist/assets/{SettingsUsageAndPlan-_C19BOT1.js → SettingsUsageAndPlan-0b_7OZCC.js} +2 -2
- package/dist/assets/{SettingsUsageAndPlan-_C19BOT1.js.map → SettingsUsageAndPlan-0b_7OZCC.js.map} +1 -1
- package/dist/assets/{SettingsUsersView-salH__qs.js → SettingsUsersView-0AZ_F16e.js} +2 -2
- package/dist/assets/{SettingsUsersView-salH__qs.js.map → SettingsUsersView-0AZ_F16e.js.map} +1 -1
- package/dist/assets/{SettingsView-EBt-ouA4.js → SettingsView-pF2qlNhK.js} +2 -2
- package/dist/assets/SettingsView-pF2qlNhK.js.map +1 -0
- package/dist/assets/{SetupView-T7JQiE1O.js → SetupView-IPdjd4om.js} +2 -2
- package/dist/assets/{SetupView-T7JQiE1O.js.map → SetupView-IPdjd4om.js.map} +1 -1
- package/dist/assets/{SetupWorkflowCredentialsButton-lDl1ksax.js → SetupWorkflowCredentialsButton-fL7BC8Hp.js} +2 -2
- package/dist/assets/{SetupWorkflowCredentialsButton-lDl1ksax.js.map → SetupWorkflowCredentialsButton-fL7BC8Hp.js.map} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-uEG55eR-.js → SetupWorkflowFromTemplateView-mDNSG38Q.js} +2 -2
- package/dist/assets/{SetupWorkflowFromTemplateView-uEG55eR-.js.map → SetupWorkflowFromTemplateView-mDNSG38Q.js.map} +1 -1
- package/dist/assets/{SigninView-tsJLDDbt.js → SigninView-4mpqXNHu.js} +2 -2
- package/dist/assets/{SigninView-tsJLDDbt.js.map → SigninView-4mpqXNHu.js.map} +1 -1
- package/dist/assets/{SignupView-ckdGMylG.js → SignupView-v6AVy0zJ.js} +2 -2
- package/dist/assets/{SignupView-ckdGMylG.js.map → SignupView-v6AVy0zJ.js.map} +1 -1
- package/dist/assets/{TemplateDetails-YEZlo0n4.js → TemplateDetails-WQVyxQi7.js} +2 -2
- package/dist/assets/{TemplateDetails-YEZlo0n4.js.map → TemplateDetails-WQVyxQi7.js.map} +1 -1
- package/dist/assets/{TemplateList-OGWLmWk_.js → TemplateList--WJ98ZVH.js} +2 -2
- package/dist/assets/{TemplateList-OGWLmWk_.js.map → TemplateList--WJ98ZVH.js.map} +1 -1
- package/dist/assets/{TemplatesCollectionView-Fx5qyXc6.js → TemplatesCollectionView-g59Pu268.js} +2 -2
- package/dist/assets/{TemplatesCollectionView-Fx5qyXc6.js.map → TemplatesCollectionView-g59Pu268.js.map} +1 -1
- package/dist/assets/{TemplatesInfoCarousel-oLwAv_o3.js → TemplatesInfoCarousel-Nq4oRyBi.js} +2 -2
- package/dist/assets/{TemplatesInfoCarousel-oLwAv_o3.js.map → TemplatesInfoCarousel-Nq4oRyBi.js.map} +1 -1
- package/dist/assets/{TemplatesSearchView-TtSL2qyI.js → TemplatesSearchView-Lv0e5mOk.js} +2 -2
- package/dist/assets/{TemplatesSearchView-TtSL2qyI.js.map → TemplatesSearchView-Lv0e5mOk.js.map} +1 -1
- package/dist/assets/{TemplatesWorkflowView-Ipt1HHPc.js → TemplatesWorkflowView-FoPXbc_4.js} +2 -2
- package/dist/assets/{TemplatesWorkflowView-Ipt1HHPc.js.map → TemplatesWorkflowView-FoPXbc_4.js.map} +1 -1
- package/dist/assets/{VariablesView-pLmlCm20.js → VariablesView-Sg4v_4Ai.js} +2 -2
- package/dist/assets/{VariablesView-pLmlCm20.js.map → VariablesView-Sg4v_4Ai.js.map} +1 -1
- package/dist/assets/{WorkerView-Du8mpTon.js → WorkerView-y-y5Q5E5.js} +2 -2
- package/dist/assets/{WorkerView-Du8mpTon.js.map → WorkerView-y-y5Q5E5.js.map} +1 -1
- package/dist/assets/{WorkflowActivator-MuCzpXdv.js → WorkflowActivator-vtOaSPI6.js} +2 -2
- package/dist/assets/{WorkflowActivator-MuCzpXdv.js.map → WorkflowActivator-vtOaSPI6.js.map} +1 -1
- package/dist/assets/{WorkflowExecutionsInfoAccordion-9gkfchSQ.js → WorkflowExecutionsInfoAccordion-Gm7eM0Un.js} +2 -2
- package/dist/assets/{WorkflowExecutionsInfoAccordion-9gkfchSQ.js.map → WorkflowExecutionsInfoAccordion-Gm7eM0Un.js.map} +1 -1
- package/dist/assets/{WorkflowExecutionsLandingPage-g4QNNuc4.js → WorkflowExecutionsLandingPage-C_oVBqy4.js} +2 -2
- package/dist/assets/{WorkflowExecutionsLandingPage-g4QNNuc4.js.map → WorkflowExecutionsLandingPage-C_oVBqy4.js.map} +1 -1
- package/dist/assets/{WorkflowExecutionsPreview-KNJgPBbn.js → WorkflowExecutionsPreview-Yw0HRwQz.js} +2 -2
- package/dist/assets/{WorkflowExecutionsPreview-KNJgPBbn.js.map → WorkflowExecutionsPreview-Yw0HRwQz.js.map} +1 -1
- package/dist/assets/{WorkflowExecutionsView-Iwwaw9Lt.js → WorkflowExecutionsView-dwh6ZDgY.js} +2 -2
- package/dist/assets/{WorkflowExecutionsView-Iwwaw9Lt.js.map → WorkflowExecutionsView-dwh6ZDgY.js.map} +1 -1
- package/dist/assets/{WorkflowHistory-HxH8_2Dt.js → WorkflowHistory-RGKALSm6.js} +2 -2
- package/dist/assets/{WorkflowHistory-HxH8_2Dt.js.map → WorkflowHistory-RGKALSm6.js.map} +1 -1
- package/dist/assets/{WorkflowOnboardingView-KirfsyFh.js → WorkflowOnboardingView-kAh_YIAL.js} +2 -2
- package/dist/assets/{WorkflowOnboardingView-KirfsyFh.js.map → WorkflowOnboardingView-kAh_YIAL.js.map} +1 -1
- package/dist/assets/{WorkflowsView-SJ6W5Ten.js → WorkflowsView-_nHq94Wq.js} +2 -2
- package/dist/assets/{WorkflowsView-SJ6W5Ten.js.map → WorkflowsView-_nHq94Wq.js.map} +1 -1
- package/dist/assets/{cloud-WKIHJYyR.js → cloud-jEANLTrV.js} +2 -2
- package/dist/assets/{cloud-WKIHJYyR.js.map → cloud-jEANLTrV.js.map} +1 -1
- package/dist/assets/{index-Qw68KAhz.js → index-6M_Mo9yq.js} +4 -4
- package/dist/assets/{index-Qw68KAhz.js.map → index-6M_Mo9yq.js.map} +1 -1
- package/dist/assets/{templateActions-5n_gDrp9.js → templateActions-l9fJr0Cu.js} +2 -2
- package/dist/assets/{templateActions-5n_gDrp9.js.map → templateActions-l9fJr0Cu.js.map} +1 -1
- package/dist/assets/{useExecutionDebugging-bM31shhY.js → useExecutionDebugging-ndesKh44.js} +2 -2
- package/dist/assets/{useExecutionDebugging-bM31shhY.js.map → useExecutionDebugging-ndesKh44.js.map} +1 -1
- package/dist/assets/{usePushConnection-YMVPmkf5.js → usePushConnection-vhkd7pw_.js} +2 -2
- package/dist/assets/{usePushConnection-YMVPmkf5.js.map → usePushConnection-vhkd7pw_.js.map} +1 -1
- package/dist/assets/{workflowActivate-L9KnNQBb.js → workflowActivate-dwxhdtFU.js} +2 -2
- package/dist/assets/{workflowActivate-L9KnNQBb.js.map → workflowActivate-dwxhdtFU.js.map} +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/assets/CollectionParameter-ZuNQUd29.js.map +0 -1
- package/dist/assets/SettingsView-EBt-ouA4.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsCommunityNodesView-JSEAJRmQ.js","sources":["../../src/components/CommunityPackageCard.vue","../../src/views/SettingsCommunityNodesView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.cardContainer\">\n\t\t<div v-if=\"loading\" :class=\"$style.cardSkeleton\">\n\t\t\t<n8n-loading :class=\"$style.loader\" variant=\"p\" :rows=\"1\" />\n\t\t\t<n8n-loading :class=\"$style.loader\" variant=\"p\" :rows=\"1\" />\n\t\t</div>\n\t\t<div v-else :class=\"$style.packageCard\">\n\t\t\t<div :class=\"$style.cardInfoContainer\">\n\t\t\t\t<div :class=\"$style.cardTitle\">\n\t\t\t\t\t<n8n-text :bold=\"true\" size=\"large\">{{ communityPackage.packageName }}</n8n-text>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.cardSubtitle\">\n\t\t\t\t\t<n8n-text :bold=\"true\" size=\"small\" color=\"text-light\">\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t$locale.baseText('settings.communityNodes.packageNodes.label', {\n\t\t\t\t\t\t\t\tadjustToNumber: communityPackage.installedNodes.length,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}: \n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-text size=\"small\" color=\"text-light\">\n\t\t\t\t\t\t<span v-for=\"(node, index) in communityPackage.installedNodes\" :key=\"node.name\">\n\t\t\t\t\t\t\t{{ node.name\n\t\t\t\t\t\t\t}}<span v-if=\"index != communityPackage.installedNodes.length - 1\">,</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.cardControlsContainer\">\n\t\t\t\t<n8n-text :bold=\"true\" size=\"large\" color=\"text-light\">\n\t\t\t\t\tv{{ communityPackage.installedVersion }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<n8n-tooltip v-if=\"communityPackage.failedLoading === true\" placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.failedToLoad.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-icon icon=\"exclamation-triangle\" color=\"danger\" size=\"large\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<n8n-tooltip v-else-if=\"communityPackage.updateAvailable\" placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.updateAvailable.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-button outline label=\"Update\" @click=\"onUpdateClick\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<n8n-tooltip v-else placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.upToDate.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-icon icon=\"check-circle\" color=\"text-light\" size=\"large\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<div :class=\"$style.cardActions\">\n\t\t\t\t\t<n8n-action-toggle :actions=\"packageActions\" @action=\"onAction\"></n8n-action-toggle>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { useUIStore } from '@/stores/ui.store';\nimport type { PublicInstalledPackage } from 'n8n-workflow';\nimport { mapStores } from 'pinia';\nimport { defineComponent } from 'vue';\nimport { NPM_PACKAGE_DOCS_BASE_URL, COMMUNITY_PACKAGE_MANAGE_ACTIONS } from '@/constants';\n\nexport default defineComponent({\n\tname: 'CommunityPackageCard',\n\tprops: {\n\t\tcommunityPackage: {\n\t\t\ttype: Object as () => PublicInstalledPackage,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpackageActions: [\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.communityNodes.viewDocsAction.label'),\n\t\t\t\t\tvalue: COMMUNITY_PACKAGE_MANAGE_ACTIONS.VIEW_DOCS,\n\t\t\t\t\ttype: 'external-link',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.communityNodes.uninstallAction.label'),\n\t\t\t\t\tvalue: COMMUNITY_PACKAGE_MANAGE_ACTIONS.UNINSTALL,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useUIStore),\n\t},\n\tmethods: {\n\t\tasync onAction(value: string) {\n\t\t\tswitch (value) {\n\t\t\t\tcase COMMUNITY_PACKAGE_MANAGE_ACTIONS.VIEW_DOCS:\n\t\t\t\t\tthis.$telemetry.track('user clicked to browse the cnr package documentation', {\n\t\t\t\t\t\tpackage_name: this.communityPackage.packageName,\n\t\t\t\t\t\tpackage_version: this.communityPackage.installedVersion,\n\t\t\t\t\t});\n\t\t\t\t\twindow.open(`${NPM_PACKAGE_DOCS_BASE_URL}${this.communityPackage.packageName}`, '_blank');\n\t\t\t\t\tbreak;\n\t\t\t\tcase COMMUNITY_PACKAGE_MANAGE_ACTIONS.UNINSTALL:\n\t\t\t\t\tthis.uiStore.openCommunityPackageUninstallConfirmModal(this.communityPackage.packageName);\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\tonUpdateClick() {\n\t\t\tthis.uiStore.openCommunityPackageUpdateConfirmModal(this.communityPackage.packageName);\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.cardContainer {\n\tdisplay: flex;\n\tpadding: var(--spacing-s);\n\tborder: var(--border-width-base) var(--border-style-base) var(--color-info-tint-1);\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-background-xlight);\n}\n\n.packageCard,\n.cardSkeleton {\n\tdisplay: flex;\n\tflex-basis: 100%;\n\tjustify-content: space-between;\n}\n\n.packageCard {\n\talign-items: center;\n}\n\n.cardSkeleton {\n\tflex-direction: column;\n}\n\n.loader {\n\twidth: 50%;\n\ttransform: scaleY(-1);\n\n\t&:last-child {\n\t\twidth: 70%;\n\n\t\tdiv {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n.cardInfoContainer {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n\n.cardTitle {\n\tflex-basis: 100%;\n\n\tspan {\n\t\tline-height: 1;\n\t}\n}\n\n.cardSubtitle {\n\tmargin-top: 2px;\n\tpadding-right: var(--spacing-m);\n}\n\n.cardControlsContainer {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--spacing-3xs);\n}\n\n.cardActions {\n\tpadding-left: var(--spacing-3xs);\n}\n</style>\n","<template>\n\t<div :class=\"$style.container\">\n\t\t<div :class=\"$style.headingContainer\">\n\t\t\t<n8n-heading size=\"2xlarge\">{{ $locale.baseText('settings.communityNodes') }}</n8n-heading>\n\t\t\t<n8n-button\n\t\t\t\tv-if=\"\n\t\t\t\t\t!settingsStore.isQueueModeEnabled &&\n\t\t\t\t\tcommunityNodesStore.getInstalledPackages.length > 0 &&\n\t\t\t\t\t!loading\n\t\t\t\t\"\n\t\t\t\t:label=\"$locale.baseText('settings.communityNodes.installModal.installButton.label')\"\n\t\t\t\tsize=\"large\"\n\t\t\t\t@click=\"openInstallModal\"\n\t\t\t/>\n\t\t</div>\n\t\t<div v-if=\"settingsStore.isQueueModeEnabled\" :class=\"$style.actionBoxContainer\">\n\t\t\t<n8n-action-box\n\t\t\t\t:heading=\"$locale.baseText('settings.communityNodes.empty.title')\"\n\t\t\t\t:description=\"getEmptyStateDescription\"\n\t\t\t\t:callout-text=\"actionBoxConfig.calloutText\"\n\t\t\t\t:callout-theme=\"actionBoxConfig.calloutTheme\"\n\t\t\t/>\n\t\t</div>\n\t\t<div v-else-if=\"loading\" :class=\"$style.cardsContainer\">\n\t\t\t<CommunityPackageCard\n\t\t\t\tv-for=\"n in 2\"\n\t\t\t\t:key=\"'index-' + n\"\n\t\t\t\t:loading=\"true\"\n\t\t\t></CommunityPackageCard>\n\t\t</div>\n\t\t<div\n\t\t\tv-else-if=\"communityNodesStore.getInstalledPackages.length === 0\"\n\t\t\t:class=\"$style.actionBoxContainer\"\n\t\t>\n\t\t\t<n8n-action-box\n\t\t\t\t:heading=\"$locale.baseText('settings.communityNodes.empty.title')\"\n\t\t\t\t:description=\"getEmptyStateDescription\"\n\t\t\t\t:button-text=\"getEmptyStateButtonText\"\n\t\t\t\t:callout-text=\"actionBoxConfig.calloutText\"\n\t\t\t\t:callout-theme=\"actionBoxConfig.calloutTheme\"\n\t\t\t\t@click:button=\"onClickEmptyStateButton\"\n\t\t\t/>\n\t\t</div>\n\t\t<div v-else :class=\"$style.cardsContainer\">\n\t\t\t<CommunityPackageCard\n\t\t\t\tv-for=\"communityPackage in communityNodesStore.getInstalledPackages\"\n\t\t\t\t:key=\"communityPackage.packageName\"\n\t\t\t\t:community-package=\"communityPackage\"\n\t\t\t></CommunityPackageCard>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport {\n\tCOMMUNITY_PACKAGE_INSTALL_MODAL_KEY,\n\tCOMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\tCOMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL,\n\tCOMMUNITY_NODES_NPM_INSTALLATION_URL,\n} from '@/constants';\nimport CommunityPackageCard from '@/components/CommunityPackageCard.vue';\nimport { useToast } from '@/composables/useToast';\nimport type { PublicInstalledPackage } from 'n8n-workflow';\n\nimport { useCommunityNodesStore } from '@/stores/communityNodes.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { mapStores } from 'pinia';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { defineComponent } from 'vue';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\nimport { useRouter } from 'vue-router';\nimport { usePushConnection } from '@/composables/usePushConnection';\nimport { usePushConnectionStore } from '@/stores/pushConnection.store';\n\nconst PACKAGE_COUNT_THRESHOLD = 31;\n\nexport default defineComponent({\n\tname: 'SettingsCommunityNodesView',\n\tcomponents: {\n\t\tCommunityPackageCard,\n\t},\n\tsetup() {\n\t\tconst router = useRouter();\n\t\tconst pushConnection = usePushConnection({ router });\n\t\tconst externalHooks = useExternalHooks();\n\n\t\treturn {\n\t\t\texternalHooks,\n\t\t\t...useToast(),\n\t\t\tpushConnection,\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t};\n\t},\n\tbeforeMount() {\n\t\tthis.pushConnection.initialize();\n\t\t// The push connection is needed here to receive `reloadNodeType` and `removeNodeType` events when community nodes are installed, updated, or removed.\n\t\tthis.pushStore.pushConnect();\n\t},\n\tasync mounted() {\n\t\ttry {\n\t\t\tthis.loading = true;\n\t\t\tawait this.communityNodesStore.fetchInstalledPackages();\n\n\t\t\tconst installedPackages: PublicInstalledPackage[] =\n\t\t\t\tthis.communityNodesStore.getInstalledPackages;\n\t\t\tconst packagesToUpdate: PublicInstalledPackage[] = installedPackages.filter(\n\t\t\t\t(p) => p.updateAvailable,\n\t\t\t);\n\t\t\tthis.$telemetry.track('user viewed cnr settings page', {\n\t\t\t\tnum_of_packages_installed: installedPackages.length,\n\t\t\t\tinstalled_packages: installedPackages.map((p) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpackage_name: p.packageName,\n\t\t\t\t\t\tpackage_version: p.installedVersion,\n\t\t\t\t\t\tpackage_nodes: p.installedNodes.map((node) => `${node.name}-v${node.latestVersion}`),\n\t\t\t\t\t\tis_update_available: p.updateAvailable !== undefined,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\tpackages_to_update: packagesToUpdate.map((p) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpackage_name: p.packageName,\n\t\t\t\t\t\tpackage_version_current: p.installedVersion,\n\t\t\t\t\t\tpackage_version_available: p.updateAvailable,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\tnumber_of_updates_available: packagesToUpdate.length,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis.showError(\n\t\t\t\terror,\n\t\t\t\tthis.$locale.baseText('settings.communityNodes.fetchError.title'),\n\t\t\t\tthis.$locale.baseText('settings.communityNodes.fetchError.message'),\n\t\t\t);\n\t\t} finally {\n\t\t\tthis.loading = false;\n\t\t}\n\t\ttry {\n\t\t\tawait this.communityNodesStore.fetchAvailableCommunityPackageCount();\n\t\t} finally {\n\t\t\tthis.loading = false;\n\t\t}\n\t},\n\tbeforeUnmount() {\n\t\tthis.pushStore.pushDisconnect();\n\t\tthis.pushConnection.terminate();\n\t},\n\tcomputed: {\n\t\t...mapStores(useCommunityNodesStore, useSettingsStore, useUIStore, usePushConnectionStore),\n\t\tgetEmptyStateDescription(): string {\n\t\t\tconst packageCount = this.communityNodesStore.availablePackageCount;\n\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.$locale.baseText('contextual.communityNodes.unavailable.description.desktop');\n\t\t\t}\n\n\t\t\treturn packageCount < PACKAGE_COUNT_THRESHOLD\n\t\t\t\t? this.$locale.baseText('settings.communityNodes.empty.description.no-packages', {\n\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\tdocURL: COMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t: this.$locale.baseText('settings.communityNodes.empty.description', {\n\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\tdocURL: COMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\t\t\t\t\t\t\tcount: (Math.floor(packageCount / 10) * 10).toString(),\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t},\n\t\tgetEmptyStateButtonText(): string {\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.$locale.baseText('contextual.communityNodes.unavailable.button.desktop');\n\t\t\t}\n\n\t\t\treturn this.shouldShowInstallButton\n\t\t\t\t? this.$locale.baseText('settings.communityNodes.empty.installPackageLabel')\n\t\t\t\t: '';\n\t\t},\n\t\tshouldShowInstallButton(): boolean {\n\t\t\treturn this.settingsStore.isDesktopDeployment || this.settingsStore.isNpmAvailable;\n\t\t},\n\t\tactionBoxConfig(): {\n\t\t\tcalloutText: string;\n\t\t\tcalloutTheme: 'warning' | string;\n\t\t\thideButton: boolean;\n\t\t} {\n\t\t\tif (!this.settingsStore.isNpmAvailable) {\n\t\t\t\treturn {\n\t\t\t\t\tcalloutText: this.$locale.baseText('settings.communityNodes.npmUnavailable.warning', {\n\t\t\t\t\t\tinterpolate: { npmUrl: COMMUNITY_NODES_NPM_INSTALLATION_URL },\n\t\t\t\t\t}),\n\t\t\t\t\tcalloutTheme: 'warning',\n\t\t\t\t\thideButton: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.settingsStore.isQueueModeEnabled) {\n\t\t\t\treturn {\n\t\t\t\t\tcalloutText: this.$locale.baseText('settings.communityNodes.queueMode.warning', {\n\t\t\t\t\t\tinterpolate: { docURL: COMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL },\n\t\t\t\t\t}),\n\t\t\t\t\tcalloutTheme: 'warning',\n\t\t\t\t\thideButton: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcalloutText: '',\n\t\t\t\tcalloutTheme: '',\n\t\t\t\thideButton: false,\n\t\t\t};\n\t\t},\n\t},\n\tmethods: {\n\t\tonClickEmptyStateButton(): void {\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.goToUpgrade();\n\t\t\t}\n\n\t\t\tthis.openInstallModal();\n\t\t},\n\t\tgoToUpgrade(): void {\n\t\t\tvoid this.uiStore.goToUpgrade('community-nodes', 'upgrade-community-nodes');\n\t\t},\n\t\topenInstallModal(): void {\n\t\t\tconst telemetryPayload = {\n\t\t\t\tis_empty_state: this.communityNodesStore.getInstalledPackages.length === 0,\n\t\t\t};\n\t\t\tthis.$telemetry.track('user clicked cnr install button', telemetryPayload);\n\n\t\t\tvoid this.externalHooks.run('settingsCommunityNodesView.openInstallModal', telemetryPayload);\n\t\t\tthis.uiStore.openModal(COMMUNITY_PACKAGE_INSTALL_MODAL_KEY);\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\t> * {\n\t\tmargin-bottom: var(--spacing-2xl);\n\t}\n}\n\n.headingContainer {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n\n.loadingContainer {\n\tdisplay: flex;\n\tgap: var(--spacing-xs);\n}\n\n.actionBoxContainer {\n\ttext-align: center;\n}\n\n.cardsContainer {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--spacing-2xs);\n}\n</style>\n"],"names":["_sfc_main$1","defineComponent","COMMUNITY_PACKAGE_MANAGE_ACTIONS","mapStores","useUIStore","value","NPM_PACKAGE_DOCS_BASE_URL","_resolveComponent","loading","_ctx","_openBlock","_createElementBlock","$style","_normalizeClass","_component_n8n_loading","_createVNode","_component_n8n_text","_createTextVNode","_toDisplayString","_createElementVNode","communityPackage","_Fragment","_renderList","node","index","_hoisted_1","_createCommentVNode","_createBlock","_component_n8n_tooltip","_withCtx","_component_n8n_icon","_component_n8n_button","onUpdateClick","onAction","PACKAGE_COUNT_THRESHOLD","_sfc_main","CommunityPackageCard","router","useRouter","pushConnection","usePushConnection","useExternalHooks","useToast","installedPackages","packagesToUpdate","p","error","useCommunityNodesStore","useSettingsStore","usePushConnectionStore","packageCount","COMMUNITY_NODES_INSTALLATION_DOCS_URL","COMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL","COMMUNITY_NODES_NPM_INSTALLATION_URL","telemetryPayload","COMMUNITY_PACKAGE_INSTALL_MODAL_KEY","_component_n8n_heading","$locale","settingsStore","openInstallModal","_component_n8n_action_box","getEmptyStateDescription","actionBoxConfig","n","_component_CommunityPackageCard","communityNodesStore","getEmptyStateButtonText","onClickEmptyStateButton"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsCommunityNodesView-4ma9ZrA6.js","sources":["../../src/components/CommunityPackageCard.vue","../../src/views/SettingsCommunityNodesView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.cardContainer\">\n\t\t<div v-if=\"loading\" :class=\"$style.cardSkeleton\">\n\t\t\t<n8n-loading :class=\"$style.loader\" variant=\"p\" :rows=\"1\" />\n\t\t\t<n8n-loading :class=\"$style.loader\" variant=\"p\" :rows=\"1\" />\n\t\t</div>\n\t\t<div v-else :class=\"$style.packageCard\">\n\t\t\t<div :class=\"$style.cardInfoContainer\">\n\t\t\t\t<div :class=\"$style.cardTitle\">\n\t\t\t\t\t<n8n-text :bold=\"true\" size=\"large\">{{ communityPackage.packageName }}</n8n-text>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.cardSubtitle\">\n\t\t\t\t\t<n8n-text :bold=\"true\" size=\"small\" color=\"text-light\">\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t$locale.baseText('settings.communityNodes.packageNodes.label', {\n\t\t\t\t\t\t\t\tadjustToNumber: communityPackage.installedNodes.length,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}: \n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-text size=\"small\" color=\"text-light\">\n\t\t\t\t\t\t<span v-for=\"(node, index) in communityPackage.installedNodes\" :key=\"node.name\">\n\t\t\t\t\t\t\t{{ node.name\n\t\t\t\t\t\t\t}}<span v-if=\"index != communityPackage.installedNodes.length - 1\">,</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.cardControlsContainer\">\n\t\t\t\t<n8n-text :bold=\"true\" size=\"large\" color=\"text-light\">\n\t\t\t\t\tv{{ communityPackage.installedVersion }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<n8n-tooltip v-if=\"communityPackage.failedLoading === true\" placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.failedToLoad.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-icon icon=\"exclamation-triangle\" color=\"danger\" size=\"large\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<n8n-tooltip v-else-if=\"communityPackage.updateAvailable\" placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.updateAvailable.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-button outline label=\"Update\" @click=\"onUpdateClick\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<n8n-tooltip v-else placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.upToDate.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-icon icon=\"check-circle\" color=\"text-light\" size=\"large\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<div :class=\"$style.cardActions\">\n\t\t\t\t\t<n8n-action-toggle :actions=\"packageActions\" @action=\"onAction\"></n8n-action-toggle>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { useUIStore } from '@/stores/ui.store';\nimport type { PublicInstalledPackage } from 'n8n-workflow';\nimport { mapStores } from 'pinia';\nimport { defineComponent } from 'vue';\nimport { NPM_PACKAGE_DOCS_BASE_URL, COMMUNITY_PACKAGE_MANAGE_ACTIONS } from '@/constants';\n\nexport default defineComponent({\n\tname: 'CommunityPackageCard',\n\tprops: {\n\t\tcommunityPackage: {\n\t\t\ttype: Object as () => PublicInstalledPackage,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpackageActions: [\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.communityNodes.viewDocsAction.label'),\n\t\t\t\t\tvalue: COMMUNITY_PACKAGE_MANAGE_ACTIONS.VIEW_DOCS,\n\t\t\t\t\ttype: 'external-link',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.communityNodes.uninstallAction.label'),\n\t\t\t\t\tvalue: COMMUNITY_PACKAGE_MANAGE_ACTIONS.UNINSTALL,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useUIStore),\n\t},\n\tmethods: {\n\t\tasync onAction(value: string) {\n\t\t\tswitch (value) {\n\t\t\t\tcase COMMUNITY_PACKAGE_MANAGE_ACTIONS.VIEW_DOCS:\n\t\t\t\t\tthis.$telemetry.track('user clicked to browse the cnr package documentation', {\n\t\t\t\t\t\tpackage_name: this.communityPackage.packageName,\n\t\t\t\t\t\tpackage_version: this.communityPackage.installedVersion,\n\t\t\t\t\t});\n\t\t\t\t\twindow.open(`${NPM_PACKAGE_DOCS_BASE_URL}${this.communityPackage.packageName}`, '_blank');\n\t\t\t\t\tbreak;\n\t\t\t\tcase COMMUNITY_PACKAGE_MANAGE_ACTIONS.UNINSTALL:\n\t\t\t\t\tthis.uiStore.openCommunityPackageUninstallConfirmModal(this.communityPackage.packageName);\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\tonUpdateClick() {\n\t\t\tthis.uiStore.openCommunityPackageUpdateConfirmModal(this.communityPackage.packageName);\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.cardContainer {\n\tdisplay: flex;\n\tpadding: var(--spacing-s);\n\tborder: var(--border-width-base) var(--border-style-base) var(--color-info-tint-1);\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-background-xlight);\n}\n\n.packageCard,\n.cardSkeleton {\n\tdisplay: flex;\n\tflex-basis: 100%;\n\tjustify-content: space-between;\n}\n\n.packageCard {\n\talign-items: center;\n}\n\n.cardSkeleton {\n\tflex-direction: column;\n}\n\n.loader {\n\twidth: 50%;\n\ttransform: scaleY(-1);\n\n\t&:last-child {\n\t\twidth: 70%;\n\n\t\tdiv {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n.cardInfoContainer {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n\n.cardTitle {\n\tflex-basis: 100%;\n\n\tspan {\n\t\tline-height: 1;\n\t}\n}\n\n.cardSubtitle {\n\tmargin-top: 2px;\n\tpadding-right: var(--spacing-m);\n}\n\n.cardControlsContainer {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--spacing-3xs);\n}\n\n.cardActions {\n\tpadding-left: var(--spacing-3xs);\n}\n</style>\n","<template>\n\t<div :class=\"$style.container\">\n\t\t<div :class=\"$style.headingContainer\">\n\t\t\t<n8n-heading size=\"2xlarge\">{{ $locale.baseText('settings.communityNodes') }}</n8n-heading>\n\t\t\t<n8n-button\n\t\t\t\tv-if=\"\n\t\t\t\t\t!settingsStore.isQueueModeEnabled &&\n\t\t\t\t\tcommunityNodesStore.getInstalledPackages.length > 0 &&\n\t\t\t\t\t!loading\n\t\t\t\t\"\n\t\t\t\t:label=\"$locale.baseText('settings.communityNodes.installModal.installButton.label')\"\n\t\t\t\tsize=\"large\"\n\t\t\t\t@click=\"openInstallModal\"\n\t\t\t/>\n\t\t</div>\n\t\t<div v-if=\"settingsStore.isQueueModeEnabled\" :class=\"$style.actionBoxContainer\">\n\t\t\t<n8n-action-box\n\t\t\t\t:heading=\"$locale.baseText('settings.communityNodes.empty.title')\"\n\t\t\t\t:description=\"getEmptyStateDescription\"\n\t\t\t\t:callout-text=\"actionBoxConfig.calloutText\"\n\t\t\t\t:callout-theme=\"actionBoxConfig.calloutTheme\"\n\t\t\t/>\n\t\t</div>\n\t\t<div v-else-if=\"loading\" :class=\"$style.cardsContainer\">\n\t\t\t<CommunityPackageCard\n\t\t\t\tv-for=\"n in 2\"\n\t\t\t\t:key=\"'index-' + n\"\n\t\t\t\t:loading=\"true\"\n\t\t\t></CommunityPackageCard>\n\t\t</div>\n\t\t<div\n\t\t\tv-else-if=\"communityNodesStore.getInstalledPackages.length === 0\"\n\t\t\t:class=\"$style.actionBoxContainer\"\n\t\t>\n\t\t\t<n8n-action-box\n\t\t\t\t:heading=\"$locale.baseText('settings.communityNodes.empty.title')\"\n\t\t\t\t:description=\"getEmptyStateDescription\"\n\t\t\t\t:button-text=\"getEmptyStateButtonText\"\n\t\t\t\t:callout-text=\"actionBoxConfig.calloutText\"\n\t\t\t\t:callout-theme=\"actionBoxConfig.calloutTheme\"\n\t\t\t\t@click:button=\"onClickEmptyStateButton\"\n\t\t\t/>\n\t\t</div>\n\t\t<div v-else :class=\"$style.cardsContainer\">\n\t\t\t<CommunityPackageCard\n\t\t\t\tv-for=\"communityPackage in communityNodesStore.getInstalledPackages\"\n\t\t\t\t:key=\"communityPackage.packageName\"\n\t\t\t\t:community-package=\"communityPackage\"\n\t\t\t></CommunityPackageCard>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport {\n\tCOMMUNITY_PACKAGE_INSTALL_MODAL_KEY,\n\tCOMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\tCOMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL,\n\tCOMMUNITY_NODES_NPM_INSTALLATION_URL,\n} from '@/constants';\nimport CommunityPackageCard from '@/components/CommunityPackageCard.vue';\nimport { useToast } from '@/composables/useToast';\nimport type { PublicInstalledPackage } from 'n8n-workflow';\n\nimport { useCommunityNodesStore } from '@/stores/communityNodes.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { mapStores } from 'pinia';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { defineComponent } from 'vue';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\nimport { useRouter } from 'vue-router';\nimport { usePushConnection } from '@/composables/usePushConnection';\nimport { usePushConnectionStore } from '@/stores/pushConnection.store';\n\nconst PACKAGE_COUNT_THRESHOLD = 31;\n\nexport default defineComponent({\n\tname: 'SettingsCommunityNodesView',\n\tcomponents: {\n\t\tCommunityPackageCard,\n\t},\n\tsetup() {\n\t\tconst router = useRouter();\n\t\tconst pushConnection = usePushConnection({ router });\n\t\tconst externalHooks = useExternalHooks();\n\n\t\treturn {\n\t\t\texternalHooks,\n\t\t\t...useToast(),\n\t\t\tpushConnection,\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t};\n\t},\n\tbeforeMount() {\n\t\tthis.pushConnection.initialize();\n\t\t// The push connection is needed here to receive `reloadNodeType` and `removeNodeType` events when community nodes are installed, updated, or removed.\n\t\tthis.pushStore.pushConnect();\n\t},\n\tasync mounted() {\n\t\ttry {\n\t\t\tthis.loading = true;\n\t\t\tawait this.communityNodesStore.fetchInstalledPackages();\n\n\t\t\tconst installedPackages: PublicInstalledPackage[] =\n\t\t\t\tthis.communityNodesStore.getInstalledPackages;\n\t\t\tconst packagesToUpdate: PublicInstalledPackage[] = installedPackages.filter(\n\t\t\t\t(p) => p.updateAvailable,\n\t\t\t);\n\t\t\tthis.$telemetry.track('user viewed cnr settings page', {\n\t\t\t\tnum_of_packages_installed: installedPackages.length,\n\t\t\t\tinstalled_packages: installedPackages.map((p) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpackage_name: p.packageName,\n\t\t\t\t\t\tpackage_version: p.installedVersion,\n\t\t\t\t\t\tpackage_nodes: p.installedNodes.map((node) => `${node.name}-v${node.latestVersion}`),\n\t\t\t\t\t\tis_update_available: p.updateAvailable !== undefined,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\tpackages_to_update: packagesToUpdate.map((p) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpackage_name: p.packageName,\n\t\t\t\t\t\tpackage_version_current: p.installedVersion,\n\t\t\t\t\t\tpackage_version_available: p.updateAvailable,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\tnumber_of_updates_available: packagesToUpdate.length,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis.showError(\n\t\t\t\terror,\n\t\t\t\tthis.$locale.baseText('settings.communityNodes.fetchError.title'),\n\t\t\t\tthis.$locale.baseText('settings.communityNodes.fetchError.message'),\n\t\t\t);\n\t\t} finally {\n\t\t\tthis.loading = false;\n\t\t}\n\t\ttry {\n\t\t\tawait this.communityNodesStore.fetchAvailableCommunityPackageCount();\n\t\t} finally {\n\t\t\tthis.loading = false;\n\t\t}\n\t},\n\tbeforeUnmount() {\n\t\tthis.pushStore.pushDisconnect();\n\t\tthis.pushConnection.terminate();\n\t},\n\tcomputed: {\n\t\t...mapStores(useCommunityNodesStore, useSettingsStore, useUIStore, usePushConnectionStore),\n\t\tgetEmptyStateDescription(): string {\n\t\t\tconst packageCount = this.communityNodesStore.availablePackageCount;\n\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.$locale.baseText('contextual.communityNodes.unavailable.description.desktop');\n\t\t\t}\n\n\t\t\treturn packageCount < PACKAGE_COUNT_THRESHOLD\n\t\t\t\t? this.$locale.baseText('settings.communityNodes.empty.description.no-packages', {\n\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\tdocURL: COMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t: this.$locale.baseText('settings.communityNodes.empty.description', {\n\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\tdocURL: COMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\t\t\t\t\t\t\tcount: (Math.floor(packageCount / 10) * 10).toString(),\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t},\n\t\tgetEmptyStateButtonText(): string {\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.$locale.baseText('contextual.communityNodes.unavailable.button.desktop');\n\t\t\t}\n\n\t\t\treturn this.shouldShowInstallButton\n\t\t\t\t? this.$locale.baseText('settings.communityNodes.empty.installPackageLabel')\n\t\t\t\t: '';\n\t\t},\n\t\tshouldShowInstallButton(): boolean {\n\t\t\treturn this.settingsStore.isDesktopDeployment || this.settingsStore.isNpmAvailable;\n\t\t},\n\t\tactionBoxConfig(): {\n\t\t\tcalloutText: string;\n\t\t\tcalloutTheme: 'warning' | string;\n\t\t\thideButton: boolean;\n\t\t} {\n\t\t\tif (!this.settingsStore.isNpmAvailable) {\n\t\t\t\treturn {\n\t\t\t\t\tcalloutText: this.$locale.baseText('settings.communityNodes.npmUnavailable.warning', {\n\t\t\t\t\t\tinterpolate: { npmUrl: COMMUNITY_NODES_NPM_INSTALLATION_URL },\n\t\t\t\t\t}),\n\t\t\t\t\tcalloutTheme: 'warning',\n\t\t\t\t\thideButton: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.settingsStore.isQueueModeEnabled) {\n\t\t\t\treturn {\n\t\t\t\t\tcalloutText: this.$locale.baseText('settings.communityNodes.queueMode.warning', {\n\t\t\t\t\t\tinterpolate: { docURL: COMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL },\n\t\t\t\t\t}),\n\t\t\t\t\tcalloutTheme: 'warning',\n\t\t\t\t\thideButton: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcalloutText: '',\n\t\t\t\tcalloutTheme: '',\n\t\t\t\thideButton: false,\n\t\t\t};\n\t\t},\n\t},\n\tmethods: {\n\t\tonClickEmptyStateButton(): void {\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.goToUpgrade();\n\t\t\t}\n\n\t\t\tthis.openInstallModal();\n\t\t},\n\t\tgoToUpgrade(): void {\n\t\t\tvoid this.uiStore.goToUpgrade('community-nodes', 'upgrade-community-nodes');\n\t\t},\n\t\topenInstallModal(): void {\n\t\t\tconst telemetryPayload = {\n\t\t\t\tis_empty_state: this.communityNodesStore.getInstalledPackages.length === 0,\n\t\t\t};\n\t\t\tthis.$telemetry.track('user clicked cnr install button', telemetryPayload);\n\n\t\t\tvoid this.externalHooks.run('settingsCommunityNodesView.openInstallModal', telemetryPayload);\n\t\t\tthis.uiStore.openModal(COMMUNITY_PACKAGE_INSTALL_MODAL_KEY);\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\t> * {\n\t\tmargin-bottom: var(--spacing-2xl);\n\t}\n}\n\n.headingContainer {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n\n.loadingContainer {\n\tdisplay: flex;\n\tgap: var(--spacing-xs);\n}\n\n.actionBoxContainer {\n\ttext-align: center;\n}\n\n.cardsContainer {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--spacing-2xs);\n}\n</style>\n"],"names":["_sfc_main$1","defineComponent","COMMUNITY_PACKAGE_MANAGE_ACTIONS","mapStores","useUIStore","value","NPM_PACKAGE_DOCS_BASE_URL","_resolveComponent","loading","_ctx","_openBlock","_createElementBlock","$style","_normalizeClass","_component_n8n_loading","_createVNode","_component_n8n_text","_createTextVNode","_toDisplayString","_createElementVNode","communityPackage","_Fragment","_renderList","node","index","_hoisted_1","_createCommentVNode","_createBlock","_component_n8n_tooltip","_withCtx","_component_n8n_icon","_component_n8n_button","onUpdateClick","onAction","PACKAGE_COUNT_THRESHOLD","_sfc_main","CommunityPackageCard","router","useRouter","pushConnection","usePushConnection","useExternalHooks","useToast","installedPackages","packagesToUpdate","p","error","useCommunityNodesStore","useSettingsStore","usePushConnectionStore","packageCount","COMMUNITY_NODES_INSTALLATION_DOCS_URL","COMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL","COMMUNITY_NODES_NPM_INSTALLATION_URL","telemetryPayload","COMMUNITY_PACKAGE_INSTALL_MODAL_KEY","_component_n8n_heading","$locale","settingsStore","openInstallModal","_component_n8n_action_box","getEmptyStateDescription","actionBoxConfig","n","_component_CommunityPackageCard","communityNodesStore","getEmptyStateButtonText","onClickEmptyStateButton"],"mappings":"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"}
|
package/dist/assets/{SettingsExternalSecrets-LATcSwCb.js → SettingsExternalSecrets-anO5H_X6.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as A,e as $,x as I,dL as G,_ as K}from"./n8n-0pza0mdA.js";import{L,aN as Q,aO as W,aP as X}from"./index-
|
|
2
|
-
//# sourceMappingURL=SettingsExternalSecrets-
|
|
1
|
+
import{u as A,e as $,x as I,dL as G,_ as K}from"./n8n-0pza0mdA.js";import{L,aN as Q,aO as W,aP as X}from"./index-6M_Mo9yq.js";import{D as Y}from"./luxon-ZRIU05qF.js";import{G as N,_ as H,e as _,b as O,ag as i,l as s,M as x,O as a,I as u,u as t,T as d,R as c,S as v,p as l,Q as J,m as f,n as Z,F as ee,a7 as te}from"./vendor-KLOX9vbo.js";import"./lodash-es-wI9avrph.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./esprima-next-ulPLCZ1Z.js";import"./pinia-28uZ5ZtB.js";import"./@vueuse/core-JpwZAlxf.js";import"./uuid-McvpxQtQ.js";import"./vue-i18n-Cb1fO4GA.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./@n8n/codemirror-lang-sql-_W1-z7Mc.js";import"./@lezer/common-1hBQ1gIF.js";import"./prettier-XiNuC5bg.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-AlqFM-P6.js";import"./codemirror-lang-html-n8n-tmVw-mwA.js";import"./codemirror-lang-n8n-expression-71F4KZSz.js";import"./fast-json-stable-stringify-QF2cL2qw.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-ohcdYkQS.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";const ne=N({__name:"ExternalSecretsProviderCard.ee",props:{provider:{type:Object,required:!0}},setup(C){const e=C,m=L(),n=I(),y=A(),g=$(),{provider:o}=H(e),p=_(()=>o.value.data),{connectionState:S,initialConnectionState:E,normalizedProviderData:w,testConnection:h,setConnectionState:T}=Q(o,p),b=_(()=>[{value:"setup",label:n.baseText("settings.externalSecrets.card.actionDropdown.setup")},...e.provider.connected?[{value:"reload",label:n.baseText("settings.externalSecrets.card.actionDropdown.reload")}]:[]]),M=_(()=>e.provider.connected||Object.keys(e.provider.data).length>0),R=_(r=>Y.fromISO(e.provider.connectedAt??new Date).toFormat("dd LLL yyyy"));O(()=>{T(e.provider.state)});async function U(){return e.provider.connected?!0:(await m.getProvider(e.provider.name),await Z(),await h()!=="error")}function D(){y.openModalWithData({name:G,data:{name:e.provider.name}})}async function V(){try{await m.reloadProvider(e.provider.name),g.showMessage({title:n.baseText("settings.externalSecrets.card.reload.success.title"),message:n.baseText("settings.externalSecrets.card.reload.success.description",{interpolate:{provider:e.provider.displayName}}),type:"success"})}catch(r){g.showError(r,n.baseText("error"))}}async function z(r){switch(r){case"setup":D();break;case"reload":await V();break}}return(r,B)=>{const P=i("n8n-text"),F=i("n8n-action-toggle"),j=i("n8n-button"),q=i("n8n-card");return s(),x(q,{class:u(r.$style.card)},{default:a(()=>[l("div",{class:u(r.$style.cardBody)},[d(W,{class:u(r.$style.cardImage),provider:t(o)},null,8,["class","provider"]),l("div",{class:u(r.$style.cardContent)},[d(P,{bold:""},{default:a(()=>[v(c(t(o).displayName),1)]),_:1}),t(o).connected?(s(),x(P,{key:0,color:"text-light",size:"small"},{default:a(()=>{var k;return[l("span",null,c(t(n).baseText("settings.externalSecrets.card.secretsCount",{interpolate:{count:`${(k=t(m).secrets[t(o).name])==null?void 0:k.length}`}})),1),v(" | "),l("span",null,c(t(n).baseText("settings.externalSecrets.card.connectedAt",{interpolate:{date:R.value}})),1)]}),_:1})):J("",!0)],2),M.value?(s(),f("div",{key:0,class:u(r.$style.cardActions)},[d(X,{provider:t(o),"before-update":U,disabled:t(S)==="error"&&!t(o).connected},null,8,["provider","disabled"]),d(F,{class:"ml-s",theme:"dark",actions:b.value,onAction:z},null,8,["actions"])],2)):(s(),x(j,{key:1,type:"tertiary",onClick:B[0]||(B[0]=k=>D())},{default:a(()=>[v(c(t(n).baseText("settings.externalSecrets.card.setUp")),1)]),_:1}))],2)]),_:1},8,["class"])}}}),re="_card_1v5vt_1",oe="_cardImage_1v5vt_6",se="_cardBody_1v5vt_11",ae="_cardContent_1v5vt_17",ce="_cardActions_1v5vt_24",ie={card:re,cardImage:oe,cardBody:se,cardContent:ae,cardActions:ce},de={$style:ie},le=K(ne,[["__cssModules",de]]),pe={class:"pb-3xl"},me={key:0,"data-test-id":"external-secrets-content-licensed"},ue=["href"],_e=["href"],je=N({__name:"SettingsExternalSecrets",setup(C){const e=I(),m=A(),n=L(),y=$(),g=_(()=>[...n.providers].sort((p,S)=>S.name.localeCompare(p.name)));O(()=>{if(n.isEnterpriseExternalSecretsEnabled)try{n.fetchAllSecrets(),n.getProviders()}catch(p){y.showError(p,e.baseText("error"))}});function o(){m.goToUpgrade("external-secrets","upgrade-external-secrets")}return(p,S)=>{const E=i("n8n-heading"),w=i("n8n-callout"),h=i("i18n-t"),T=i("n8n-action-box");return s(),f("div",pe,[d(E,{size:"2xlarge"},{default:a(()=>[v(c(t(e).baseText("settings.externalSecrets.title")),1)]),_:1}),t(n).isEnterpriseExternalSecretsEnabled?(s(),f("div",me,[d(w,{theme:"secondary",class:"mt-2xl mb-l"},{default:a(()=>[v(c(t(e).baseText("settings.externalSecrets.info"))+" ",1),l("a",{href:t(e).baseText("settings.externalSecrets.docs"),target:"_blank"},c(t(e).baseText("settings.externalSecrets.info.link")),9,ue)]),_:1}),(s(!0),f(ee,null,te(g.value,b=>(s(),x(le,{key:b.name,provider:b},null,8,["provider"]))),128))])):(s(),x(T,{key:1,class:"mt-2xl mb-l","data-test-id":"external-secrets-content-unlicensed","button-text":t(e).baseText("settings.externalSecrets.actionBox.buttonText"),onClick:o},{heading:a(()=>[l("span",null,c(t(e).baseText("settings.externalSecrets.actionBox.title")),1)]),description:a(()=>[d(h,{keypath:"settings.externalSecrets.actionBox.description"},{link:a(()=>[l("a",{href:t(e).baseText("settings.externalSecrets.docs"),target:"_blank"},c(t(e).baseText("settings.externalSecrets.actionBox.description.link")),9,_e)]),_:1})]),_:1},8,["button-text"]))])}}});export{je as default};
|
|
2
|
+
//# sourceMappingURL=SettingsExternalSecrets-anO5H_X6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsExternalSecrets-LATcSwCb.js","sources":["../../src/components/ExternalSecretsProviderCard.ee.vue","../../src/views/SettingsExternalSecrets.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { PropType, Ref } from 'vue';\nimport type { ExternalSecretsProvider } from '@/Interface';\nimport ExternalSecretsProviderImage from '@/components/ExternalSecretsProviderImage.ee.vue';\nimport ExternalSecretsProviderConnectionSwitch from '@/components/ExternalSecretsProviderConnectionSwitch.ee.vue';\nimport { useExternalSecretsStore } from '@/stores/externalSecrets.ee.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useToast } from '@/composables/useToast';\nimport { useI18n } from '@/composables/useI18n';\nimport { useExternalSecretsProvider } from '@/composables/useExternalSecretsProvider';\nimport { EXTERNAL_SECRETS_PROVIDER_MODAL_KEY } from '@/constants';\nimport { DateTime } from 'luxon';\nimport { computed, nextTick, onMounted, toRefs } from 'vue';\n\nconst props = defineProps({\n\tprovider: {\n\t\ttype: Object as PropType<ExternalSecretsProvider>,\n\t\trequired: true,\n\t},\n});\n\nconst externalSecretsStore = useExternalSecretsStore();\nconst i18n = useI18n();\nconst uiStore = useUIStore();\nconst toast = useToast();\n\nconst { provider } = toRefs(props) as Ref<ExternalSecretsProvider>;\nconst providerData = computed(() => provider.value.data);\nconst {\n\tconnectionState,\n\tinitialConnectionState,\n\tnormalizedProviderData,\n\ttestConnection,\n\tsetConnectionState,\n} = useExternalSecretsProvider(provider, providerData);\n\nconst actionDropdownOptions = computed(() => [\n\t{\n\t\tvalue: 'setup',\n\t\tlabel: i18n.baseText('settings.externalSecrets.card.actionDropdown.setup'),\n\t},\n\t...(props.provider.connected\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'reload',\n\t\t\t\t\tlabel: i18n.baseText('settings.externalSecrets.card.actionDropdown.reload'),\n\t\t\t\t},\n\t\t\t]\n\t\t: []),\n]);\n\nconst canConnect = computed(() => {\n\treturn props.provider.connected || Object.keys(props.provider.data).length > 0;\n});\n\nconst formattedDate = computed((provider: ExternalSecretsProvider) => {\n\treturn DateTime.fromISO(props.provider.connectedAt ?? new Date()).toFormat('dd LLL yyyy');\n});\n\nonMounted(() => {\n\tsetConnectionState(props.provider.state);\n});\n\nasync function onBeforeConnectionUpdate() {\n\tif (props.provider.connected) {\n\t\treturn true;\n\t}\n\n\tawait externalSecretsStore.getProvider(props.provider.name);\n\tawait nextTick();\n\tconst status = await testConnection();\n\n\treturn status !== 'error';\n}\n\nfunction openExternalSecretProvider() {\n\tuiStore.openModalWithData({\n\t\tname: EXTERNAL_SECRETS_PROVIDER_MODAL_KEY,\n\t\tdata: { name: props.provider.name },\n\t});\n}\n\nasync function reloadProvider() {\n\ttry {\n\t\tawait externalSecretsStore.reloadProvider(props.provider.name);\n\t\ttoast.showMessage({\n\t\t\ttitle: i18n.baseText('settings.externalSecrets.card.reload.success.title'),\n\t\t\tmessage: i18n.baseText('settings.externalSecrets.card.reload.success.description', {\n\t\t\t\tinterpolate: { provider: props.provider.displayName },\n\t\t\t}),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('error'));\n\t}\n}\n\nasync function onActionDropdownClick(id: string) {\n\tswitch (id) {\n\t\tcase 'setup':\n\t\t\topenExternalSecretProvider();\n\t\t\tbreak;\n\t\tcase 'reload':\n\t\t\tawait reloadProvider();\n\t\t\tbreak;\n\t}\n}\n</script>\n\n<template>\n\t<n8n-card :class=\"$style.card\">\n\t\t<div :class=\"$style.cardBody\">\n\t\t\t<ExternalSecretsProviderImage :class=\"$style.cardImage\" :provider=\"provider\" />\n\t\t\t<div :class=\"$style.cardContent\">\n\t\t\t\t<n8n-text bold>{{ provider.displayName }}</n8n-text>\n\t\t\t\t<n8n-text v-if=\"provider.connected\" color=\"text-light\" size=\"small\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\ti18n.baseText('settings.externalSecrets.card.secretsCount', {\n\t\t\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\t\t\tcount: `${externalSecretsStore.secrets[provider.name]?.length}`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}\n\t\t\t\t\t</span>\n\t\t\t\t\t|\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\ti18n.baseText('settings.externalSecrets.card.connectedAt', {\n\t\t\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\t\t\tdate: formattedDate,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}\n\t\t\t\t\t</span>\n\t\t\t\t</n8n-text>\n\t\t\t</div>\n\t\t\t<div v-if=\"canConnect\" :class=\"$style.cardActions\">\n\t\t\t\t<ExternalSecretsProviderConnectionSwitch\n\t\t\t\t\t:provider=\"provider\"\n\t\t\t\t\t:before-update=\"onBeforeConnectionUpdate\"\n\t\t\t\t\t:disabled=\"connectionState === 'error' && !provider.connected\"\n\t\t\t\t/>\n\t\t\t\t<n8n-action-toggle\n\t\t\t\t\tclass=\"ml-s\"\n\t\t\t\t\ttheme=\"dark\"\n\t\t\t\t\t:actions=\"actionDropdownOptions\"\n\t\t\t\t\t@action=\"onActionDropdownClick\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<n8n-button v-else type=\"tertiary\" @click=\"openExternalSecretProvider()\">\n\t\t\t\t{{ i18n.baseText('settings.externalSecrets.card.setUp') }}\n\t\t\t</n8n-button>\n\t\t</div>\n\t</n8n-card>\n</template>\n\n<style lang=\"scss\" module>\n.card {\n\tposition: relative;\n\tmargin-bottom: var(--spacing-2xs);\n}\n\n.cardImage {\n\twidth: 28px;\n\theight: 28px;\n}\n\n.cardBody {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n}\n\n.cardContent {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: var(--spacing-s);\n}\n\n.cardActions {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tmargin-left: var(--spacing-s);\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { useUIStore } from '@/stores/ui.store';\nimport { useI18n } from '@/composables/useI18n';\nimport { useToast } from '@/composables/useToast';\nimport { useExternalSecretsStore } from '@/stores/externalSecrets.ee.store';\nimport { computed, onMounted } from 'vue';\nimport ExternalSecretsProviderCard from '@/components/ExternalSecretsProviderCard.ee.vue';\nimport type { ExternalSecretsProvider } from '@/Interface';\n\nconst i18n = useI18n();\nconst uiStore = useUIStore();\nconst externalSecretsStore = useExternalSecretsStore();\nconst toast = useToast();\n\nconst sortedProviders = computed(() => {\n\treturn ([...externalSecretsStore.providers] as ExternalSecretsProvider[]).sort((a, b) => {\n\t\treturn b.name.localeCompare(a.name);\n\t});\n});\n\nonMounted(() => {\n\tif (!externalSecretsStore.isEnterpriseExternalSecretsEnabled) return;\n\ttry {\n\t\tvoid externalSecretsStore.fetchAllSecrets();\n\t\tvoid externalSecretsStore.getProviders();\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('error'));\n\t}\n});\n\nfunction goToUpgrade() {\n\tvoid uiStore.goToUpgrade('external-secrets', 'upgrade-external-secrets');\n}\n</script>\n\n<template>\n\t<div class=\"pb-3xl\">\n\t\t<n8n-heading size=\"2xlarge\">{{ i18n.baseText('settings.externalSecrets.title') }}</n8n-heading>\n\t\t<div\n\t\t\tv-if=\"externalSecretsStore.isEnterpriseExternalSecretsEnabled\"\n\t\t\tdata-test-id=\"external-secrets-content-licensed\"\n\t\t>\n\t\t\t<n8n-callout theme=\"secondary\" class=\"mt-2xl mb-l\">\n\t\t\t\t{{ i18n.baseText('settings.externalSecrets.info') }}\n\t\t\t\t<a :href=\"i18n.baseText('settings.externalSecrets.docs')\" target=\"_blank\">\n\t\t\t\t\t{{ i18n.baseText('settings.externalSecrets.info.link') }}\n\t\t\t\t</a>\n\t\t\t</n8n-callout>\n\t\t\t<ExternalSecretsProviderCard\n\t\t\t\tv-for=\"provider in sortedProviders\"\n\t\t\t\t:key=\"provider.name\"\n\t\t\t\t:provider=\"provider\"\n\t\t\t/>\n\t\t</div>\n\t\t<n8n-action-box\n\t\t\tv-else\n\t\t\tclass=\"mt-2xl mb-l\"\n\t\t\tdata-test-id=\"external-secrets-content-unlicensed\"\n\t\t\t:button-text=\"i18n.baseText('settings.externalSecrets.actionBox.buttonText')\"\n\t\t\t@click=\"goToUpgrade\"\n\t\t>\n\t\t\t<template #heading>\n\t\t\t\t<span>{{ i18n.baseText('settings.externalSecrets.actionBox.title') }}</span>\n\t\t\t</template>\n\t\t\t<template #description>\n\t\t\t\t<i18n-t keypath=\"settings.externalSecrets.actionBox.description\">\n\t\t\t\t\t<template #link>\n\t\t\t\t\t\t<a :href=\"i18n.baseText('settings.externalSecrets.docs')\" target=\"_blank\">\n\t\t\t\t\t\t\t{{ i18n.baseText('settings.externalSecrets.actionBox.description.link') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</i18n-t>\n\t\t\t</template>\n\t\t</n8n-action-box>\n\t</div>\n</template>\n"],"names":["props","__props","externalSecretsStore","useExternalSecretsStore","i18n","useI18n","uiStore","useUIStore","toast","useToast","provider","toRefs","providerData","computed","connectionState","initialConnectionState","normalizedProviderData","testConnection","setConnectionState","useExternalSecretsProvider","actionDropdownOptions","canConnect","formattedDate","DateTime","onMounted","onBeforeConnectionUpdate","nextTick","openExternalSecretProvider","EXTERNAL_SECRETS_PROVIDER_MODAL_KEY","reloadProvider","error","onActionDropdownClick","id","sortedProviders","a","b","goToUpgrade"],"mappings":"8yCAcA,MAAMA,EAAQC,EAORC,EAAuBC,IACvBC,EAAOC,IACPC,EAAUC,IACVC,EAAQC,IAER,CAAE,SAAAC,CAAA,EAAaC,EAAOX,CAAK,EAC3BY,EAAeC,EAAS,IAAMH,EAAS,MAAM,IAAI,EACjD,CACL,gBAAAI,EACA,uBAAAC,EACA,uBAAAC,EACA,eAAAC,EACA,mBAAAC,CAAA,EACGC,EAA2BT,EAAUE,CAAY,EAE/CQ,EAAwBP,EAAS,IAAM,CAC5C,CACC,MAAO,QACP,MAAOT,EAAK,SAAS,oDAAoD,CAC1E,EACA,GAAIJ,EAAM,SAAS,UAChB,CACA,CACC,MAAO,SACP,MAAOI,EAAK,SAAS,qDAAqD,CAC3E,CAAA,EAEA,CAAC,CAAA,CACJ,EAEKiB,EAAaR,EAAS,IACpBb,EAAM,SAAS,WAAa,OAAO,KAAKA,EAAM,SAAS,IAAI,EAAE,OAAS,CAC7E,EAEKsB,EAAgBT,EAAUH,GACxBa,EAAS,QAAQvB,EAAM,SAAS,iBAAmB,IAAM,EAAE,SAAS,aAAa,CACxF,EAEDwB,EAAU,IAAM,CACIN,EAAAlB,EAAM,SAAS,KAAK,CAAA,CACvC,EAED,eAAeyB,GAA2B,CACrC,OAAAzB,EAAM,SAAS,UACX,IAGR,MAAME,EAAqB,YAAYF,EAAM,SAAS,IAAI,EAC1D,MAAM0B,EAAS,EACA,MAAMT,MAEH,QACnB,CAEA,SAASU,GAA6B,CACrCrB,EAAQ,kBAAkB,CACzB,KAAMsB,EACN,KAAM,CAAE,KAAM5B,EAAM,SAAS,IAAK,CAAA,CAClC,CACF,CAEA,eAAe6B,GAAiB,CAC3B,GAAA,CACH,MAAM3B,EAAqB,eAAeF,EAAM,SAAS,IAAI,EAC7DQ,EAAM,YAAY,CACjB,MAAOJ,EAAK,SAAS,oDAAoD,EACzE,QAASA,EAAK,SAAS,2DAA4D,CAClF,YAAa,CAAE,SAAUJ,EAAM,SAAS,WAAY,CAAA,CACpD,EACD,KAAM,SAAA,CACN,QACO8B,EAAO,CACftB,EAAM,UAAUsB,EAAO1B,EAAK,SAAS,OAAO,CAAC,CAC9C,CACD,CAEA,eAAe2B,EAAsBC,EAAY,CAChD,OAAQA,EAAI,CACX,IAAK,QACuBL,IAC3B,MACD,IAAK,SACJ,MAAME,EAAe,EACrB,KACF,CACD,4iDCjGA,MAAMzB,EAAOC,IACPC,EAAUC,IACVL,EAAuBC,IACvBK,EAAQC,IAERwB,EAAkBpB,EAAS,IACxB,CAAC,GAAGX,EAAqB,SAAS,EAAgC,KAAK,CAACgC,EAAGC,IAC3EA,EAAE,KAAK,cAAcD,EAAE,IAAI,CAClC,CACD,EAEDV,EAAU,IAAM,CACf,GAAKtB,EAAqB,mCACtB,GAAA,CACEA,EAAqB,kBACrBA,EAAqB,qBAClB4B,EAAO,CACftB,EAAM,UAAUsB,EAAO1B,EAAK,SAAS,OAAO,CAAC,CAC9C,CAAA,CACA,EAED,SAASgC,GAAc,CACjB9B,EAAQ,YAAY,mBAAoB,0BAA0B,CACxE"}
|
|
1
|
+
{"version":3,"file":"SettingsExternalSecrets-anO5H_X6.js","sources":["../../src/components/ExternalSecretsProviderCard.ee.vue","../../src/views/SettingsExternalSecrets.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { PropType, Ref } from 'vue';\nimport type { ExternalSecretsProvider } from '@/Interface';\nimport ExternalSecretsProviderImage from '@/components/ExternalSecretsProviderImage.ee.vue';\nimport ExternalSecretsProviderConnectionSwitch from '@/components/ExternalSecretsProviderConnectionSwitch.ee.vue';\nimport { useExternalSecretsStore } from '@/stores/externalSecrets.ee.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useToast } from '@/composables/useToast';\nimport { useI18n } from '@/composables/useI18n';\nimport { useExternalSecretsProvider } from '@/composables/useExternalSecretsProvider';\nimport { EXTERNAL_SECRETS_PROVIDER_MODAL_KEY } from '@/constants';\nimport { DateTime } from 'luxon';\nimport { computed, nextTick, onMounted, toRefs } from 'vue';\n\nconst props = defineProps({\n\tprovider: {\n\t\ttype: Object as PropType<ExternalSecretsProvider>,\n\t\trequired: true,\n\t},\n});\n\nconst externalSecretsStore = useExternalSecretsStore();\nconst i18n = useI18n();\nconst uiStore = useUIStore();\nconst toast = useToast();\n\nconst { provider } = toRefs(props) as Ref<ExternalSecretsProvider>;\nconst providerData = computed(() => provider.value.data);\nconst {\n\tconnectionState,\n\tinitialConnectionState,\n\tnormalizedProviderData,\n\ttestConnection,\n\tsetConnectionState,\n} = useExternalSecretsProvider(provider, providerData);\n\nconst actionDropdownOptions = computed(() => [\n\t{\n\t\tvalue: 'setup',\n\t\tlabel: i18n.baseText('settings.externalSecrets.card.actionDropdown.setup'),\n\t},\n\t...(props.provider.connected\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'reload',\n\t\t\t\t\tlabel: i18n.baseText('settings.externalSecrets.card.actionDropdown.reload'),\n\t\t\t\t},\n\t\t\t]\n\t\t: []),\n]);\n\nconst canConnect = computed(() => {\n\treturn props.provider.connected || Object.keys(props.provider.data).length > 0;\n});\n\nconst formattedDate = computed((provider: ExternalSecretsProvider) => {\n\treturn DateTime.fromISO(props.provider.connectedAt ?? new Date()).toFormat('dd LLL yyyy');\n});\n\nonMounted(() => {\n\tsetConnectionState(props.provider.state);\n});\n\nasync function onBeforeConnectionUpdate() {\n\tif (props.provider.connected) {\n\t\treturn true;\n\t}\n\n\tawait externalSecretsStore.getProvider(props.provider.name);\n\tawait nextTick();\n\tconst status = await testConnection();\n\n\treturn status !== 'error';\n}\n\nfunction openExternalSecretProvider() {\n\tuiStore.openModalWithData({\n\t\tname: EXTERNAL_SECRETS_PROVIDER_MODAL_KEY,\n\t\tdata: { name: props.provider.name },\n\t});\n}\n\nasync function reloadProvider() {\n\ttry {\n\t\tawait externalSecretsStore.reloadProvider(props.provider.name);\n\t\ttoast.showMessage({\n\t\t\ttitle: i18n.baseText('settings.externalSecrets.card.reload.success.title'),\n\t\t\tmessage: i18n.baseText('settings.externalSecrets.card.reload.success.description', {\n\t\t\t\tinterpolate: { provider: props.provider.displayName },\n\t\t\t}),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('error'));\n\t}\n}\n\nasync function onActionDropdownClick(id: string) {\n\tswitch (id) {\n\t\tcase 'setup':\n\t\t\topenExternalSecretProvider();\n\t\t\tbreak;\n\t\tcase 'reload':\n\t\t\tawait reloadProvider();\n\t\t\tbreak;\n\t}\n}\n</script>\n\n<template>\n\t<n8n-card :class=\"$style.card\">\n\t\t<div :class=\"$style.cardBody\">\n\t\t\t<ExternalSecretsProviderImage :class=\"$style.cardImage\" :provider=\"provider\" />\n\t\t\t<div :class=\"$style.cardContent\">\n\t\t\t\t<n8n-text bold>{{ provider.displayName }}</n8n-text>\n\t\t\t\t<n8n-text v-if=\"provider.connected\" color=\"text-light\" size=\"small\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\ti18n.baseText('settings.externalSecrets.card.secretsCount', {\n\t\t\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\t\t\tcount: `${externalSecretsStore.secrets[provider.name]?.length}`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}\n\t\t\t\t\t</span>\n\t\t\t\t\t|\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\ti18n.baseText('settings.externalSecrets.card.connectedAt', {\n\t\t\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\t\t\tdate: formattedDate,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}\n\t\t\t\t\t</span>\n\t\t\t\t</n8n-text>\n\t\t\t</div>\n\t\t\t<div v-if=\"canConnect\" :class=\"$style.cardActions\">\n\t\t\t\t<ExternalSecretsProviderConnectionSwitch\n\t\t\t\t\t:provider=\"provider\"\n\t\t\t\t\t:before-update=\"onBeforeConnectionUpdate\"\n\t\t\t\t\t:disabled=\"connectionState === 'error' && !provider.connected\"\n\t\t\t\t/>\n\t\t\t\t<n8n-action-toggle\n\t\t\t\t\tclass=\"ml-s\"\n\t\t\t\t\ttheme=\"dark\"\n\t\t\t\t\t:actions=\"actionDropdownOptions\"\n\t\t\t\t\t@action=\"onActionDropdownClick\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<n8n-button v-else type=\"tertiary\" @click=\"openExternalSecretProvider()\">\n\t\t\t\t{{ i18n.baseText('settings.externalSecrets.card.setUp') }}\n\t\t\t</n8n-button>\n\t\t</div>\n\t</n8n-card>\n</template>\n\n<style lang=\"scss\" module>\n.card {\n\tposition: relative;\n\tmargin-bottom: var(--spacing-2xs);\n}\n\n.cardImage {\n\twidth: 28px;\n\theight: 28px;\n}\n\n.cardBody {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n}\n\n.cardContent {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: var(--spacing-s);\n}\n\n.cardActions {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tmargin-left: var(--spacing-s);\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { useUIStore } from '@/stores/ui.store';\nimport { useI18n } from '@/composables/useI18n';\nimport { useToast } from '@/composables/useToast';\nimport { useExternalSecretsStore } from '@/stores/externalSecrets.ee.store';\nimport { computed, onMounted } from 'vue';\nimport ExternalSecretsProviderCard from '@/components/ExternalSecretsProviderCard.ee.vue';\nimport type { ExternalSecretsProvider } from '@/Interface';\n\nconst i18n = useI18n();\nconst uiStore = useUIStore();\nconst externalSecretsStore = useExternalSecretsStore();\nconst toast = useToast();\n\nconst sortedProviders = computed(() => {\n\treturn ([...externalSecretsStore.providers] as ExternalSecretsProvider[]).sort((a, b) => {\n\t\treturn b.name.localeCompare(a.name);\n\t});\n});\n\nonMounted(() => {\n\tif (!externalSecretsStore.isEnterpriseExternalSecretsEnabled) return;\n\ttry {\n\t\tvoid externalSecretsStore.fetchAllSecrets();\n\t\tvoid externalSecretsStore.getProviders();\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('error'));\n\t}\n});\n\nfunction goToUpgrade() {\n\tvoid uiStore.goToUpgrade('external-secrets', 'upgrade-external-secrets');\n}\n</script>\n\n<template>\n\t<div class=\"pb-3xl\">\n\t\t<n8n-heading size=\"2xlarge\">{{ i18n.baseText('settings.externalSecrets.title') }}</n8n-heading>\n\t\t<div\n\t\t\tv-if=\"externalSecretsStore.isEnterpriseExternalSecretsEnabled\"\n\t\t\tdata-test-id=\"external-secrets-content-licensed\"\n\t\t>\n\t\t\t<n8n-callout theme=\"secondary\" class=\"mt-2xl mb-l\">\n\t\t\t\t{{ i18n.baseText('settings.externalSecrets.info') }}\n\t\t\t\t<a :href=\"i18n.baseText('settings.externalSecrets.docs')\" target=\"_blank\">\n\t\t\t\t\t{{ i18n.baseText('settings.externalSecrets.info.link') }}\n\t\t\t\t</a>\n\t\t\t</n8n-callout>\n\t\t\t<ExternalSecretsProviderCard\n\t\t\t\tv-for=\"provider in sortedProviders\"\n\t\t\t\t:key=\"provider.name\"\n\t\t\t\t:provider=\"provider\"\n\t\t\t/>\n\t\t</div>\n\t\t<n8n-action-box\n\t\t\tv-else\n\t\t\tclass=\"mt-2xl mb-l\"\n\t\t\tdata-test-id=\"external-secrets-content-unlicensed\"\n\t\t\t:button-text=\"i18n.baseText('settings.externalSecrets.actionBox.buttonText')\"\n\t\t\t@click=\"goToUpgrade\"\n\t\t>\n\t\t\t<template #heading>\n\t\t\t\t<span>{{ i18n.baseText('settings.externalSecrets.actionBox.title') }}</span>\n\t\t\t</template>\n\t\t\t<template #description>\n\t\t\t\t<i18n-t keypath=\"settings.externalSecrets.actionBox.description\">\n\t\t\t\t\t<template #link>\n\t\t\t\t\t\t<a :href=\"i18n.baseText('settings.externalSecrets.docs')\" target=\"_blank\">\n\t\t\t\t\t\t\t{{ i18n.baseText('settings.externalSecrets.actionBox.description.link') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</i18n-t>\n\t\t\t</template>\n\t\t</n8n-action-box>\n\t</div>\n</template>\n"],"names":["props","__props","externalSecretsStore","useExternalSecretsStore","i18n","useI18n","uiStore","useUIStore","toast","useToast","provider","toRefs","providerData","computed","connectionState","initialConnectionState","normalizedProviderData","testConnection","setConnectionState","useExternalSecretsProvider","actionDropdownOptions","canConnect","formattedDate","DateTime","onMounted","onBeforeConnectionUpdate","nextTick","openExternalSecretProvider","EXTERNAL_SECRETS_PROVIDER_MODAL_KEY","reloadProvider","error","onActionDropdownClick","id","sortedProviders","a","b","goToUpgrade"],"mappings":"8yCAcA,MAAMA,EAAQC,EAORC,EAAuBC,IACvBC,EAAOC,IACPC,EAAUC,IACVC,EAAQC,IAER,CAAE,SAAAC,CAAA,EAAaC,EAAOX,CAAK,EAC3BY,EAAeC,EAAS,IAAMH,EAAS,MAAM,IAAI,EACjD,CACL,gBAAAI,EACA,uBAAAC,EACA,uBAAAC,EACA,eAAAC,EACA,mBAAAC,CAAA,EACGC,EAA2BT,EAAUE,CAAY,EAE/CQ,EAAwBP,EAAS,IAAM,CAC5C,CACC,MAAO,QACP,MAAOT,EAAK,SAAS,oDAAoD,CAC1E,EACA,GAAIJ,EAAM,SAAS,UAChB,CACA,CACC,MAAO,SACP,MAAOI,EAAK,SAAS,qDAAqD,CAC3E,CAAA,EAEA,CAAC,CAAA,CACJ,EAEKiB,EAAaR,EAAS,IACpBb,EAAM,SAAS,WAAa,OAAO,KAAKA,EAAM,SAAS,IAAI,EAAE,OAAS,CAC7E,EAEKsB,EAAgBT,EAAUH,GACxBa,EAAS,QAAQvB,EAAM,SAAS,iBAAmB,IAAM,EAAE,SAAS,aAAa,CACxF,EAEDwB,EAAU,IAAM,CACIN,EAAAlB,EAAM,SAAS,KAAK,CAAA,CACvC,EAED,eAAeyB,GAA2B,CACrC,OAAAzB,EAAM,SAAS,UACX,IAGR,MAAME,EAAqB,YAAYF,EAAM,SAAS,IAAI,EAC1D,MAAM0B,EAAS,EACA,MAAMT,MAEH,QACnB,CAEA,SAASU,GAA6B,CACrCrB,EAAQ,kBAAkB,CACzB,KAAMsB,EACN,KAAM,CAAE,KAAM5B,EAAM,SAAS,IAAK,CAAA,CAClC,CACF,CAEA,eAAe6B,GAAiB,CAC3B,GAAA,CACH,MAAM3B,EAAqB,eAAeF,EAAM,SAAS,IAAI,EAC7DQ,EAAM,YAAY,CACjB,MAAOJ,EAAK,SAAS,oDAAoD,EACzE,QAASA,EAAK,SAAS,2DAA4D,CAClF,YAAa,CAAE,SAAUJ,EAAM,SAAS,WAAY,CAAA,CACpD,EACD,KAAM,SAAA,CACN,QACO8B,EAAO,CACftB,EAAM,UAAUsB,EAAO1B,EAAK,SAAS,OAAO,CAAC,CAC9C,CACD,CAEA,eAAe2B,EAAsBC,EAAY,CAChD,OAAQA,EAAI,CACX,IAAK,QACuBL,IAC3B,MACD,IAAK,SACJ,MAAME,EAAe,EACrB,KACF,CACD,4iDCjGA,MAAMzB,EAAOC,IACPC,EAAUC,IACVL,EAAuBC,IACvBK,EAAQC,IAERwB,EAAkBpB,EAAS,IACxB,CAAC,GAAGX,EAAqB,SAAS,EAAgC,KAAK,CAACgC,EAAGC,IAC3EA,EAAE,KAAK,cAAcD,EAAE,IAAI,CAClC,CACD,EAEDV,EAAU,IAAM,CACf,GAAKtB,EAAqB,mCACtB,GAAA,CACEA,EAAqB,kBACrBA,EAAqB,qBAClB4B,EAAO,CACftB,EAAM,UAAUsB,EAAO1B,EAAK,SAAS,OAAO,CAAC,CAC9C,CAAA,CACA,EAED,SAASgC,GAAc,CACjB9B,EAAQ,YAAY,mBAAoB,0BAA0B,CACxE"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{aE as e}from"./index-
|
|
2
|
-
//# sourceMappingURL=SettingsFakeDoorView-
|
|
1
|
+
import{aE as e}from"./index-6M_Mo9yq.js";import{m as r}from"./pinia-28uZ5ZtB.js";import{u as i,_ as p}from"./n8n-0pza0mdA.js";import{G as m,l as n,M as s,ag as a}from"./vendor-KLOX9vbo.js";import"./@n8n/codemirror-lang-sql-_W1-z7Mc.js";import"./@lezer/common-1hBQ1gIF.js";import"./prettier-XiNuC5bg.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./lodash-es-wI9avrph.js";import"./@jsplumb/browser-ui-AlqFM-P6.js";import"./uuid-McvpxQtQ.js";import"./codemirror-lang-html-n8n-tmVw-mwA.js";import"./luxon-ZRIU05qF.js";import"./codemirror-lang-n8n-expression-71F4KZSz.js";import"./@vueuse/core-JpwZAlxf.js";import"./esprima-next-ulPLCZ1Z.js";import"./fast-json-stable-stringify-QF2cL2qw.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-ohcdYkQS.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./vue-i18n-Cb1fO4GA.js";import"./@n8n/permissions-8yMqUF1Y.js";const u=m({name:"SettingsFakeDoorView",components:{FeatureComingSoon:e},props:{featureId:{type:String,required:!0}},computed:{...r(i),featureInfo(){return this.uiStore.getFakeDoorById(this.featureId)}},methods:{openLinkPage(){this.featureInfo&&window.open(this.featureInfo.linkURL,"_blank")}}}),f="_header_fa9t3_1",c={header:f};function d(o,l,h,g,S,k){const t=a("FeatureComingSoon");return n(),s(t,{"feature-id":o.featureId,"show-title":""},null,8,["feature-id"])}const _={$style:c},Q=p(u,[["render",d],["__cssModules",_]]);export{Q as default};
|
|
2
|
+
//# sourceMappingURL=SettingsFakeDoorView-DP8hJH_b.js.map
|
package/dist/assets/{SettingsFakeDoorView-JXYglIiV.js.map → SettingsFakeDoorView-DP8hJH_b.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsFakeDoorView-
|
|
1
|
+
{"version":3,"file":"SettingsFakeDoorView-DP8hJH_b.js","sources":["../../src/views/SettingsFakeDoorView.vue"],"sourcesContent":["<template>\n\t<FeatureComingSoon :feature-id=\"featureId\" show-title />\n</template>\n\n<script lang=\"ts\">\nimport type { IFakeDoor } from '@/Interface';\nimport { defineComponent } from 'vue';\nimport FeatureComingSoon from '@/components/FeatureComingSoon.vue';\nimport { mapStores } from 'pinia';\nimport { useUIStore } from '@/stores/ui.store';\n\nexport default defineComponent({\n\tname: 'SettingsFakeDoorView',\n\tcomponents: {\n\t\tFeatureComingSoon,\n\t},\n\tprops: {\n\t\tfeatureId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\t...mapStores(useUIStore),\n\t\tfeatureInfo(): IFakeDoor | undefined {\n\t\t\treturn this.uiStore.getFakeDoorById(this.featureId);\n\t\t},\n\t},\n\tmethods: {\n\t\topenLinkPage() {\n\t\t\tif (this.featureInfo) {\n\t\t\t\twindow.open(this.featureInfo.linkURL, '_blank');\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.header {\n\tdisplay: flex;\n\talign-items: center;\n\twhite-space: nowrap;\n\n\t*:first-child {\n\t\tflex-grow: 1;\n\t}\n}\n</style>\n"],"names":["_sfc_main","defineComponent","FeatureComingSoon","mapStores","useUIStore","_component_FeatureComingSoon","_resolveComponent","_openBlock","_createBlock","_ctx"],"mappings":"kjCAWA,MAAAA,EAAeC,EAAgB,CAC9B,KAAM,uBACN,WAAY,CACX,kBAAAC,CACD,EACA,MAAO,CACN,UAAW,CACV,KAAM,OACN,SAAU,EACX,CACD,EACA,SAAU,CACT,GAAGC,EAAUC,CAAU,EACvB,aAAqC,CACpC,OAAO,KAAK,QAAQ,gBAAgB,KAAK,SAAS,CACnD,CACD,EACA,QAAS,CACR,cAAe,CACV,KAAK,aACR,OAAO,KAAK,KAAK,YAAY,QAAS,QAAQ,CAEhD,CACD,CACD,CAAC,2DAlCwD,MAAAC,EAAAC,EAAA,mBAAA,SAAbC,EAAU,EAAAC,EAAAH,EAAA,CAAA,aAAAI,EAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{fW as z,fX as E,e as D,k as w,u as A,l as L,f as I,fY as y,fZ as k,aa as V,_ as F}from"./n8n-0pza0mdA.js";import{d as M}from"./index-Qw68KAhz.js";import{h as _}from"./humanize-duration-MJVo9kRw.js";import{K as N}from"./v3-infinite-loading-FUWafCbm.js";import{m as R}from"./pinia-28uZ5ZtB.js";import{G as U,l as r,m as g,p as l,T as s,O as n,S as u,R as d,I as p,M as m,Q as f,V as q,ag as o,aq as B}from"./vendor-KLOX9vbo.js";import"./lodash-es-wI9avrph.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./esprima-next-ulPLCZ1Z.js";import"./luxon-ZRIU05qF.js";import"./@vueuse/core-JpwZAlxf.js";import"./uuid-McvpxQtQ.js";import"./vue-i18n-Cb1fO4GA.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./@n8n/codemirror-lang-sql-_W1-z7Mc.js";import"./@lezer/common-1hBQ1gIF.js";import"./prettier-XiNuC5bg.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-AlqFM-P6.js";import"./codemirror-lang-html-n8n-tmVw-mwA.js";import"./codemirror-lang-n8n-expression-71F4KZSz.js";import"./fast-json-stable-stringify-QF2cL2qw.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-ohcdYkQS.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";const P=U({name:"SettingsLdapView",components:{InfiniteLoading:N,ElTable:z,ElTableColumn:E},setup(){return{...D(),...M()}},data(){return{dataTable:[],tableKey:0,adConfig:{},loadingTestConnection:!1,loadingDryRun:!1,loadingLiveRun:!1,loadingTable:!1,hasAnyChanges:!1,formInputs:null,formBus:w(),readyToSubmit:!1,page:0,loginEnabled:!1,syncEnabled:!1}},computed:{...R(I,L,A),currentUser(){return this.usersStore.currentUser},isLDAPFeatureEnabled(){return this.settingsStore.settings.enterprise.ldap}},async mounted(){this.isLDAPFeatureEnabled&&await this.getLdapConfig()},methods:{goToUpgrade(){this.uiStore.goToUpgrade("ldap","upgrade-ldap")},cellClassStyle({data:e}){const{row:t,column:i}=e;if(i.property==="status"){if(t.status==="Success")return{color:"green"};if(t.status==="Error")return{color:"red"}}if(i.property==="runMode"){if(t.runMode==="Dry")return{color:"orange"};if(t.runMode==="Live")return{color:"blue"}}return{}},onInput(e){e.name==="loginEnabled"&&typeof e.value=="boolean"&&(this.loginEnabled=e.value),e.name==="synchronizationEnabled"&&typeof e.value=="boolean"&&(this.syncEnabled=e.value),this.hasAnyChanges=!0},onReadyToSubmit(e){this.readyToSubmit=e},syncDataMapper(e){const t=new Date(e.startedAt),i=new Date(e.endedAt),a=i.getTime()-t.getTime();return{runTime:_(a),runMode:y(e.runMode),status:y(e.status),endedAt:k(i.getTime()),details:this.$locale.baseText("settings.ldap.usersScanned",{interpolate:{scanned:e.scanned.toString()}})}},async onSubmit(){const e=this.$refs.ldapConfigForm;if(!this.hasAnyChanges||!e)return;const t={loginEnabled:e.values.loginEnabled,loginLabel:e.values.loginLabel,connectionUrl:e.values.serverAddress,allowUnauthorizedCerts:e.values.allowUnauthorizedCerts,connectionPort:+e.values.port,connectionSecurity:e.values.connectionSecurity,baseDn:e.values.baseDn,bindingAdminDn:e.values.bindingType==="admin"?e.values.adminDn:"",bindingAdminPassword:e.values.bindingType==="admin"?e.values.adminPassword:"",emailAttribute:e.values.email,firstNameAttribute:e.values.firstName,lastNameAttribute:e.values.lastName,loginIdAttribute:e.values.loginId,ldapIdAttribute:e.values.ldapId,userFilter:e.values.userFilter,synchronizationEnabled:e.values.synchronizationEnabled,synchronizationInterval:+e.values.synchronizationInterval,searchPageSize:+e.values.pageSize,searchTimeout:+e.values.searchTimeout};let i=!0;try{this.adConfig.loginEnabled&&!t.loginEnabled&&(i=await this.confirm(this.$locale.baseText("settings.ldap.confirmMessage.beforeSaveForm.message"),this.$locale.baseText("settings.ldap.confirmMessage.beforeSaveForm.headline"),{cancelButtonText:this.$locale.baseText("settings.ldap.confirmMessage.beforeSaveForm.cancelButtonText"),confirmButtonText:this.$locale.baseText("settings.ldap.confirmMessage.beforeSaveForm.confirmButtonText")})===V),i||(this.hasAnyChanges=!0),this.adConfig=await this.settingsStore.updateLdapConfig(t),this.showToast({title:this.$locale.baseText("settings.ldap.updateConfiguration"),message:"",type:"success"})}catch(a){this.showError(a,this.$locale.baseText("settings.ldap.configurationError"))}finally{i&&(this.hasAnyChanges=!1)}},onSaveClick(){this.formBus.emit("submit")},async onTestConnectionClick(){this.loadingTestConnection=!0;try{await this.settingsStore.testLdapConnection(),this.showToast({title:this.$locale.baseText("settings.ldap.connectionTest"),message:this.$locale.baseText("settings.ldap.toast.connection.success"),type:"success"})}catch(e){this.showToast({title:this.$locale.baseText("settings.ldap.connectionTestError"),message:e.message,type:"error"})}finally{this.loadingTestConnection=!1}},async onDryRunClick(){this.loadingDryRun=!0;try{await this.settingsStore.runLdapSync({type:"dry"}),this.showToast({title:this.$locale.baseText("settings.ldap.runSync.title"),message:this.$locale.baseText("settings.ldap.toast.sync.success"),type:"success"})}catch(e){this.showError(e,this.$locale.baseText("settings.ldap.synchronizationError"))}finally{this.loadingDryRun=!1,await this.reloadLdapSynchronizations()}},async onLiveRunClick(){this.loadingLiveRun=!0;try{await this.settingsStore.runLdapSync({type:"live"}),this.showToast({title:this.$locale.baseText("settings.ldap.runSync.title"),message:this.$locale.baseText("settings.ldap.toast.sync.success"),type:"success"})}catch(e){this.showError(e,this.$locale.baseText("settings.ldap.synchronizationError"))}finally{this.loadingLiveRun=!1,await this.reloadLdapSynchronizations()}},async getLdapConfig(){try{this.adConfig=await this.settingsStore.getLdapConfig(),this.loginEnabled=this.adConfig.loginEnabled,this.syncEnabled=this.adConfig.synchronizationEnabled;const e=a=>a.loginEnabled===!0,t=a=>a.synchronizationEnabled===!0&&a.loginEnabled===!0,i=a=>a.bindingType==="admin"&&a.loginEnabled===!0;this.formInputs=[{name:"loginEnabled",initialValue:this.adConfig.loginEnabled,properties:{type:"toggle",label:this.$locale.baseText("settings.ldap.form.loginEnabled.label"),tooltipText:this.$locale.baseText("settings.ldap.form.loginEnabled.tooltip"),required:!0}},{name:"loginLabel",initialValue:this.adConfig.loginLabel,properties:{label:this.$locale.baseText("settings.ldap.form.loginLabel.label"),required:!0,placeholder:this.$locale.baseText("settings.ldap.form.loginLabel.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.loginLabel.infoText")},shouldDisplay:e},{name:"serverAddress",initialValue:this.adConfig.connectionUrl,properties:{label:this.$locale.baseText("settings.ldap.form.serverAddress.label"),required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.serverAddress.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.serverAddress.infoText")},shouldDisplay:e},{name:"port",initialValue:this.adConfig.connectionPort,properties:{type:"number",label:this.$locale.baseText("settings.ldap.form.port.label"),capitalize:!0,infoText:this.$locale.baseText("settings.ldap.form.port.infoText")},shouldDisplay:e},{name:"connectionSecurity",initialValue:this.adConfig.connectionSecurity,properties:{type:"select",label:this.$locale.baseText("settings.ldap.form.connectionSecurity.label"),infoText:this.$locale.baseText("settings.ldap.form.connectionSecurity.infoText"),options:[{label:"None",value:"none"},{label:"TLS",value:"tls"},{label:"STARTTLS",value:"startTls"}],required:!0,capitalize:!0},shouldDisplay:e},{name:"allowUnauthorizedCerts",initialValue:this.adConfig.allowUnauthorizedCerts,properties:{type:"toggle",label:this.$locale.baseText("settings.ldap.form.allowUnauthorizedCerts.label"),required:!1},shouldDisplay(a){return a.connectionSecurity!=="none"&&a.loginEnabled===!0}},{name:"baseDn",initialValue:this.adConfig.baseDn,properties:{label:this.$locale.baseText("settings.ldap.form.baseDn.label"),required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.baseDn.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.baseDn.infoText")},shouldDisplay:e},{name:"bindingType",initialValue:"admin",properties:{type:"select",label:this.$locale.baseText("settings.ldap.form.bindingType.label"),infoText:this.$locale.baseText("settings.ldap.form.bindingType.infoText"),options:[{value:"admin",label:"Admin"},{value:"anonymous",label:"Anonymous"}]},shouldDisplay:e},{name:"adminDn",initialValue:this.adConfig.bindingAdminDn,properties:{label:this.$locale.baseText("settings.ldap.form.adminDn.label"),placeholder:this.$locale.baseText("settings.ldap.form.adminDn.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.adminDn.infoText"),capitalize:!0},shouldDisplay:i},{name:"adminPassword",initialValue:this.adConfig.bindingAdminPassword,properties:{label:this.$locale.baseText("settings.ldap.form.adminPassword.label"),type:"password",capitalize:!0,infoText:this.$locale.baseText("settings.ldap.form.adminPassword.infoText")},shouldDisplay:i},{name:"userFilter",initialValue:this.adConfig.userFilter,properties:{label:this.$locale.baseText("settings.ldap.form.userFilter.label"),type:"text",required:!1,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.userFilter.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.userFilter.infoText")},shouldDisplay:e},{name:"attributeMappingInfo",properties:{label:this.$locale.baseText("settings.ldap.form.attributeMappingInfo.label"),type:"info",labelSize:"large",labelAlignment:"left"},shouldDisplay:e},{name:"ldapId",initialValue:this.adConfig.ldapIdAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.ldapId.label"),type:"text",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.ldapId.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.ldapId.infoText")},shouldDisplay:e},{name:"loginId",initialValue:this.adConfig.loginIdAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.loginId.label"),type:"text",autocomplete:"email",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.loginId.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.loginId.infoText")},shouldDisplay:e},{name:"email",initialValue:this.adConfig.emailAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.email.label"),type:"text",autocomplete:"email",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.email.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.email.infoText")},shouldDisplay:e},{name:"firstName",initialValue:this.adConfig.firstNameAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.firstName.label"),type:"text",autocomplete:"email",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.firstName.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.firstName.infoText")},shouldDisplay:e},{name:"lastName",initialValue:this.adConfig.lastNameAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.lastName.label"),type:"text",autocomplete:"email",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.lastName.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.lastName.infoText")},shouldDisplay:e},{name:"synchronizationEnabled",initialValue:this.adConfig.synchronizationEnabled,properties:{type:"toggle",label:this.$locale.baseText("settings.ldap.form.synchronizationEnabled.label"),tooltipText:this.$locale.baseText("settings.ldap.form.synchronizationEnabled.tooltip"),required:!0},shouldDisplay:e},{name:"synchronizationInterval",initialValue:this.adConfig.synchronizationInterval,properties:{type:"number",label:this.$locale.baseText("settings.ldap.form.synchronizationInterval.label"),infoText:this.$locale.baseText("settings.ldap.form.synchronizationInterval.infoText")},shouldDisplay:t},{name:"pageSize",initialValue:this.adConfig.searchPageSize,properties:{type:"number",label:this.$locale.baseText("settings.ldap.form.pageSize.label"),infoText:this.$locale.baseText("settings.ldap.form.pageSize.infoText")},shouldDisplay:t},{name:"searchTimeout",initialValue:this.adConfig.searchTimeout,properties:{type:"number",label:this.$locale.baseText("settings.ldap.form.searchTimeout.label"),infoText:this.$locale.baseText("settings.ldap.form.searchTimeout.infoText")},shouldDisplay:t}]}catch(e){this.showError(e,this.$locale.baseText("settings.ldap.configurationError"))}},async getLdapSynchronizations(e){try{this.loadingTable=!0;const t=await this.settingsStore.getLdapSynchronizations({page:this.page});t.length!==0?(this.dataTable.push(...t.map(this.syncDataMapper)),this.page+=1,e.loaded()):e.complete(),this.loadingTable=!1}catch(t){this.showError(t,this.$locale.baseText("settings.ldap.synchronizationError"))}},async reloadLdapSynchronizations(){try{this.page=0,this.tableKey+=1,this.dataTable=[]}catch(e){this.showError(e,this.$locale.baseText("settings.ldap.synchronizationError"))}}}}),H="_container_17k3n_1",K="_syncTable_17k3n_5",O="_header_17k3n_9",G="_enableFeatureContainer_17k3n_18",Q="_sectionHeader_17k3n_32",W="_settingsForm_17k3n_36",X="_docsInfoTip_17k3n_40",Y={container:H,syncTable:K,header:O,enableFeatureContainer:G,sectionHeader:Q,settingsForm:W,docsInfoTip:X},Z={key:0},j={key:1},J=["innerHTML"],ee={key:0},te={class:"pb-3xl"};function ae(e,t,i,a,ie,le){const h=o("n8n-heading"),T=o("n8n-info-tip"),$=o("n8n-action-box"),x=o("n8n-form-inputs"),b=o("n8n-button"),c=o("ElTableColumn"),C=o("InfiniteLoading"),v=o("ElTable"),S=B("loading");return e.isLDAPFeatureEnabled?(r(),g("div",j,[l("div",{class:p(e.$style.container)},[l("div",{class:p(e.$style.header)},[s(h,{size:"2xlarge"},{default:n(()=>[u(d(e.$locale.baseText("settings.ldap")),1)]),_:1})],2),l("div",{class:p(e.$style.docsInfoTip)},[s(T,{theme:"info",type:"note"},{default:n(()=>[l("span",{innerHTML:e.$locale.baseText("settings.ldap.infoTip")},null,8,J)]),_:1})],2),l("div",{class:p(e.$style.settingsForm)},[e.formInputs?(r(),m(x,{key:0,ref:"ldapConfigForm",inputs:e.formInputs,"event-bus":e.formBus,"column-view":!0,"vertical-spacing":"l",onUpdate:e.onInput,onReady:e.onReadyToSubmit,onSubmit:e.onSubmit},null,8,["inputs","event-bus","onUpdate","onReady","onSubmit"])):f("",!0)],2),l("div",null,[e.loginEnabled?(r(),m(b,{key:0,label:e.loadingTestConnection?e.$locale.baseText("settings.ldap.testingConnection"):e.$locale.baseText("settings.ldap.testConnection"),size:"large",class:"mr-s",disabled:e.hasAnyChanges||!e.readyToSubmit,loading:e.loadingTestConnection,onClick:e.onTestConnectionClick},null,8,["label","disabled","loading","onClick"])):f("",!0),s(b,{label:e.$locale.baseText("settings.ldap.save"),size:"large",disabled:!e.hasAnyChanges||!e.readyToSubmit,onClick:e.onSaveClick},null,8,["label","disabled","onClick"])])],2),e.loginEnabled?(r(),g("div",ee,[s(h,{tag:"h1",class:"mb-xl mt-3xl",size:"medium"},{default:n(()=>[u(d(e.$locale.baseText("settings.ldap.section.synchronization.title")),1)]),_:1}),l("div",{class:p(e.$style.syncTable)},[q((r(),m(v,{key:e.tableKey,border:!0,stripe:!0,data:e.dataTable,"cell-style":e.cellClassStyle,style:{width:"100%"},"max-height":"250"},{empty:n(()=>[u(d(e.$locale.baseText("settings.ldap.synchronizationTable.empty.message")),1)]),append:n(()=>[s(C,{target:".el-table__body-wrapper",onInfinite:e.getLdapSynchronizations},null,8,["onInfinite"])]),default:n(()=>[s(c,{prop:"status",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.status")},null,8,["label"]),s(c,{prop:"endedAt",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.endedAt")},null,8,["label"]),s(c,{prop:"runMode",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.runMode")},null,8,["label"]),s(c,{prop:"runTime",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.runTime")},null,8,["label"]),s(c,{prop:"details",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.details")},null,8,["label"])]),_:1},8,["data","cell-style"])),[[S,e.loadingTable]])],2),l("div",te,[s(b,{label:e.$locale.baseText("settings.ldap.dryRun"),type:"secondary",size:"large",class:"mr-s",disabled:e.hasAnyChanges||!e.readyToSubmit,loading:e.loadingDryRun,onClick:e.onDryRunClick},null,8,["label","disabled","loading","onClick"]),s(b,{label:e.$locale.baseText("settings.ldap.synchronizeNow"),size:"large",disabled:e.hasAnyChanges||!e.readyToSubmit,loading:e.loadingLiveRun,onClick:e.onLiveRunClick},null,8,["label","disabled","loading","onClick"])])])):f("",!0)])):(r(),g("div",Z,[l("div",{class:p([e.$style.header,"mb-2xl"])},[s(h,{size:"2xlarge"},{default:n(()=>[u(d(e.$locale.baseText("settings.ldap")),1)]),_:1})],2),s(T,{type:"note",theme:"info","tooltip-placement":"right",class:"mb-l"},{default:n(()=>[u(d(e.$locale.baseText("settings.ldap.note")),1)]),_:1}),s($,{description:e.$locale.baseText("settings.ldap.disabled.description"),"button-text":e.$locale.baseText("settings.ldap.disabled.buttonText"),"onClick:button":e.goToUpgrade},{heading:n(()=>[l("span",null,d(e.$locale.baseText("settings.ldap.disabled.title")),1)]),_:1},8,["description","button-text","onClick:button"])]))}const se={$style:Y},_e=F(P,[["render",ae],["__cssModules",se]]);export{_e as default};
|
|
2
|
-
//# sourceMappingURL=SettingsLdapView-
|
|
1
|
+
import{fW as z,fX as E,e as D,k as w,u as A,l as L,f as I,fY as y,fZ as k,aa as V,_ as F}from"./n8n-0pza0mdA.js";import{d as M}from"./index-6M_Mo9yq.js";import{h as _}from"./humanize-duration-MJVo9kRw.js";import{K as N}from"./v3-infinite-loading-FUWafCbm.js";import{m as R}from"./pinia-28uZ5ZtB.js";import{G as U,l as r,m as g,p as l,T as s,O as n,S as u,R as d,I as p,M as m,Q as f,V as q,ag as o,aq as B}from"./vendor-KLOX9vbo.js";import"./lodash-es-wI9avrph.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./esprima-next-ulPLCZ1Z.js";import"./luxon-ZRIU05qF.js";import"./@vueuse/core-JpwZAlxf.js";import"./uuid-McvpxQtQ.js";import"./vue-i18n-Cb1fO4GA.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./@n8n/codemirror-lang-sql-_W1-z7Mc.js";import"./@lezer/common-1hBQ1gIF.js";import"./prettier-XiNuC5bg.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-AlqFM-P6.js";import"./codemirror-lang-html-n8n-tmVw-mwA.js";import"./codemirror-lang-n8n-expression-71F4KZSz.js";import"./fast-json-stable-stringify-QF2cL2qw.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-ohcdYkQS.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";const P=U({name:"SettingsLdapView",components:{InfiniteLoading:N,ElTable:z,ElTableColumn:E},setup(){return{...D(),...M()}},data(){return{dataTable:[],tableKey:0,adConfig:{},loadingTestConnection:!1,loadingDryRun:!1,loadingLiveRun:!1,loadingTable:!1,hasAnyChanges:!1,formInputs:null,formBus:w(),readyToSubmit:!1,page:0,loginEnabled:!1,syncEnabled:!1}},computed:{...R(I,L,A),currentUser(){return this.usersStore.currentUser},isLDAPFeatureEnabled(){return this.settingsStore.settings.enterprise.ldap}},async mounted(){this.isLDAPFeatureEnabled&&await this.getLdapConfig()},methods:{goToUpgrade(){this.uiStore.goToUpgrade("ldap","upgrade-ldap")},cellClassStyle({data:e}){const{row:t,column:i}=e;if(i.property==="status"){if(t.status==="Success")return{color:"green"};if(t.status==="Error")return{color:"red"}}if(i.property==="runMode"){if(t.runMode==="Dry")return{color:"orange"};if(t.runMode==="Live")return{color:"blue"}}return{}},onInput(e){e.name==="loginEnabled"&&typeof e.value=="boolean"&&(this.loginEnabled=e.value),e.name==="synchronizationEnabled"&&typeof e.value=="boolean"&&(this.syncEnabled=e.value),this.hasAnyChanges=!0},onReadyToSubmit(e){this.readyToSubmit=e},syncDataMapper(e){const t=new Date(e.startedAt),i=new Date(e.endedAt),a=i.getTime()-t.getTime();return{runTime:_(a),runMode:y(e.runMode),status:y(e.status),endedAt:k(i.getTime()),details:this.$locale.baseText("settings.ldap.usersScanned",{interpolate:{scanned:e.scanned.toString()}})}},async onSubmit(){const e=this.$refs.ldapConfigForm;if(!this.hasAnyChanges||!e)return;const t={loginEnabled:e.values.loginEnabled,loginLabel:e.values.loginLabel,connectionUrl:e.values.serverAddress,allowUnauthorizedCerts:e.values.allowUnauthorizedCerts,connectionPort:+e.values.port,connectionSecurity:e.values.connectionSecurity,baseDn:e.values.baseDn,bindingAdminDn:e.values.bindingType==="admin"?e.values.adminDn:"",bindingAdminPassword:e.values.bindingType==="admin"?e.values.adminPassword:"",emailAttribute:e.values.email,firstNameAttribute:e.values.firstName,lastNameAttribute:e.values.lastName,loginIdAttribute:e.values.loginId,ldapIdAttribute:e.values.ldapId,userFilter:e.values.userFilter,synchronizationEnabled:e.values.synchronizationEnabled,synchronizationInterval:+e.values.synchronizationInterval,searchPageSize:+e.values.pageSize,searchTimeout:+e.values.searchTimeout};let i=!0;try{this.adConfig.loginEnabled&&!t.loginEnabled&&(i=await this.confirm(this.$locale.baseText("settings.ldap.confirmMessage.beforeSaveForm.message"),this.$locale.baseText("settings.ldap.confirmMessage.beforeSaveForm.headline"),{cancelButtonText:this.$locale.baseText("settings.ldap.confirmMessage.beforeSaveForm.cancelButtonText"),confirmButtonText:this.$locale.baseText("settings.ldap.confirmMessage.beforeSaveForm.confirmButtonText")})===V),i||(this.hasAnyChanges=!0),this.adConfig=await this.settingsStore.updateLdapConfig(t),this.showToast({title:this.$locale.baseText("settings.ldap.updateConfiguration"),message:"",type:"success"})}catch(a){this.showError(a,this.$locale.baseText("settings.ldap.configurationError"))}finally{i&&(this.hasAnyChanges=!1)}},onSaveClick(){this.formBus.emit("submit")},async onTestConnectionClick(){this.loadingTestConnection=!0;try{await this.settingsStore.testLdapConnection(),this.showToast({title:this.$locale.baseText("settings.ldap.connectionTest"),message:this.$locale.baseText("settings.ldap.toast.connection.success"),type:"success"})}catch(e){this.showToast({title:this.$locale.baseText("settings.ldap.connectionTestError"),message:e.message,type:"error"})}finally{this.loadingTestConnection=!1}},async onDryRunClick(){this.loadingDryRun=!0;try{await this.settingsStore.runLdapSync({type:"dry"}),this.showToast({title:this.$locale.baseText("settings.ldap.runSync.title"),message:this.$locale.baseText("settings.ldap.toast.sync.success"),type:"success"})}catch(e){this.showError(e,this.$locale.baseText("settings.ldap.synchronizationError"))}finally{this.loadingDryRun=!1,await this.reloadLdapSynchronizations()}},async onLiveRunClick(){this.loadingLiveRun=!0;try{await this.settingsStore.runLdapSync({type:"live"}),this.showToast({title:this.$locale.baseText("settings.ldap.runSync.title"),message:this.$locale.baseText("settings.ldap.toast.sync.success"),type:"success"})}catch(e){this.showError(e,this.$locale.baseText("settings.ldap.synchronizationError"))}finally{this.loadingLiveRun=!1,await this.reloadLdapSynchronizations()}},async getLdapConfig(){try{this.adConfig=await this.settingsStore.getLdapConfig(),this.loginEnabled=this.adConfig.loginEnabled,this.syncEnabled=this.adConfig.synchronizationEnabled;const e=a=>a.loginEnabled===!0,t=a=>a.synchronizationEnabled===!0&&a.loginEnabled===!0,i=a=>a.bindingType==="admin"&&a.loginEnabled===!0;this.formInputs=[{name:"loginEnabled",initialValue:this.adConfig.loginEnabled,properties:{type:"toggle",label:this.$locale.baseText("settings.ldap.form.loginEnabled.label"),tooltipText:this.$locale.baseText("settings.ldap.form.loginEnabled.tooltip"),required:!0}},{name:"loginLabel",initialValue:this.adConfig.loginLabel,properties:{label:this.$locale.baseText("settings.ldap.form.loginLabel.label"),required:!0,placeholder:this.$locale.baseText("settings.ldap.form.loginLabel.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.loginLabel.infoText")},shouldDisplay:e},{name:"serverAddress",initialValue:this.adConfig.connectionUrl,properties:{label:this.$locale.baseText("settings.ldap.form.serverAddress.label"),required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.serverAddress.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.serverAddress.infoText")},shouldDisplay:e},{name:"port",initialValue:this.adConfig.connectionPort,properties:{type:"number",label:this.$locale.baseText("settings.ldap.form.port.label"),capitalize:!0,infoText:this.$locale.baseText("settings.ldap.form.port.infoText")},shouldDisplay:e},{name:"connectionSecurity",initialValue:this.adConfig.connectionSecurity,properties:{type:"select",label:this.$locale.baseText("settings.ldap.form.connectionSecurity.label"),infoText:this.$locale.baseText("settings.ldap.form.connectionSecurity.infoText"),options:[{label:"None",value:"none"},{label:"TLS",value:"tls"},{label:"STARTTLS",value:"startTls"}],required:!0,capitalize:!0},shouldDisplay:e},{name:"allowUnauthorizedCerts",initialValue:this.adConfig.allowUnauthorizedCerts,properties:{type:"toggle",label:this.$locale.baseText("settings.ldap.form.allowUnauthorizedCerts.label"),required:!1},shouldDisplay(a){return a.connectionSecurity!=="none"&&a.loginEnabled===!0}},{name:"baseDn",initialValue:this.adConfig.baseDn,properties:{label:this.$locale.baseText("settings.ldap.form.baseDn.label"),required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.baseDn.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.baseDn.infoText")},shouldDisplay:e},{name:"bindingType",initialValue:"admin",properties:{type:"select",label:this.$locale.baseText("settings.ldap.form.bindingType.label"),infoText:this.$locale.baseText("settings.ldap.form.bindingType.infoText"),options:[{value:"admin",label:"Admin"},{value:"anonymous",label:"Anonymous"}]},shouldDisplay:e},{name:"adminDn",initialValue:this.adConfig.bindingAdminDn,properties:{label:this.$locale.baseText("settings.ldap.form.adminDn.label"),placeholder:this.$locale.baseText("settings.ldap.form.adminDn.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.adminDn.infoText"),capitalize:!0},shouldDisplay:i},{name:"adminPassword",initialValue:this.adConfig.bindingAdminPassword,properties:{label:this.$locale.baseText("settings.ldap.form.adminPassword.label"),type:"password",capitalize:!0,infoText:this.$locale.baseText("settings.ldap.form.adminPassword.infoText")},shouldDisplay:i},{name:"userFilter",initialValue:this.adConfig.userFilter,properties:{label:this.$locale.baseText("settings.ldap.form.userFilter.label"),type:"text",required:!1,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.userFilter.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.userFilter.infoText")},shouldDisplay:e},{name:"attributeMappingInfo",properties:{label:this.$locale.baseText("settings.ldap.form.attributeMappingInfo.label"),type:"info",labelSize:"large",labelAlignment:"left"},shouldDisplay:e},{name:"ldapId",initialValue:this.adConfig.ldapIdAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.ldapId.label"),type:"text",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.ldapId.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.ldapId.infoText")},shouldDisplay:e},{name:"loginId",initialValue:this.adConfig.loginIdAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.loginId.label"),type:"text",autocomplete:"email",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.loginId.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.loginId.infoText")},shouldDisplay:e},{name:"email",initialValue:this.adConfig.emailAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.email.label"),type:"text",autocomplete:"email",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.email.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.email.infoText")},shouldDisplay:e},{name:"firstName",initialValue:this.adConfig.firstNameAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.firstName.label"),type:"text",autocomplete:"email",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.firstName.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.firstName.infoText")},shouldDisplay:e},{name:"lastName",initialValue:this.adConfig.lastNameAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.lastName.label"),type:"text",autocomplete:"email",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.lastName.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.lastName.infoText")},shouldDisplay:e},{name:"synchronizationEnabled",initialValue:this.adConfig.synchronizationEnabled,properties:{type:"toggle",label:this.$locale.baseText("settings.ldap.form.synchronizationEnabled.label"),tooltipText:this.$locale.baseText("settings.ldap.form.synchronizationEnabled.tooltip"),required:!0},shouldDisplay:e},{name:"synchronizationInterval",initialValue:this.adConfig.synchronizationInterval,properties:{type:"number",label:this.$locale.baseText("settings.ldap.form.synchronizationInterval.label"),infoText:this.$locale.baseText("settings.ldap.form.synchronizationInterval.infoText")},shouldDisplay:t},{name:"pageSize",initialValue:this.adConfig.searchPageSize,properties:{type:"number",label:this.$locale.baseText("settings.ldap.form.pageSize.label"),infoText:this.$locale.baseText("settings.ldap.form.pageSize.infoText")},shouldDisplay:t},{name:"searchTimeout",initialValue:this.adConfig.searchTimeout,properties:{type:"number",label:this.$locale.baseText("settings.ldap.form.searchTimeout.label"),infoText:this.$locale.baseText("settings.ldap.form.searchTimeout.infoText")},shouldDisplay:t}]}catch(e){this.showError(e,this.$locale.baseText("settings.ldap.configurationError"))}},async getLdapSynchronizations(e){try{this.loadingTable=!0;const t=await this.settingsStore.getLdapSynchronizations({page:this.page});t.length!==0?(this.dataTable.push(...t.map(this.syncDataMapper)),this.page+=1,e.loaded()):e.complete(),this.loadingTable=!1}catch(t){this.showError(t,this.$locale.baseText("settings.ldap.synchronizationError"))}},async reloadLdapSynchronizations(){try{this.page=0,this.tableKey+=1,this.dataTable=[]}catch(e){this.showError(e,this.$locale.baseText("settings.ldap.synchronizationError"))}}}}),H="_container_17k3n_1",K="_syncTable_17k3n_5",O="_header_17k3n_9",G="_enableFeatureContainer_17k3n_18",Q="_sectionHeader_17k3n_32",W="_settingsForm_17k3n_36",X="_docsInfoTip_17k3n_40",Y={container:H,syncTable:K,header:O,enableFeatureContainer:G,sectionHeader:Q,settingsForm:W,docsInfoTip:X},Z={key:0},j={key:1},J=["innerHTML"],ee={key:0},te={class:"pb-3xl"};function ae(e,t,i,a,ie,le){const h=o("n8n-heading"),T=o("n8n-info-tip"),$=o("n8n-action-box"),x=o("n8n-form-inputs"),b=o("n8n-button"),c=o("ElTableColumn"),C=o("InfiniteLoading"),v=o("ElTable"),S=B("loading");return e.isLDAPFeatureEnabled?(r(),g("div",j,[l("div",{class:p(e.$style.container)},[l("div",{class:p(e.$style.header)},[s(h,{size:"2xlarge"},{default:n(()=>[u(d(e.$locale.baseText("settings.ldap")),1)]),_:1})],2),l("div",{class:p(e.$style.docsInfoTip)},[s(T,{theme:"info",type:"note"},{default:n(()=>[l("span",{innerHTML:e.$locale.baseText("settings.ldap.infoTip")},null,8,J)]),_:1})],2),l("div",{class:p(e.$style.settingsForm)},[e.formInputs?(r(),m(x,{key:0,ref:"ldapConfigForm",inputs:e.formInputs,"event-bus":e.formBus,"column-view":!0,"vertical-spacing":"l",onUpdate:e.onInput,onReady:e.onReadyToSubmit,onSubmit:e.onSubmit},null,8,["inputs","event-bus","onUpdate","onReady","onSubmit"])):f("",!0)],2),l("div",null,[e.loginEnabled?(r(),m(b,{key:0,label:e.loadingTestConnection?e.$locale.baseText("settings.ldap.testingConnection"):e.$locale.baseText("settings.ldap.testConnection"),size:"large",class:"mr-s",disabled:e.hasAnyChanges||!e.readyToSubmit,loading:e.loadingTestConnection,onClick:e.onTestConnectionClick},null,8,["label","disabled","loading","onClick"])):f("",!0),s(b,{label:e.$locale.baseText("settings.ldap.save"),size:"large",disabled:!e.hasAnyChanges||!e.readyToSubmit,onClick:e.onSaveClick},null,8,["label","disabled","onClick"])])],2),e.loginEnabled?(r(),g("div",ee,[s(h,{tag:"h1",class:"mb-xl mt-3xl",size:"medium"},{default:n(()=>[u(d(e.$locale.baseText("settings.ldap.section.synchronization.title")),1)]),_:1}),l("div",{class:p(e.$style.syncTable)},[q((r(),m(v,{key:e.tableKey,border:!0,stripe:!0,data:e.dataTable,"cell-style":e.cellClassStyle,style:{width:"100%"},"max-height":"250"},{empty:n(()=>[u(d(e.$locale.baseText("settings.ldap.synchronizationTable.empty.message")),1)]),append:n(()=>[s(C,{target:".el-table__body-wrapper",onInfinite:e.getLdapSynchronizations},null,8,["onInfinite"])]),default:n(()=>[s(c,{prop:"status",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.status")},null,8,["label"]),s(c,{prop:"endedAt",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.endedAt")},null,8,["label"]),s(c,{prop:"runMode",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.runMode")},null,8,["label"]),s(c,{prop:"runTime",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.runTime")},null,8,["label"]),s(c,{prop:"details",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.details")},null,8,["label"])]),_:1},8,["data","cell-style"])),[[S,e.loadingTable]])],2),l("div",te,[s(b,{label:e.$locale.baseText("settings.ldap.dryRun"),type:"secondary",size:"large",class:"mr-s",disabled:e.hasAnyChanges||!e.readyToSubmit,loading:e.loadingDryRun,onClick:e.onDryRunClick},null,8,["label","disabled","loading","onClick"]),s(b,{label:e.$locale.baseText("settings.ldap.synchronizeNow"),size:"large",disabled:e.hasAnyChanges||!e.readyToSubmit,loading:e.loadingLiveRun,onClick:e.onLiveRunClick},null,8,["label","disabled","loading","onClick"])])])):f("",!0)])):(r(),g("div",Z,[l("div",{class:p([e.$style.header,"mb-2xl"])},[s(h,{size:"2xlarge"},{default:n(()=>[u(d(e.$locale.baseText("settings.ldap")),1)]),_:1})],2),s(T,{type:"note",theme:"info","tooltip-placement":"right",class:"mb-l"},{default:n(()=>[u(d(e.$locale.baseText("settings.ldap.note")),1)]),_:1}),s($,{description:e.$locale.baseText("settings.ldap.disabled.description"),"button-text":e.$locale.baseText("settings.ldap.disabled.buttonText"),"onClick:button":e.goToUpgrade},{heading:n(()=>[l("span",null,d(e.$locale.baseText("settings.ldap.disabled.title")),1)]),_:1},8,["description","button-text","onClick:button"])]))}const se={$style:Y},_e=F(P,[["render",ae],["__cssModules",se]]);export{_e as default};
|
|
2
|
+
//# sourceMappingURL=SettingsLdapView-TVoyUgkx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsLdapView-2qYzfmuL.js","sources":["../../src/views/SettingsLdapView.vue"],"sourcesContent":["<template>\n\t<div v-if=\"!isLDAPFeatureEnabled\">\n\t\t<div :class=\"[$style.header, 'mb-2xl']\">\n\t\t\t<n8n-heading size=\"2xlarge\">\n\t\t\t\t{{ $locale.baseText('settings.ldap') }}\n\t\t\t</n8n-heading>\n\t\t</div>\n\n\t\t<n8n-info-tip type=\"note\" theme=\"info\" tooltip-placement=\"right\" class=\"mb-l\">\n\t\t\t{{ $locale.baseText('settings.ldap.note') }}\n\t\t</n8n-info-tip>\n\t\t<n8n-action-box\n\t\t\t:description=\"$locale.baseText('settings.ldap.disabled.description')\"\n\t\t\t:button-text=\"$locale.baseText('settings.ldap.disabled.buttonText')\"\n\t\t\t@click:button=\"goToUpgrade\"\n\t\t>\n\t\t\t<template #heading>\n\t\t\t\t<span>{{ $locale.baseText('settings.ldap.disabled.title') }}</span>\n\t\t\t</template>\n\t\t</n8n-action-box>\n\t</div>\n\t<div v-else>\n\t\t<div :class=\"$style.container\">\n\t\t\t<div :class=\"$style.header\">\n\t\t\t\t<n8n-heading size=\"2xlarge\">\n\t\t\t\t\t{{ $locale.baseText('settings.ldap') }}\n\t\t\t\t</n8n-heading>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.docsInfoTip\">\n\t\t\t\t<n8n-info-tip theme=\"info\" type=\"note\">\n\t\t\t\t\t<span v-html=\"$locale.baseText('settings.ldap.infoTip')\"></span>\n\t\t\t\t</n8n-info-tip>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.settingsForm\">\n\t\t\t\t<n8n-form-inputs\n\t\t\t\t\tv-if=\"formInputs\"\n\t\t\t\t\tref=\"ldapConfigForm\"\n\t\t\t\t\t:inputs=\"formInputs\"\n\t\t\t\t\t:event-bus=\"formBus\"\n\t\t\t\t\t:column-view=\"true\"\n\t\t\t\t\tvertical-spacing=\"l\"\n\t\t\t\t\t@update=\"onInput\"\n\t\t\t\t\t@ready=\"onReadyToSubmit\"\n\t\t\t\t\t@submit=\"onSubmit\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t<n8n-button\n\t\t\t\t\tv-if=\"loginEnabled\"\n\t\t\t\t\t:label=\"\n\t\t\t\t\t\tloadingTestConnection\n\t\t\t\t\t\t\t? $locale.baseText('settings.ldap.testingConnection')\n\t\t\t\t\t\t\t: $locale.baseText('settings.ldap.testConnection')\n\t\t\t\t\t\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\tclass=\"mr-s\"\n\t\t\t\t\t:disabled=\"hasAnyChanges || !readyToSubmit\"\n\t\t\t\t\t:loading=\"loadingTestConnection\"\n\t\t\t\t\t@click=\"onTestConnectionClick\"\n\t\t\t\t/>\n\t\t\t\t<n8n-button\n\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.save')\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t:disabled=\"!hasAnyChanges || !readyToSubmit\"\n\t\t\t\t\t@click=\"onSaveClick\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"loginEnabled\">\n\t\t\t<n8n-heading tag=\"h1\" class=\"mb-xl mt-3xl\" size=\"medium\">{{\n\t\t\t\t$locale.baseText('settings.ldap.section.synchronization.title')\n\t\t\t}}</n8n-heading>\n\t\t\t<div :class=\"$style.syncTable\">\n\t\t\t\t<ElTable\n\t\t\t\t\t:key=\"tableKey\"\n\t\t\t\t\tv-loading=\"loadingTable\"\n\t\t\t\t\t:border=\"true\"\n\t\t\t\t\t:stripe=\"true\"\n\t\t\t\t\t:data=\"dataTable\"\n\t\t\t\t\t:cell-style=\"cellClassStyle\"\n\t\t\t\t\tstyle=\"width: 100%\"\n\t\t\t\t\tmax-height=\"250\"\n\t\t\t\t>\n\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\tprop=\"status\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.status')\"\n\t\t\t\t\t>\n\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\tprop=\"endedAt\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.endedAt')\"\n\t\t\t\t\t>\n\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\tprop=\"runMode\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.runMode')\"\n\t\t\t\t\t>\n\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\tprop=\"runTime\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.runTime')\"\n\t\t\t\t\t>\n\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\tprop=\"details\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.details')\"\n\t\t\t\t\t>\n\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t<template #empty>{{\n\t\t\t\t\t\t$locale.baseText('settings.ldap.synchronizationTable.empty.message')\n\t\t\t\t\t}}</template>\n\t\t\t\t\t<template #append>\n\t\t\t\t\t\t<InfiniteLoading target=\".el-table__body-wrapper\" @infinite=\"getLdapSynchronizations\">\n\t\t\t\t\t\t</InfiniteLoading>\n\t\t\t\t\t</template>\n\t\t\t\t</ElTable>\n\t\t\t</div>\n\t\t\t<div class=\"pb-3xl\">\n\t\t\t\t<n8n-button\n\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.dryRun')\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\tclass=\"mr-s\"\n\t\t\t\t\t:disabled=\"hasAnyChanges || !readyToSubmit\"\n\t\t\t\t\t:loading=\"loadingDryRun\"\n\t\t\t\t\t@click=\"onDryRunClick\"\n\t\t\t\t/>\n\t\t\t\t<n8n-button\n\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizeNow')\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t:disabled=\"hasAnyChanges || !readyToSubmit\"\n\t\t\t\t\t:loading=\"loadingLiveRun\"\n\t\t\t\t\t@click=\"onLiveRunClick\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\nimport { capitalizeFirstLetter } from '@/utils/htmlUtils';\nimport { convertToDisplayDate } from '@/utils/typesUtils';\nimport { useToast } from '@/composables/useToast';\nimport { useMessage } from '@/composables/useMessage';\nimport type {\n\tILdapConfig,\n\tILdapSyncData,\n\tILdapSyncTable,\n\tIFormInput,\n\tIFormInputs,\n\tIUser,\n} from '@/Interface';\nimport { MODAL_CONFIRM } from '@/constants';\n\nimport humanizeDuration from 'humanize-duration';\nimport { ElTable, ElTableColumn } from 'element-plus';\nimport type { Events } from 'v3-infinite-loading';\nimport InfiniteLoading from 'v3-infinite-loading';\nimport { mapStores } from 'pinia';\nimport { useUsersStore } from '@/stores/users.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { createEventBus } from 'n8n-design-system/utils';\nimport type { TableColumnCtx } from 'element-plus';\n\ntype TableRow = {\n\tstatus: string;\n\tstartAt: string;\n\tendedAt: string;\n\terror: string;\n\trunMode: string;\n};\n\ntype LDAPConfigForm = {\n\tloginEnabled: boolean;\n\tloginLabel: string;\n\tserverAddress: string;\n\tallowUnauthorizedCerts: boolean;\n\tport: number;\n\tconnectionSecurity: string;\n\tbaseDn: string;\n\tbindingType: 'admin' | 'anonymous';\n\tadminDn: string;\n\tadminPassword: string;\n\temail: string;\n\tfirstName: string;\n\tlastName: string;\n\tloginId: string;\n\tldapId: string;\n\tuserFilter: string;\n\tsynchronizationEnabled: boolean;\n\tsynchronizationInterval: string;\n\tpageSize: string;\n\tsearchTimeout: string;\n};\n\ntype CellClassStyleMethodParams<T> = {\n\tdata: {\n\t\trow: T;\n\t\trowIndex: number;\n\t\tcolumn: TableColumnCtx<T>;\n\t\tcolumnIndex: number;\n\t};\n};\n\nexport default defineComponent({\n\tname: 'SettingsLdapView',\n\tcomponents: {\n\t\tInfiniteLoading,\n\t\tElTable,\n\t\tElTableColumn,\n\t},\n\tsetup() {\n\t\treturn {\n\t\t\t...useToast(),\n\t\t\t...useMessage(),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdataTable: [] as ILdapSyncTable[],\n\t\t\ttableKey: 0,\n\t\t\tadConfig: {} as ILdapConfig,\n\t\t\tloadingTestConnection: false,\n\t\t\tloadingDryRun: false,\n\t\t\tloadingLiveRun: false,\n\t\t\tloadingTable: false,\n\t\t\thasAnyChanges: false,\n\t\t\tformInputs: null as null | IFormInputs,\n\t\t\tformBus: createEventBus(),\n\t\t\treadyToSubmit: false,\n\t\t\tpage: 0,\n\t\t\tloginEnabled: false,\n\t\t\tsyncEnabled: false,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useUsersStore, useSettingsStore, useUIStore),\n\t\tcurrentUser(): null | IUser {\n\t\t\treturn this.usersStore.currentUser;\n\t\t},\n\t\tisLDAPFeatureEnabled(): boolean {\n\t\t\treturn this.settingsStore.settings.enterprise.ldap;\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (!this.isLDAPFeatureEnabled) return;\n\t\tawait this.getLdapConfig();\n\t},\n\tmethods: {\n\t\tgoToUpgrade() {\n\t\t\tvoid this.uiStore.goToUpgrade('ldap', 'upgrade-ldap');\n\t\t},\n\t\tcellClassStyle({ data }: CellClassStyleMethodParams<TableRow>): CSSProperties {\n\t\t\tconst { row, column } = data;\n\t\t\tif (column.property === 'status') {\n\t\t\t\tif (row.status === 'Success') {\n\t\t\t\t\treturn { color: 'green' };\n\t\t\t\t} else if (row.status === 'Error') {\n\t\t\t\t\treturn { color: 'red' };\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (column.property === 'runMode') {\n\t\t\t\tif (row.runMode === 'Dry') {\n\t\t\t\t\treturn { color: 'orange' };\n\t\t\t\t} else if (row.runMode === 'Live') {\n\t\t\t\t\treturn { color: 'blue' };\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {};\n\t\t},\n\t\tonInput(input: { name: string; value: string | number | boolean }) {\n\t\t\tif (input.name === 'loginEnabled' && typeof input.value === 'boolean') {\n\t\t\t\tthis.loginEnabled = input.value;\n\t\t\t}\n\t\t\tif (input.name === 'synchronizationEnabled' && typeof input.value === 'boolean') {\n\t\t\t\tthis.syncEnabled = input.value;\n\t\t\t}\n\t\t\tthis.hasAnyChanges = true;\n\t\t},\n\t\tonReadyToSubmit(ready: boolean) {\n\t\t\tthis.readyToSubmit = ready;\n\t\t},\n\t\tsyncDataMapper(sync: ILdapSyncData): ILdapSyncTable {\n\t\t\tconst startedAt = new Date(sync.startedAt);\n\t\t\tconst endedAt = new Date(sync.endedAt);\n\t\t\tconst runTimeInMinutes = endedAt.getTime() - startedAt.getTime();\n\t\t\treturn {\n\t\t\t\trunTime: humanizeDuration(runTimeInMinutes),\n\t\t\t\trunMode: capitalizeFirstLetter(sync.runMode),\n\t\t\t\tstatus: capitalizeFirstLetter(sync.status),\n\t\t\t\tendedAt: convertToDisplayDate(endedAt.getTime()),\n\t\t\t\tdetails: this.$locale.baseText('settings.ldap.usersScanned', {\n\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\tscanned: sync.scanned.toString(),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t};\n\t\t},\n\t\tasync onSubmit(): Promise<void> {\n\t\t\t// We want to save all form values (incl. the hidden onces), so we are using\n\t\t\t// `values` data prop of the `FormInputs` child component since they are all preserved there\n\t\t\tconst formInputsRef = this.$refs.ldapConfigForm as { values: LDAPConfigForm };\n\n\t\t\tif (!this.hasAnyChanges || !formInputsRef) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst newConfiguration: ILdapConfig = {\n\t\t\t\tloginEnabled: formInputsRef.values.loginEnabled,\n\t\t\t\tloginLabel: formInputsRef.values.loginLabel,\n\t\t\t\tconnectionUrl: formInputsRef.values.serverAddress,\n\t\t\t\tallowUnauthorizedCerts: formInputsRef.values.allowUnauthorizedCerts,\n\t\t\t\tconnectionPort: +formInputsRef.values.port,\n\t\t\t\tconnectionSecurity: formInputsRef.values.connectionSecurity,\n\t\t\t\tbaseDn: formInputsRef.values.baseDn,\n\t\t\t\tbindingAdminDn:\n\t\t\t\t\tformInputsRef.values.bindingType === 'admin' ? formInputsRef.values.adminDn : '',\n\t\t\t\tbindingAdminPassword:\n\t\t\t\t\tformInputsRef.values.bindingType === 'admin' ? formInputsRef.values.adminPassword : '',\n\t\t\t\temailAttribute: formInputsRef.values.email,\n\t\t\t\tfirstNameAttribute: formInputsRef.values.firstName,\n\t\t\t\tlastNameAttribute: formInputsRef.values.lastName,\n\t\t\t\tloginIdAttribute: formInputsRef.values.loginId,\n\t\t\t\tldapIdAttribute: formInputsRef.values.ldapId,\n\t\t\t\tuserFilter: formInputsRef.values.userFilter,\n\t\t\t\tsynchronizationEnabled: formInputsRef.values.synchronizationEnabled,\n\t\t\t\tsynchronizationInterval: +formInputsRef.values.synchronizationInterval,\n\t\t\t\tsearchPageSize: +formInputsRef.values.pageSize,\n\t\t\t\tsearchTimeout: +formInputsRef.values.searchTimeout,\n\t\t\t};\n\n\t\t\tlet saveForm = true;\n\n\t\t\ttry {\n\t\t\t\tif (this.adConfig.loginEnabled && !newConfiguration.loginEnabled) {\n\t\t\t\t\tconst confirmAction = await this.confirm(\n\t\t\t\t\t\tthis.$locale.baseText('settings.ldap.confirmMessage.beforeSaveForm.message'),\n\t\t\t\t\t\tthis.$locale.baseText('settings.ldap.confirmMessage.beforeSaveForm.headline'),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcancelButtonText: this.$locale.baseText(\n\t\t\t\t\t\t\t\t'settings.ldap.confirmMessage.beforeSaveForm.cancelButtonText',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tconfirmButtonText: this.$locale.baseText(\n\t\t\t\t\t\t\t\t'settings.ldap.confirmMessage.beforeSaveForm.confirmButtonText',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\tsaveForm = confirmAction === MODAL_CONFIRM;\n\t\t\t\t}\n\n\t\t\t\tif (!saveForm) {\n\t\t\t\t\tthis.hasAnyChanges = true;\n\t\t\t\t}\n\n\t\t\t\tthis.adConfig = await this.settingsStore.updateLdapConfig(newConfiguration);\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.updateConfiguration'),\n\t\t\t\t\tmessage: '',\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.configurationError'));\n\t\t\t} finally {\n\t\t\t\tif (saveForm) {\n\t\t\t\t\tthis.hasAnyChanges = false;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonSaveClick() {\n\t\t\tthis.formBus.emit('submit');\n\t\t},\n\t\tasync onTestConnectionClick() {\n\t\t\tthis.loadingTestConnection = true;\n\t\t\ttry {\n\t\t\t\tawait this.settingsStore.testLdapConnection();\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.connectionTest'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.ldap.toast.connection.success'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.connectionTestError'),\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\ttype: 'error',\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\tthis.loadingTestConnection = false;\n\t\t\t}\n\t\t},\n\t\tasync onDryRunClick() {\n\t\t\tthis.loadingDryRun = true;\n\t\t\ttry {\n\t\t\t\tawait this.settingsStore.runLdapSync({ type: 'dry' });\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.runSync.title'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.ldap.toast.sync.success'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.synchronizationError'));\n\t\t\t} finally {\n\t\t\t\tthis.loadingDryRun = false;\n\t\t\t\tawait this.reloadLdapSynchronizations();\n\t\t\t}\n\t\t},\n\t\tasync onLiveRunClick() {\n\t\t\tthis.loadingLiveRun = true;\n\t\t\ttry {\n\t\t\t\tawait this.settingsStore.runLdapSync({ type: 'live' });\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.runSync.title'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.ldap.toast.sync.success'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.synchronizationError'));\n\t\t\t} finally {\n\t\t\t\tthis.loadingLiveRun = false;\n\t\t\t\tawait this.reloadLdapSynchronizations();\n\t\t\t}\n\t\t},\n\t\tasync getLdapConfig() {\n\t\t\ttry {\n\t\t\t\tthis.adConfig = await this.settingsStore.getLdapConfig();\n\t\t\t\tthis.loginEnabled = this.adConfig.loginEnabled;\n\t\t\t\tthis.syncEnabled = this.adConfig.synchronizationEnabled;\n\t\t\t\tconst whenLoginEnabled: IFormInput['shouldDisplay'] = (values) =>\n\t\t\t\t\tvalues.loginEnabled === true;\n\t\t\t\tconst whenSyncAndLoginEnabled: IFormInput['shouldDisplay'] = (values) =>\n\t\t\t\t\tvalues.synchronizationEnabled === true && values.loginEnabled === true;\n\t\t\t\tconst whenAdminBindingAndLoginEnabled: IFormInput['shouldDisplay'] = (values) =>\n\t\t\t\t\tvalues.bindingType === 'admin' && values.loginEnabled === true;\n\t\t\t\tthis.formInputs = [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'loginEnabled',\n\t\t\t\t\t\tinitialValue: this.adConfig.loginEnabled,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.loginEnabled.label'),\n\t\t\t\t\t\t\ttooltipText: this.$locale.baseText('settings.ldap.form.loginEnabled.tooltip'),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'loginLabel',\n\t\t\t\t\t\tinitialValue: this.adConfig.loginLabel,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.loginLabel.label'),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.loginLabel.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.loginLabel.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'serverAddress',\n\t\t\t\t\t\tinitialValue: this.adConfig.connectionUrl,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.serverAddress.label'),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.serverAddress.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.serverAddress.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'port',\n\t\t\t\t\t\tinitialValue: this.adConfig.connectionPort,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.port.label'),\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.port.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'connectionSecurity',\n\t\t\t\t\t\tinitialValue: this.adConfig.connectionSecurity,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'select',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.connectionSecurity.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.connectionSecurity.infoText'),\n\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'None',\n\t\t\t\t\t\t\t\t\tvalue: 'none',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'TLS',\n\t\t\t\t\t\t\t\t\tvalue: 'tls',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'STARTTLS',\n\t\t\t\t\t\t\t\t\tvalue: 'startTls',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'allowUnauthorizedCerts',\n\t\t\t\t\t\tinitialValue: this.adConfig.allowUnauthorizedCerts,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.allowUnauthorizedCerts.label'),\n\t\t\t\t\t\t\trequired: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay(values): boolean {\n\t\t\t\t\t\t\treturn values.connectionSecurity !== 'none' && values.loginEnabled === true;\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'baseDn',\n\t\t\t\t\t\tinitialValue: this.adConfig.baseDn,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.baseDn.label'),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.baseDn.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.baseDn.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'bindingType',\n\t\t\t\t\t\tinitialValue: 'admin',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'select',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.bindingType.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.bindingType.infoText'),\n\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue: 'admin',\n\t\t\t\t\t\t\t\t\tlabel: 'Admin',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue: 'anonymous',\n\t\t\t\t\t\t\t\t\tlabel: 'Anonymous',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'adminDn',\n\t\t\t\t\t\tinitialValue: this.adConfig.bindingAdminDn,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.adminDn.label'),\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.adminDn.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.adminDn.infoText'),\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenAdminBindingAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'adminPassword',\n\t\t\t\t\t\tinitialValue: this.adConfig.bindingAdminPassword,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.adminPassword.label'),\n\t\t\t\t\t\t\ttype: 'password',\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.adminPassword.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenAdminBindingAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'userFilter',\n\t\t\t\t\t\tinitialValue: this.adConfig.userFilter,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.userFilter.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\trequired: false,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.userFilter.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.userFilter.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'attributeMappingInfo',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.attributeMappingInfo.label'),\n\t\t\t\t\t\t\ttype: 'info',\n\t\t\t\t\t\t\tlabelSize: 'large',\n\t\t\t\t\t\t\tlabelAlignment: 'left',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'ldapId',\n\t\t\t\t\t\tinitialValue: this.adConfig.ldapIdAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.ldapId.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.ldapId.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.ldapId.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'loginId',\n\t\t\t\t\t\tinitialValue: this.adConfig.loginIdAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.loginId.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.loginId.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.loginId.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'email',\n\t\t\t\t\t\tinitialValue: this.adConfig.emailAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.email.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.email.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.email.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'firstName',\n\t\t\t\t\t\tinitialValue: this.adConfig.firstNameAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.firstName.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.firstName.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.firstName.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'lastName',\n\t\t\t\t\t\tinitialValue: this.adConfig.lastNameAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.lastName.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.lastName.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.lastName.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'synchronizationEnabled',\n\t\t\t\t\t\tinitialValue: this.adConfig.synchronizationEnabled,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.synchronizationEnabled.label'),\n\t\t\t\t\t\t\ttooltipText: this.$locale.baseText(\n\t\t\t\t\t\t\t\t'settings.ldap.form.synchronizationEnabled.tooltip',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'synchronizationInterval',\n\t\t\t\t\t\tinitialValue: this.adConfig.synchronizationInterval,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.synchronizationInterval.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText(\n\t\t\t\t\t\t\t\t'settings.ldap.form.synchronizationInterval.infoText',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenSyncAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'pageSize',\n\t\t\t\t\t\tinitialValue: this.adConfig.searchPageSize,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.pageSize.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.pageSize.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenSyncAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'searchTimeout',\n\t\t\t\t\t\tinitialValue: this.adConfig.searchTimeout,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.searchTimeout.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.searchTimeout.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenSyncAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.configurationError'));\n\t\t\t}\n\t\t},\n\t\tasync getLdapSynchronizations(state: Parameters<Events['infinite']>[0]) {\n\t\t\ttry {\n\t\t\t\tthis.loadingTable = true;\n\t\t\t\tconst data = await this.settingsStore.getLdapSynchronizations({\n\t\t\t\t\tpage: this.page,\n\t\t\t\t});\n\n\t\t\t\tif (data.length !== 0) {\n\t\t\t\t\tthis.dataTable.push(...data.map(this.syncDataMapper));\n\t\t\t\t\tthis.page += 1;\n\t\t\t\t\tstate.loaded();\n\t\t\t\t} else {\n\t\t\t\t\tstate.complete();\n\t\t\t\t}\n\t\t\t\tthis.loadingTable = false;\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.synchronizationError'));\n\t\t\t}\n\t\t},\n\t\tasync reloadLdapSynchronizations() {\n\t\t\ttry {\n\t\t\t\tthis.page = 0;\n\t\t\t\tthis.tableKey += 1;\n\t\t\t\tthis.dataTable = [];\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.synchronizationError'));\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\t> * {\n\t\tmargin-bottom: var(--spacing-2xl);\n\t}\n}\n\n.syncTable {\n\tmargin-bottom: var(--spacing-2xl);\n}\n\n.header {\n\tdisplay: flex;\n\talign-items: center;\n\twhite-space: nowrap;\n\n\t*:first-child {\n\t\tflex-grow: 1;\n\t}\n}\n\n.enableFeatureContainer {\n\tmargin-bottom: var(--spacing-1xl);\n}\n\n.enableFeatureContainer > span {\n\tfont-size: var(--font-size-s);\n\tfont-weight: var(--font-weight-bold);\n\tpadding: 0;\n}\n\n.enableFeatureContainer {\n\t> * {\n\t\tpadding: 0.5em;\n\t}\n}\n\n.sectionHeader {\n\tmargin-bottom: var(--spacing-s);\n}\n\n.settingsForm {\n\t:global(.form-text) {\n\t\tmargin-top: var(--spacing-xl);\n\t}\n}\n\n.docsInfoTip {\n\t&,\n\t& > div {\n\t\tmargin-bottom: var(--spacing-xl);\n\t}\n}\n</style>\n"],"names":["_sfc_main","defineComponent","InfiniteLoading","ElTable","ElTableColumn","useToast","useMessage","createEventBus","mapStores","useUsersStore","useSettingsStore","useUIStore","data","row","column","input","ready","sync","startedAt","endedAt","runTimeInMinutes","humanizeDuration","capitalizeFirstLetter","convertToDisplayDate","formInputsRef","newConfiguration","saveForm","MODAL_CONFIRM","error","whenLoginEnabled","values","whenSyncAndLoginEnabled","whenAdminBindingAndLoginEnabled","state","_hoisted_1","_hoisted_2","_hoisted_3","isLDAPFeatureEnabled","_ctx","_openBlock","_createElementBlock","$style","_createElementVNode","_normalizeClass","_createVNode","_component_n8n_heading","$locale","_withCtx","_createTextVNode","_toDisplayString","_component_n8n_info_tip","formInputs","_createBlock","_component_n8n_form_inputs","onInput","onReadyToSubmit","onSubmit","_createCommentVNode","loginEnabled","_component_n8n_button","loadingTestConnection","onTestConnectionClick","hasAnyChanges","readyToSubmit","_hoisted_4","_withDirectives","_component_ElTable","dataTable","_component_InfiniteLoading","getLdapSynchronizations","_hoisted_5","onDryRunClick","onLiveRunClick","_component_n8n_action_box","goToUpgrade"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsLdapView-TVoyUgkx.js","sources":["../../src/views/SettingsLdapView.vue"],"sourcesContent":["<template>\n\t<div v-if=\"!isLDAPFeatureEnabled\">\n\t\t<div :class=\"[$style.header, 'mb-2xl']\">\n\t\t\t<n8n-heading size=\"2xlarge\">\n\t\t\t\t{{ $locale.baseText('settings.ldap') }}\n\t\t\t</n8n-heading>\n\t\t</div>\n\n\t\t<n8n-info-tip type=\"note\" theme=\"info\" tooltip-placement=\"right\" class=\"mb-l\">\n\t\t\t{{ $locale.baseText('settings.ldap.note') }}\n\t\t</n8n-info-tip>\n\t\t<n8n-action-box\n\t\t\t:description=\"$locale.baseText('settings.ldap.disabled.description')\"\n\t\t\t:button-text=\"$locale.baseText('settings.ldap.disabled.buttonText')\"\n\t\t\t@click:button=\"goToUpgrade\"\n\t\t>\n\t\t\t<template #heading>\n\t\t\t\t<span>{{ $locale.baseText('settings.ldap.disabled.title') }}</span>\n\t\t\t</template>\n\t\t</n8n-action-box>\n\t</div>\n\t<div v-else>\n\t\t<div :class=\"$style.container\">\n\t\t\t<div :class=\"$style.header\">\n\t\t\t\t<n8n-heading size=\"2xlarge\">\n\t\t\t\t\t{{ $locale.baseText('settings.ldap') }}\n\t\t\t\t</n8n-heading>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.docsInfoTip\">\n\t\t\t\t<n8n-info-tip theme=\"info\" type=\"note\">\n\t\t\t\t\t<span v-html=\"$locale.baseText('settings.ldap.infoTip')\"></span>\n\t\t\t\t</n8n-info-tip>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.settingsForm\">\n\t\t\t\t<n8n-form-inputs\n\t\t\t\t\tv-if=\"formInputs\"\n\t\t\t\t\tref=\"ldapConfigForm\"\n\t\t\t\t\t:inputs=\"formInputs\"\n\t\t\t\t\t:event-bus=\"formBus\"\n\t\t\t\t\t:column-view=\"true\"\n\t\t\t\t\tvertical-spacing=\"l\"\n\t\t\t\t\t@update=\"onInput\"\n\t\t\t\t\t@ready=\"onReadyToSubmit\"\n\t\t\t\t\t@submit=\"onSubmit\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t<n8n-button\n\t\t\t\t\tv-if=\"loginEnabled\"\n\t\t\t\t\t:label=\"\n\t\t\t\t\t\tloadingTestConnection\n\t\t\t\t\t\t\t? $locale.baseText('settings.ldap.testingConnection')\n\t\t\t\t\t\t\t: $locale.baseText('settings.ldap.testConnection')\n\t\t\t\t\t\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\tclass=\"mr-s\"\n\t\t\t\t\t:disabled=\"hasAnyChanges || !readyToSubmit\"\n\t\t\t\t\t:loading=\"loadingTestConnection\"\n\t\t\t\t\t@click=\"onTestConnectionClick\"\n\t\t\t\t/>\n\t\t\t\t<n8n-button\n\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.save')\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t:disabled=\"!hasAnyChanges || !readyToSubmit\"\n\t\t\t\t\t@click=\"onSaveClick\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"loginEnabled\">\n\t\t\t<n8n-heading tag=\"h1\" class=\"mb-xl mt-3xl\" size=\"medium\">{{\n\t\t\t\t$locale.baseText('settings.ldap.section.synchronization.title')\n\t\t\t}}</n8n-heading>\n\t\t\t<div :class=\"$style.syncTable\">\n\t\t\t\t<ElTable\n\t\t\t\t\t:key=\"tableKey\"\n\t\t\t\t\tv-loading=\"loadingTable\"\n\t\t\t\t\t:border=\"true\"\n\t\t\t\t\t:stripe=\"true\"\n\t\t\t\t\t:data=\"dataTable\"\n\t\t\t\t\t:cell-style=\"cellClassStyle\"\n\t\t\t\t\tstyle=\"width: 100%\"\n\t\t\t\t\tmax-height=\"250\"\n\t\t\t\t>\n\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\tprop=\"status\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.status')\"\n\t\t\t\t\t>\n\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\tprop=\"endedAt\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.endedAt')\"\n\t\t\t\t\t>\n\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\tprop=\"runMode\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.runMode')\"\n\t\t\t\t\t>\n\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\tprop=\"runTime\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.runTime')\"\n\t\t\t\t\t>\n\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\tprop=\"details\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.details')\"\n\t\t\t\t\t>\n\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t<template #empty>{{\n\t\t\t\t\t\t$locale.baseText('settings.ldap.synchronizationTable.empty.message')\n\t\t\t\t\t}}</template>\n\t\t\t\t\t<template #append>\n\t\t\t\t\t\t<InfiniteLoading target=\".el-table__body-wrapper\" @infinite=\"getLdapSynchronizations\">\n\t\t\t\t\t\t</InfiniteLoading>\n\t\t\t\t\t</template>\n\t\t\t\t</ElTable>\n\t\t\t</div>\n\t\t\t<div class=\"pb-3xl\">\n\t\t\t\t<n8n-button\n\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.dryRun')\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\tclass=\"mr-s\"\n\t\t\t\t\t:disabled=\"hasAnyChanges || !readyToSubmit\"\n\t\t\t\t\t:loading=\"loadingDryRun\"\n\t\t\t\t\t@click=\"onDryRunClick\"\n\t\t\t\t/>\n\t\t\t\t<n8n-button\n\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizeNow')\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t:disabled=\"hasAnyChanges || !readyToSubmit\"\n\t\t\t\t\t:loading=\"loadingLiveRun\"\n\t\t\t\t\t@click=\"onLiveRunClick\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport type { CSSProperties } from 'vue';\nimport { defineComponent } from 'vue';\nimport { capitalizeFirstLetter } from '@/utils/htmlUtils';\nimport { convertToDisplayDate } from '@/utils/typesUtils';\nimport { useToast } from '@/composables/useToast';\nimport { useMessage } from '@/composables/useMessage';\nimport type {\n\tILdapConfig,\n\tILdapSyncData,\n\tILdapSyncTable,\n\tIFormInput,\n\tIFormInputs,\n\tIUser,\n} from '@/Interface';\nimport { MODAL_CONFIRM } from '@/constants';\n\nimport humanizeDuration from 'humanize-duration';\nimport { ElTable, ElTableColumn } from 'element-plus';\nimport type { Events } from 'v3-infinite-loading';\nimport InfiniteLoading from 'v3-infinite-loading';\nimport { mapStores } from 'pinia';\nimport { useUsersStore } from '@/stores/users.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { createEventBus } from 'n8n-design-system/utils';\nimport type { TableColumnCtx } from 'element-plus';\n\ntype TableRow = {\n\tstatus: string;\n\tstartAt: string;\n\tendedAt: string;\n\terror: string;\n\trunMode: string;\n};\n\ntype LDAPConfigForm = {\n\tloginEnabled: boolean;\n\tloginLabel: string;\n\tserverAddress: string;\n\tallowUnauthorizedCerts: boolean;\n\tport: number;\n\tconnectionSecurity: string;\n\tbaseDn: string;\n\tbindingType: 'admin' | 'anonymous';\n\tadminDn: string;\n\tadminPassword: string;\n\temail: string;\n\tfirstName: string;\n\tlastName: string;\n\tloginId: string;\n\tldapId: string;\n\tuserFilter: string;\n\tsynchronizationEnabled: boolean;\n\tsynchronizationInterval: string;\n\tpageSize: string;\n\tsearchTimeout: string;\n};\n\ntype CellClassStyleMethodParams<T> = {\n\tdata: {\n\t\trow: T;\n\t\trowIndex: number;\n\t\tcolumn: TableColumnCtx<T>;\n\t\tcolumnIndex: number;\n\t};\n};\n\nexport default defineComponent({\n\tname: 'SettingsLdapView',\n\tcomponents: {\n\t\tInfiniteLoading,\n\t\tElTable,\n\t\tElTableColumn,\n\t},\n\tsetup() {\n\t\treturn {\n\t\t\t...useToast(),\n\t\t\t...useMessage(),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdataTable: [] as ILdapSyncTable[],\n\t\t\ttableKey: 0,\n\t\t\tadConfig: {} as ILdapConfig,\n\t\t\tloadingTestConnection: false,\n\t\t\tloadingDryRun: false,\n\t\t\tloadingLiveRun: false,\n\t\t\tloadingTable: false,\n\t\t\thasAnyChanges: false,\n\t\t\tformInputs: null as null | IFormInputs,\n\t\t\tformBus: createEventBus(),\n\t\t\treadyToSubmit: false,\n\t\t\tpage: 0,\n\t\t\tloginEnabled: false,\n\t\t\tsyncEnabled: false,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useUsersStore, useSettingsStore, useUIStore),\n\t\tcurrentUser(): null | IUser {\n\t\t\treturn this.usersStore.currentUser;\n\t\t},\n\t\tisLDAPFeatureEnabled(): boolean {\n\t\t\treturn this.settingsStore.settings.enterprise.ldap;\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (!this.isLDAPFeatureEnabled) return;\n\t\tawait this.getLdapConfig();\n\t},\n\tmethods: {\n\t\tgoToUpgrade() {\n\t\t\tvoid this.uiStore.goToUpgrade('ldap', 'upgrade-ldap');\n\t\t},\n\t\tcellClassStyle({ data }: CellClassStyleMethodParams<TableRow>): CSSProperties {\n\t\t\tconst { row, column } = data;\n\t\t\tif (column.property === 'status') {\n\t\t\t\tif (row.status === 'Success') {\n\t\t\t\t\treturn { color: 'green' };\n\t\t\t\t} else if (row.status === 'Error') {\n\t\t\t\t\treturn { color: 'red' };\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (column.property === 'runMode') {\n\t\t\t\tif (row.runMode === 'Dry') {\n\t\t\t\t\treturn { color: 'orange' };\n\t\t\t\t} else if (row.runMode === 'Live') {\n\t\t\t\t\treturn { color: 'blue' };\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {};\n\t\t},\n\t\tonInput(input: { name: string; value: string | number | boolean }) {\n\t\t\tif (input.name === 'loginEnabled' && typeof input.value === 'boolean') {\n\t\t\t\tthis.loginEnabled = input.value;\n\t\t\t}\n\t\t\tif (input.name === 'synchronizationEnabled' && typeof input.value === 'boolean') {\n\t\t\t\tthis.syncEnabled = input.value;\n\t\t\t}\n\t\t\tthis.hasAnyChanges = true;\n\t\t},\n\t\tonReadyToSubmit(ready: boolean) {\n\t\t\tthis.readyToSubmit = ready;\n\t\t},\n\t\tsyncDataMapper(sync: ILdapSyncData): ILdapSyncTable {\n\t\t\tconst startedAt = new Date(sync.startedAt);\n\t\t\tconst endedAt = new Date(sync.endedAt);\n\t\t\tconst runTimeInMinutes = endedAt.getTime() - startedAt.getTime();\n\t\t\treturn {\n\t\t\t\trunTime: humanizeDuration(runTimeInMinutes),\n\t\t\t\trunMode: capitalizeFirstLetter(sync.runMode),\n\t\t\t\tstatus: capitalizeFirstLetter(sync.status),\n\t\t\t\tendedAt: convertToDisplayDate(endedAt.getTime()),\n\t\t\t\tdetails: this.$locale.baseText('settings.ldap.usersScanned', {\n\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\tscanned: sync.scanned.toString(),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t};\n\t\t},\n\t\tasync onSubmit(): Promise<void> {\n\t\t\t// We want to save all form values (incl. the hidden onces), so we are using\n\t\t\t// `values` data prop of the `FormInputs` child component since they are all preserved there\n\t\t\tconst formInputsRef = this.$refs.ldapConfigForm as { values: LDAPConfigForm };\n\n\t\t\tif (!this.hasAnyChanges || !formInputsRef) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst newConfiguration: ILdapConfig = {\n\t\t\t\tloginEnabled: formInputsRef.values.loginEnabled,\n\t\t\t\tloginLabel: formInputsRef.values.loginLabel,\n\t\t\t\tconnectionUrl: formInputsRef.values.serverAddress,\n\t\t\t\tallowUnauthorizedCerts: formInputsRef.values.allowUnauthorizedCerts,\n\t\t\t\tconnectionPort: +formInputsRef.values.port,\n\t\t\t\tconnectionSecurity: formInputsRef.values.connectionSecurity,\n\t\t\t\tbaseDn: formInputsRef.values.baseDn,\n\t\t\t\tbindingAdminDn:\n\t\t\t\t\tformInputsRef.values.bindingType === 'admin' ? formInputsRef.values.adminDn : '',\n\t\t\t\tbindingAdminPassword:\n\t\t\t\t\tformInputsRef.values.bindingType === 'admin' ? formInputsRef.values.adminPassword : '',\n\t\t\t\temailAttribute: formInputsRef.values.email,\n\t\t\t\tfirstNameAttribute: formInputsRef.values.firstName,\n\t\t\t\tlastNameAttribute: formInputsRef.values.lastName,\n\t\t\t\tloginIdAttribute: formInputsRef.values.loginId,\n\t\t\t\tldapIdAttribute: formInputsRef.values.ldapId,\n\t\t\t\tuserFilter: formInputsRef.values.userFilter,\n\t\t\t\tsynchronizationEnabled: formInputsRef.values.synchronizationEnabled,\n\t\t\t\tsynchronizationInterval: +formInputsRef.values.synchronizationInterval,\n\t\t\t\tsearchPageSize: +formInputsRef.values.pageSize,\n\t\t\t\tsearchTimeout: +formInputsRef.values.searchTimeout,\n\t\t\t};\n\n\t\t\tlet saveForm = true;\n\n\t\t\ttry {\n\t\t\t\tif (this.adConfig.loginEnabled && !newConfiguration.loginEnabled) {\n\t\t\t\t\tconst confirmAction = await this.confirm(\n\t\t\t\t\t\tthis.$locale.baseText('settings.ldap.confirmMessage.beforeSaveForm.message'),\n\t\t\t\t\t\tthis.$locale.baseText('settings.ldap.confirmMessage.beforeSaveForm.headline'),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcancelButtonText: this.$locale.baseText(\n\t\t\t\t\t\t\t\t'settings.ldap.confirmMessage.beforeSaveForm.cancelButtonText',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tconfirmButtonText: this.$locale.baseText(\n\t\t\t\t\t\t\t\t'settings.ldap.confirmMessage.beforeSaveForm.confirmButtonText',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\tsaveForm = confirmAction === MODAL_CONFIRM;\n\t\t\t\t}\n\n\t\t\t\tif (!saveForm) {\n\t\t\t\t\tthis.hasAnyChanges = true;\n\t\t\t\t}\n\n\t\t\t\tthis.adConfig = await this.settingsStore.updateLdapConfig(newConfiguration);\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.updateConfiguration'),\n\t\t\t\t\tmessage: '',\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.configurationError'));\n\t\t\t} finally {\n\t\t\t\tif (saveForm) {\n\t\t\t\t\tthis.hasAnyChanges = false;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonSaveClick() {\n\t\t\tthis.formBus.emit('submit');\n\t\t},\n\t\tasync onTestConnectionClick() {\n\t\t\tthis.loadingTestConnection = true;\n\t\t\ttry {\n\t\t\t\tawait this.settingsStore.testLdapConnection();\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.connectionTest'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.ldap.toast.connection.success'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.connectionTestError'),\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\ttype: 'error',\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\tthis.loadingTestConnection = false;\n\t\t\t}\n\t\t},\n\t\tasync onDryRunClick() {\n\t\t\tthis.loadingDryRun = true;\n\t\t\ttry {\n\t\t\t\tawait this.settingsStore.runLdapSync({ type: 'dry' });\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.runSync.title'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.ldap.toast.sync.success'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.synchronizationError'));\n\t\t\t} finally {\n\t\t\t\tthis.loadingDryRun = false;\n\t\t\t\tawait this.reloadLdapSynchronizations();\n\t\t\t}\n\t\t},\n\t\tasync onLiveRunClick() {\n\t\t\tthis.loadingLiveRun = true;\n\t\t\ttry {\n\t\t\t\tawait this.settingsStore.runLdapSync({ type: 'live' });\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.runSync.title'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.ldap.toast.sync.success'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.synchronizationError'));\n\t\t\t} finally {\n\t\t\t\tthis.loadingLiveRun = false;\n\t\t\t\tawait this.reloadLdapSynchronizations();\n\t\t\t}\n\t\t},\n\t\tasync getLdapConfig() {\n\t\t\ttry {\n\t\t\t\tthis.adConfig = await this.settingsStore.getLdapConfig();\n\t\t\t\tthis.loginEnabled = this.adConfig.loginEnabled;\n\t\t\t\tthis.syncEnabled = this.adConfig.synchronizationEnabled;\n\t\t\t\tconst whenLoginEnabled: IFormInput['shouldDisplay'] = (values) =>\n\t\t\t\t\tvalues.loginEnabled === true;\n\t\t\t\tconst whenSyncAndLoginEnabled: IFormInput['shouldDisplay'] = (values) =>\n\t\t\t\t\tvalues.synchronizationEnabled === true && values.loginEnabled === true;\n\t\t\t\tconst whenAdminBindingAndLoginEnabled: IFormInput['shouldDisplay'] = (values) =>\n\t\t\t\t\tvalues.bindingType === 'admin' && values.loginEnabled === true;\n\t\t\t\tthis.formInputs = [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'loginEnabled',\n\t\t\t\t\t\tinitialValue: this.adConfig.loginEnabled,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.loginEnabled.label'),\n\t\t\t\t\t\t\ttooltipText: this.$locale.baseText('settings.ldap.form.loginEnabled.tooltip'),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'loginLabel',\n\t\t\t\t\t\tinitialValue: this.adConfig.loginLabel,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.loginLabel.label'),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.loginLabel.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.loginLabel.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'serverAddress',\n\t\t\t\t\t\tinitialValue: this.adConfig.connectionUrl,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.serverAddress.label'),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.serverAddress.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.serverAddress.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'port',\n\t\t\t\t\t\tinitialValue: this.adConfig.connectionPort,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.port.label'),\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.port.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'connectionSecurity',\n\t\t\t\t\t\tinitialValue: this.adConfig.connectionSecurity,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'select',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.connectionSecurity.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.connectionSecurity.infoText'),\n\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'None',\n\t\t\t\t\t\t\t\t\tvalue: 'none',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'TLS',\n\t\t\t\t\t\t\t\t\tvalue: 'tls',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'STARTTLS',\n\t\t\t\t\t\t\t\t\tvalue: 'startTls',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'allowUnauthorizedCerts',\n\t\t\t\t\t\tinitialValue: this.adConfig.allowUnauthorizedCerts,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.allowUnauthorizedCerts.label'),\n\t\t\t\t\t\t\trequired: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay(values): boolean {\n\t\t\t\t\t\t\treturn values.connectionSecurity !== 'none' && values.loginEnabled === true;\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'baseDn',\n\t\t\t\t\t\tinitialValue: this.adConfig.baseDn,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.baseDn.label'),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.baseDn.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.baseDn.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'bindingType',\n\t\t\t\t\t\tinitialValue: 'admin',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'select',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.bindingType.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.bindingType.infoText'),\n\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue: 'admin',\n\t\t\t\t\t\t\t\t\tlabel: 'Admin',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue: 'anonymous',\n\t\t\t\t\t\t\t\t\tlabel: 'Anonymous',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'adminDn',\n\t\t\t\t\t\tinitialValue: this.adConfig.bindingAdminDn,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.adminDn.label'),\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.adminDn.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.adminDn.infoText'),\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenAdminBindingAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'adminPassword',\n\t\t\t\t\t\tinitialValue: this.adConfig.bindingAdminPassword,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.adminPassword.label'),\n\t\t\t\t\t\t\ttype: 'password',\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.adminPassword.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenAdminBindingAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'userFilter',\n\t\t\t\t\t\tinitialValue: this.adConfig.userFilter,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.userFilter.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\trequired: false,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.userFilter.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.userFilter.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'attributeMappingInfo',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.attributeMappingInfo.label'),\n\t\t\t\t\t\t\ttype: 'info',\n\t\t\t\t\t\t\tlabelSize: 'large',\n\t\t\t\t\t\t\tlabelAlignment: 'left',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'ldapId',\n\t\t\t\t\t\tinitialValue: this.adConfig.ldapIdAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.ldapId.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.ldapId.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.ldapId.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'loginId',\n\t\t\t\t\t\tinitialValue: this.adConfig.loginIdAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.loginId.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.loginId.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.loginId.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'email',\n\t\t\t\t\t\tinitialValue: this.adConfig.emailAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.email.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.email.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.email.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'firstName',\n\t\t\t\t\t\tinitialValue: this.adConfig.firstNameAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.firstName.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.firstName.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.firstName.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'lastName',\n\t\t\t\t\t\tinitialValue: this.adConfig.lastNameAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.lastName.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.lastName.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.lastName.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'synchronizationEnabled',\n\t\t\t\t\t\tinitialValue: this.adConfig.synchronizationEnabled,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.synchronizationEnabled.label'),\n\t\t\t\t\t\t\ttooltipText: this.$locale.baseText(\n\t\t\t\t\t\t\t\t'settings.ldap.form.synchronizationEnabled.tooltip',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'synchronizationInterval',\n\t\t\t\t\t\tinitialValue: this.adConfig.synchronizationInterval,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.synchronizationInterval.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText(\n\t\t\t\t\t\t\t\t'settings.ldap.form.synchronizationInterval.infoText',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenSyncAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'pageSize',\n\t\t\t\t\t\tinitialValue: this.adConfig.searchPageSize,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.pageSize.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.pageSize.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenSyncAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'searchTimeout',\n\t\t\t\t\t\tinitialValue: this.adConfig.searchTimeout,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.searchTimeout.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.searchTimeout.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenSyncAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.configurationError'));\n\t\t\t}\n\t\t},\n\t\tasync getLdapSynchronizations(state: Parameters<Events['infinite']>[0]) {\n\t\t\ttry {\n\t\t\t\tthis.loadingTable = true;\n\t\t\t\tconst data = await this.settingsStore.getLdapSynchronizations({\n\t\t\t\t\tpage: this.page,\n\t\t\t\t});\n\n\t\t\t\tif (data.length !== 0) {\n\t\t\t\t\tthis.dataTable.push(...data.map(this.syncDataMapper));\n\t\t\t\t\tthis.page += 1;\n\t\t\t\t\tstate.loaded();\n\t\t\t\t} else {\n\t\t\t\t\tstate.complete();\n\t\t\t\t}\n\t\t\t\tthis.loadingTable = false;\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.synchronizationError'));\n\t\t\t}\n\t\t},\n\t\tasync reloadLdapSynchronizations() {\n\t\t\ttry {\n\t\t\t\tthis.page = 0;\n\t\t\t\tthis.tableKey += 1;\n\t\t\t\tthis.dataTable = [];\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.synchronizationError'));\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\t> * {\n\t\tmargin-bottom: var(--spacing-2xl);\n\t}\n}\n\n.syncTable {\n\tmargin-bottom: var(--spacing-2xl);\n}\n\n.header {\n\tdisplay: flex;\n\talign-items: center;\n\twhite-space: nowrap;\n\n\t*:first-child {\n\t\tflex-grow: 1;\n\t}\n}\n\n.enableFeatureContainer {\n\tmargin-bottom: var(--spacing-1xl);\n}\n\n.enableFeatureContainer > span {\n\tfont-size: var(--font-size-s);\n\tfont-weight: var(--font-weight-bold);\n\tpadding: 0;\n}\n\n.enableFeatureContainer {\n\t> * {\n\t\tpadding: 0.5em;\n\t}\n}\n\n.sectionHeader {\n\tmargin-bottom: var(--spacing-s);\n}\n\n.settingsForm {\n\t:global(.form-text) {\n\t\tmargin-top: var(--spacing-xl);\n\t}\n}\n\n.docsInfoTip {\n\t&,\n\t& > div {\n\t\tmargin-bottom: var(--spacing-xl);\n\t}\n}\n</style>\n"],"names":["_sfc_main","defineComponent","InfiniteLoading","ElTable","ElTableColumn","useToast","useMessage","createEventBus","mapStores","useUsersStore","useSettingsStore","useUIStore","data","row","column","input","ready","sync","startedAt","endedAt","runTimeInMinutes","humanizeDuration","capitalizeFirstLetter","convertToDisplayDate","formInputsRef","newConfiguration","saveForm","MODAL_CONFIRM","error","whenLoginEnabled","values","whenSyncAndLoginEnabled","whenAdminBindingAndLoginEnabled","state","_hoisted_1","_hoisted_2","_hoisted_3","isLDAPFeatureEnabled","_ctx","_openBlock","_createElementBlock","$style","_createElementVNode","_normalizeClass","_createVNode","_component_n8n_heading","$locale","_withCtx","_createTextVNode","_toDisplayString","_component_n8n_info_tip","formInputs","_createBlock","_component_n8n_form_inputs","onInput","onReadyToSubmit","onSubmit","_createCommentVNode","loginEnabled","_component_n8n_button","loadingTestConnection","onTestConnectionClick","hasAnyChanges","readyToSubmit","_hoisted_4","_withDirectives","_component_ElTable","dataTable","_component_InfiniteLoading","getLdapSynchronizations","_hoisted_5","onDryRunClick","onLiveRunClick","_component_n8n_action_box","goToUpgrade"],"mappings":"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"}
|