Files
lcbp3.np-dms.work/n8n-cache/n8n/public/assets/SettingsView-CN8rNrUi.js
2025-09-21 20:29:15 +07:00

240 lines
9.0 KiB
JavaScript
Executable File

import { aD as hasPermission, d as defineComponent, b as useRouter, a2 as useRoute, at as useRootStore, v as useSettingsStore, Q as useUIStore, x as computed, V as VIEWS, c as useI18n, h as createElementBlock, g as openBlock, n as normalizeClass, i as createVNode, br as N8nMenu, w as withCtx, j as createBaseVNode, C as N8nLink, l as unref, bt as ABOUT_MODAL_KEY, k as createTextVNode, t as toDisplayString, N as N8nIcon, m as N8nHeading, _ as _export_sfc, r as ref, o as onMounted, a8 as resolveComponent, K as mergeProps, dN as isRouteLocationRaw } from "./index-CeNA_ukL.js";
function useUserHelpers(router, route) {
const canUserAccessRouteByName = (name) => {
const resolvedRoute = router.resolve({ name });
return canUserAccessRoute(resolvedRoute);
};
const canUserAccessCurrentRoute = () => {
return canUserAccessRoute(route);
};
const canUserAccessRoute = (route2) => {
const middleware = route2.meta?.middleware;
const middlewareOptions = route2.meta?.middlewareOptions;
if (!middleware) {
return true;
}
return hasPermission(middleware, middlewareOptions);
};
return {
canUserAccessRouteByName,
canUserAccessCurrentRoute,
canUserAccessRoute
};
}
const _hoisted_1 = { class: "mr-xs" };
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
__name: "SettingsSidebar",
emits: ["return"],
setup(__props, { emit: __emit }) {
const emit = __emit;
const router = useRouter();
const route = useRoute();
const i18n = useI18n();
const { canUserAccessRouteByName } = useUserHelpers(router, route);
const rootStore = useRootStore();
const settingsStore = useSettingsStore();
const uiStore = useUIStore();
const sidebarMenuItems = computed(() => {
const menuItems = [
{
id: "settings-usage-and-plan",
icon: "chart-column-decreasing",
label: i18n.baseText("settings.usageAndPlan.title"),
position: "top",
available: canUserAccessRouteByName(VIEWS.USAGE),
route: { to: { name: VIEWS.USAGE } }
},
{
id: "settings-personal",
icon: "circle-user-round",
label: i18n.baseText("settings.personal"),
position: "top",
available: canUserAccessRouteByName(VIEWS.PERSONAL_SETTINGS),
route: { to: { name: VIEWS.PERSONAL_SETTINGS } }
},
{
id: "settings-users",
icon: "user-round",
label: i18n.baseText("settings.users"),
position: "top",
available: canUserAccessRouteByName(VIEWS.USERS_SETTINGS),
route: { to: { name: VIEWS.USERS_SETTINGS } }
},
{
id: "settings-api",
icon: "plug",
label: i18n.baseText("settings.n8napi"),
position: "top",
available: settingsStore.isPublicApiEnabled && canUserAccessRouteByName(VIEWS.API_SETTINGS),
route: { to: { name: VIEWS.API_SETTINGS } }
},
{
id: "settings-external-secrets",
icon: "vault",
label: i18n.baseText("settings.externalSecrets.title"),
position: "top",
available: canUserAccessRouteByName(VIEWS.EXTERNAL_SECRETS_SETTINGS),
route: { to: { name: VIEWS.EXTERNAL_SECRETS_SETTINGS } }
},
{
id: "settings-source-control",
icon: "git-branch",
label: i18n.baseText("settings.sourceControl.title"),
position: "top",
available: canUserAccessRouteByName(VIEWS.SOURCE_CONTROL),
route: { to: { name: VIEWS.SOURCE_CONTROL } }
},
{
id: "settings-sso",
icon: "user-lock",
label: i18n.baseText("settings.sso"),
position: "top",
available: canUserAccessRouteByName(VIEWS.SSO_SETTINGS),
route: { to: { name: VIEWS.SSO_SETTINGS } }
},
{
id: "settings-ldap",
icon: "network",
label: i18n.baseText("settings.ldap"),
position: "top",
available: canUserAccessRouteByName(VIEWS.LDAP_SETTINGS),
route: { to: { name: VIEWS.LDAP_SETTINGS } }
},
{
id: "settings-workersview",
icon: "waypoints",
label: i18n.baseText("mainSidebar.workersView"),
position: "top",
available: settingsStore.isQueueModeEnabled && hasPermission(["rbac"], { rbac: { scope: "workersView:manage" } }),
route: { to: { name: VIEWS.WORKER_VIEW } }
}
];
menuItems.push({
id: "settings-log-streaming",
icon: "log-in",
label: i18n.baseText("settings.log-streaming"),
position: "top",
available: canUserAccessRouteByName(VIEWS.LOG_STREAMING_SETTINGS),
route: { to: { name: VIEWS.LOG_STREAMING_SETTINGS } }
});
menuItems.push({
id: "settings-community-nodes",
icon: "box",
label: i18n.baseText("settings.communityNodes"),
position: "top",
available: canUserAccessRouteByName(VIEWS.COMMUNITY_NODES),
route: { to: { name: VIEWS.COMMUNITY_NODES } }
});
return menuItems;
});
return (_ctx, _cache) => {
const _component_n8n_icon = N8nIcon;
const _component_n8n_heading = N8nHeading;
const _component_n8n_link = N8nLink;
const _component_n8n_menu = N8nMenu;
return openBlock(), createElementBlock("div", {
class: normalizeClass(_ctx.$style.container)
}, [
createVNode(_component_n8n_menu, { items: sidebarMenuItems.value }, {
header: withCtx(() => [
createBaseVNode("div", {
class: normalizeClass(_ctx.$style.returnButton),
"data-test-id": "settings-back",
onClick: _cache[0] || (_cache[0] = ($event) => emit("return"))
}, [
createBaseVNode("i", _hoisted_1, [
createVNode(_component_n8n_icon, { icon: "arrow-left" })
]),
createVNode(_component_n8n_heading, {
size: "large",
bold: true
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(unref(i18n).baseText("settings")), 1)
]),
_: 1
})
], 2)
]),
menuSuffix: withCtx(() => [
createBaseVNode("div", {
class: normalizeClass(_ctx.$style.versionContainer)
}, [
createVNode(_component_n8n_link, {
size: "small",
onClick: _cache[1] || (_cache[1] = ($event) => unref(uiStore).openModal(unref(ABOUT_MODAL_KEY)))
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(unref(i18n).baseText("settings.version")) + " " + toDisplayString(unref(rootStore).versionCli), 1)
]),
_: 1
})
], 2)
]),
_: 1
}, 8, ["items"])
], 2);
};
}
});
const container$1 = "_container_lkskk_123";
const returnButton = "_returnButton_lkskk_132";
const versionContainer = "_versionContainer_lkskk_140";
const style0$1 = {
container: container$1,
returnButton,
versionContainer
};
const cssModules$1 = {
"$style": style0$1
};
const SettingsSidebar = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__cssModules", cssModules$1]]);
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "SettingsView",
setup(__props) {
const router = useRouter();
const previousRoute = ref();
function onReturn() {
const resolvedSettingsRoute = router.resolve({ name: VIEWS.SETTINGS });
const resolvedPreviousRoute = isRouteLocationRaw(previousRoute.value) ? router.resolve(previousRoute.value) : null;
const backRoute = !resolvedPreviousRoute || resolvedPreviousRoute.path.startsWith(resolvedSettingsRoute.path) ? { name: VIEWS.HOMEPAGE } : resolvedPreviousRoute;
void router.push(backRoute);
}
onMounted(() => {
previousRoute.value = router.options.history.state.back;
});
return (_ctx, _cache) => {
const _component_router_view = resolveComponent("router-view");
return openBlock(), createElementBlock("div", {
class: normalizeClass(_ctx.$style.container)
}, [
createVNode(SettingsSidebar, { onReturn }),
createBaseVNode("div", {
class: normalizeClass(_ctx.$style.contentContainer)
}, [
createBaseVNode("div", {
class: normalizeClass(_ctx.$style.content)
}, [
createVNode(_component_router_view, mergeProps({ name: "settingsView" }, _ctx.$attrs), null, 16)
], 2)
], 2)
], 2);
};
}
});
const container = "_container_1d9bd_123";
const contentContainer = "_contentContainer_1d9bd_130 _container_1d9bd_123";
const content = "_content_1d9bd_130";
const style0 = {
container,
contentContainer,
content
};
const cssModules = {
"$style": style0
};
const SettingsView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
export {
SettingsView as default
};