| /** |
| * Copyright (c) HashiCorp, Inc. |
| * SPDX-License-Identifier: MPL-2.0 |
| */ |
| |
| import { helper as buildHelper } from '@ember/component/helper'; |
| import { pluralize } from 'ember-inflector'; |
| import { capitalize } from '@ember/string'; |
| |
| const TABS_FOR_SETTINGS = { |
| aws: [ |
| { |
| label: 'Client', |
| routeParams: ['vault.cluster.settings.auth.configure.section', 'client'], |
| }, |
| { |
| label: 'Identity Allow List Tidy', |
| routeParams: ['vault.cluster.settings.auth.configure.section', 'identity-accesslist'], |
| }, |
| { |
| label: 'Role Tag Deny List Tidy', |
| routeParams: ['vault.cluster.settings.auth.configure.section', 'roletag-denylist'], |
| }, |
| ], |
| azure: [ |
| { |
| label: 'Configuration', |
| routeParams: ['vault.cluster.settings.auth.configure.section', 'configuration'], |
| }, |
| ], |
| github: [ |
| { |
| label: 'Configuration', |
| routeParams: ['vault.cluster.settings.auth.configure.section', 'configuration'], |
| }, |
| ], |
| gcp: [ |
| { |
| label: 'Configuration', |
| routeParams: ['vault.cluster.settings.auth.configure.section', 'configuration'], |
| }, |
| ], |
| jwt: [ |
| { |
| label: 'Configuration', |
| routeParams: ['vault.cluster.settings.auth.configure.section', 'configuration'], |
| }, |
| ], |
| oidc: [ |
| { |
| label: 'Configuration', |
| routeParams: ['vault.cluster.settings.auth.configure.section', 'configuration'], |
| }, |
| ], |
| kubernetes: [ |
| { |
| label: 'Configuration', |
| routeParams: ['vault.cluster.settings.auth.configure.section', 'configuration'], |
| }, |
| ], |
| ldap: [ |
| { |
| label: 'Configuration', |
| routeParams: ['vault.cluster.settings.auth.configure.section', 'configuration'], |
| }, |
| ], |
| okta: [ |
| { |
| label: 'Configuration', |
| routeParams: ['vault.cluster.settings.auth.configure.section', 'configuration'], |
| }, |
| ], |
| radius: [ |
| { |
| label: 'Configuration', |
| routeParams: ['vault.cluster.settings.auth.configure.section', 'configuration'], |
| }, |
| ], |
| }; |
| |
| const TABS_FOR_SHOW = {}; |
| |
| export function tabsForAuthSection([model, sectionType = 'authSettings', paths]) { |
| let tabs; |
| if (sectionType === 'authSettings') { |
| tabs = (TABS_FOR_SETTINGS[model.type] || []).slice(); |
| tabs.push({ |
| label: 'Method Options', |
| routeParams: ['vault.cluster.settings.auth.configure.section', 'options'], |
| }); |
| return tabs; |
| } |
| if (paths || model.paths) { |
| if (model.paths) { |
| paths = model.paths.paths.filter((path) => path.navigation); |
| } |
| |
| // TODO: we're unsure if we actually need compact here |
| // but are leaving it just in case OpenAPI ever returns an empty thing |
| tabs = paths.compact().map((path) => { |
| return { |
| label: capitalize(pluralize(path.itemName)), |
| routeParams: ['vault.cluster.access.method.item.list', path.itemType], |
| }; |
| }); |
| } else { |
| tabs = (TABS_FOR_SHOW[model.type] || []).slice(); |
| } |
| tabs.push({ |
| label: 'Configuration', |
| routeParams: ['vault.cluster.access.method.section', 'configuration'], |
| }); |
| |
| return tabs; |
| } |
| |
| export default buildHelper(tabsForAuthSection); |