mirror of
https://github.com/hashicorp/vault.git
synced 2025-12-08 11:01:47 +01:00
* [UI] Ember Data Migration - Secrets Engine Resource (#30791) * adds base factory for resources and secrets engine resource * updates dashboard and secret-engine list route to fetch mounts from api service * updates secret backends routes to use api service * updates secrets engine config routes to use api service * updates secrets backend route to use internal mounts endpoint and fixes error handling * updates property casing in config details card component * fixes dashboard tests * fixes issues with engine configuration * updates api service to only set token header if value is defined in auth service * fixes more tests * Update ui/app/routes/vault/cluster/secrets/backend/configuration/index.js Co-authored-by: Angel Garbarino <Monkeychip@users.noreply.github.com> * removes alwaysRender from publicKey field in secret engine configuration details component * removes unused hideToggle arg from secret engine mount config template * updates kv config route to load secret-engine model * fixes kv config route --------- Co-authored-by: Angel Garbarino <Monkeychip@users.noreply.github.com> * [UI] Ember Data Migration - Secrets Engine Forms (#30951) * adds secrets engine form class * updates mount-secret-backend route and form component to use secrets engine form class and api service * updates to form class proxy for nested form data properties * adds form classes for configurable secrets engines * updates secrets engine config edit route and components to use form classes and api service * adds missing copyright header * fixes tests * fixes type error * updates configure-ssh component to use form class and api service * updates configure-ssh tests * updates configuration-wif component tests * fixes mount secret backend and form tests * adds method to normalize request key casing to api service * addresses pr review feedback * removes unused secrets engine config models, adapters and serializers (#30980) * fixes azure config tests * fixes more ent tests --------- Co-authored-by: Angel Garbarino <Monkeychip@users.noreply.github.com>
78 lines
2.2 KiB
TypeScript
78 lines
2.2 KiB
TypeScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: BUSL-1.1
|
|
*/
|
|
|
|
import { baseResourceFactory } from 'vault/resources/base-factory';
|
|
import { isAddonEngine, allEngines } from 'vault/helpers/mountable-secret-engines';
|
|
import { supportedSecretBackends } from 'vault/helpers/supported-secret-backends';
|
|
|
|
import type { SecretsEngine } from 'vault/secrets/engine';
|
|
|
|
export default class SecretsEngineResource extends baseResourceFactory<SecretsEngine>() {
|
|
id: string;
|
|
|
|
#LIST_EXCLUDED_BACKENDS = ['system', 'identity'];
|
|
|
|
constructor(data: SecretsEngine) {
|
|
super(data);
|
|
// strip trailing slash from path for id since it is used in routing
|
|
this.id = data.path.replace(/\/$/, '');
|
|
}
|
|
|
|
get version() {
|
|
const { version } = this.options || {};
|
|
return version ? Number(version) : 1;
|
|
}
|
|
|
|
get engineType() {
|
|
return (this.type || '').replace(/^ns_/, '');
|
|
}
|
|
|
|
get icon() {
|
|
const engineData = allEngines().find((engine) => engine.type === this.engineType);
|
|
|
|
return engineData?.glyph || 'lock';
|
|
}
|
|
|
|
get isV2KV() {
|
|
return this.version === 2 && (this.engineType === 'kv' || this.engineType === 'generic');
|
|
}
|
|
|
|
get shouldIncludeInList() {
|
|
return !this.#LIST_EXCLUDED_BACKENDS.includes(this.engineType);
|
|
}
|
|
|
|
get isSupportedBackend() {
|
|
return supportedSecretBackends().includes(this.engineType);
|
|
}
|
|
|
|
get backendLink() {
|
|
if (this.engineType === 'database') {
|
|
return 'vault.cluster.secrets.backend.overview';
|
|
}
|
|
if (isAddonEngine(this.engineType, this.version)) {
|
|
const engine = allEngines().find((engine) => engine.type === this.engineType);
|
|
if (engine?.engineRoute) {
|
|
return `vault.cluster.secrets.backend.${engine.engineRoute}`;
|
|
}
|
|
}
|
|
if (this.isV2KV) {
|
|
// if it's KV v2 but not registered as an addon, it's type generic
|
|
return 'vault.cluster.secrets.backend.kv.list';
|
|
}
|
|
return `vault.cluster.secrets.backend.list-root`;
|
|
}
|
|
|
|
get backendConfigurationLink() {
|
|
if (isAddonEngine(this.engineType, this.version)) {
|
|
return `vault.cluster.secrets.backend.${this.engineType}.configuration`;
|
|
}
|
|
return `vault.cluster.secrets.backend.configuration`;
|
|
}
|
|
|
|
get localDisplay() {
|
|
return this.local ? 'local' : 'replicated';
|
|
}
|
|
}
|