n8n-editor-ui
Version:
Workflow Editor UI for n8n
145 lines (144 loc) • 5.01 kB
JavaScript
import { C as computed } from "./vue.runtime.esm-bundler-tP5dCd7J.js";
import { _t as useI18n } from "./_MapCache-ficiegRb.js";
import { y as useRouter } from "./truncate-B1HVeveJ.js";
import { gs as useSettingsStore, oa as useUIStore, vr as hasPermission } from "./builder.store-sBTWwxRU.js";
import { Ro as VIEWS } from "./constants-BbpucWL4.js";
function useUserHelpers(router) {
const canUserAccessRouteByName = (name) => {
return canUserAccessRoute(router.resolve({ name }));
};
const canUserAccessRoute = (route) => {
const middleware = route.meta?.middleware;
const middlewareOptions = route.meta?.middlewareOptions;
if (!middleware) return true;
return hasPermission(middleware, middlewareOptions);
};
return { canUserAccessRouteByName };
}
function useSettingsItems() {
const router = useRouter();
const i18n = useI18n();
const uiStore = useUIStore();
const settingsStore = useSettingsStore();
const { canUserAccessRouteByName } = useUserHelpers(router);
const settingsItems = 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-project-roles",
icon: "user-round",
label: i18n.baseText("settings.projectRoles"),
position: "top",
available: canUserAccessRouteByName(VIEWS.PROJECT_ROLES_SETTINGS),
route: { to: { name: VIEWS.PROJECT_ROLES_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-credential-resolvers",
icon: "key-round",
label: i18n.baseText("credentialResolver.view.title"),
position: "top",
available: canUserAccessRouteByName(VIEWS.RESOLVERS),
route: { to: { name: VIEWS.RESOLVERS } }
},
{
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 } }
});
menuItems.push({
id: "settings-migration-report",
icon: "list-checks",
label: i18n.baseText("settings.migrationReport"),
position: "top",
available: canUserAccessRouteByName(VIEWS.MIGRATION_REPORT),
route: { to: { name: VIEWS.MIGRATION_REPORT } }
});
const moduleItems = uiStore.settingsSidebarItems;
return menuItems.concat(moduleItems.filter((item) => !menuItems.some((m) => m.id === item.id)));
});
return { settingsItems: computed(() => settingsItems.value.filter((item) => item.available)) };
}
export { useSettingsItems as t };