87 lines
2.3 KiB
JavaScript
87 lines
2.3 KiB
JavaScript
import { helper as buildHelper } from '@ember/component/helper';
|
|
import { capitalize } from '@ember/string';
|
|
import { assign } from '@ember/polyfills';
|
|
|
|
const DEFAULT_DISPLAY = {
|
|
searchPlaceholder: 'Filter secrets',
|
|
item: 'secret',
|
|
create: 'Create secret',
|
|
navigateTree: true,
|
|
editComponent: 'secret-edit',
|
|
listItemPartial: 'partials/secret-list/item',
|
|
};
|
|
const SECRET_BACKENDS = {
|
|
aws: {
|
|
displayName: 'AWS',
|
|
searchPlaceholder: 'Filter roles',
|
|
item: 'role',
|
|
create: 'Create role',
|
|
navigateTree: false,
|
|
editComponent: 'role-aws-edit',
|
|
listItemPartial: 'partials/secret-list/aws-role-item',
|
|
},
|
|
pki: {
|
|
displayName: 'PKI',
|
|
navigateTree: false,
|
|
listItemPartial: 'partials/secret-list/pki-role-item',
|
|
tabs: [
|
|
{
|
|
name: 'roles',
|
|
label: 'Roles',
|
|
searchPlaceholder: 'Filter roles',
|
|
item: 'role',
|
|
create: 'Create role',
|
|
editComponent: 'role-pki-edit',
|
|
},
|
|
{
|
|
name: 'certs',
|
|
modelPrefix: 'cert/',
|
|
label: 'Certificates',
|
|
searchPlaceholder: 'Filter certificates',
|
|
item: 'certificates',
|
|
create: 'Create role',
|
|
tab: 'certs',
|
|
listItemPartial: 'partials/secret-list/pki-cert-item',
|
|
editComponent: 'pki-cert-show',
|
|
},
|
|
],
|
|
},
|
|
ssh: {
|
|
displayName: 'SSH',
|
|
searchPlaceholder: 'Filter roles',
|
|
item: 'role',
|
|
create: 'Create role',
|
|
navigateTree: false,
|
|
editComponent: 'role-ssh-edit',
|
|
listItemPartial: 'partials/secret-list/ssh-role-item',
|
|
},
|
|
transit: {
|
|
searchPlaceholder: 'Filter keys',
|
|
item: 'key',
|
|
create: 'Create encryption key',
|
|
navigateTree: false,
|
|
editComponent: 'transit-edit',
|
|
listItemPartial: 'partials/secret-list/item',
|
|
},
|
|
};
|
|
|
|
export function optionsForBackend([backend, tab]) {
|
|
const selected = SECRET_BACKENDS[backend];
|
|
let backendOptions;
|
|
|
|
if (selected && selected.tabs) {
|
|
let tabData =
|
|
selected.tabs.findBy('name', tab) || selected.tabs.findBy('modelPrefix', tab) || selected.tabs[0];
|
|
backendOptions = assign({}, selected, tabData);
|
|
} else if (selected) {
|
|
backendOptions = selected;
|
|
} else {
|
|
backendOptions = assign({}, DEFAULT_DISPLAY, {
|
|
displayName: backend === 'kv' ? 'KV' : capitalize(backend),
|
|
});
|
|
}
|
|
return backendOptions;
|
|
}
|
|
|
|
export default buildHelper(optionsForBackend);
|