mirror of
https://github.com/hashicorp/vault.git
synced 2025-12-26 20:01:12 +01:00
* Update page headers for database components * Update generate forms and license info * Mount backend form page headers.. * Raft page headers * Update role-aws-edit page header * Tools, role-ssh, mount-backend-form and fix tests * OIDC, TOTP and userpass page headers and tsts * odic, keymgmt, and dashboard * Fix dashboard title tests * Fix breadcrumbs * MFA, idenitity, and generated item * Fix mfa enforcement page header tests * Move tabs out of page header Co-authored-by: Kianna <30884335+kiannaquach@users.noreply.github.com>
101 lines
2.6 KiB
JavaScript
101 lines
2.6 KiB
JavaScript
/**
|
|
* Copyright IBM Corp. 2016, 2025
|
|
* SPDX-License-Identifier: BUSL-1.1
|
|
*/
|
|
|
|
import Component from '@glimmer/component';
|
|
import { tracked } from '@glimmer/tracking';
|
|
import { action } from '@ember/object';
|
|
import { service } from '@ember/service';
|
|
import errorMessage from 'vault/utils/error-message';
|
|
|
|
/**
|
|
* @module TransformTemplateEdit
|
|
* `TransformTemplateEdit` is a component that allows you to create/edit or view a transform template.
|
|
*
|
|
* @example
|
|
* ```js
|
|
* <TransformTemplateEdit }} />
|
|
* ```
|
|
* @param {object} model - This is the transform template model.
|
|
* @param {string} mode - Is either show, create or edit.
|
|
*/
|
|
|
|
export default class TransformTemplateEditComponent extends Component {
|
|
@service flashMessages;
|
|
@service router;
|
|
|
|
@tracked errorMessage = '';
|
|
|
|
get breadcrumbs() {
|
|
// ideally this is created on the controller in the parent route but this is a generic route and adding breadcrumbs to the controller requires a larger refactor.
|
|
const { backend } = this.args.model;
|
|
return [
|
|
{
|
|
label: backend,
|
|
route: 'vault.cluster.secrets.backend.list-root',
|
|
model: backend,
|
|
query: { tab: 'template' },
|
|
},
|
|
{ label: 'Template' },
|
|
];
|
|
}
|
|
|
|
get title() {
|
|
if (this.args.mode === 'create') {
|
|
return 'Create Template';
|
|
} else if (this.args.mode === 'edit') {
|
|
return 'Edit Template';
|
|
} else {
|
|
return 'Template';
|
|
}
|
|
}
|
|
|
|
get subtitle() {
|
|
if (this.args.mode === 'create' || this.args.mode === 'edit') return '';
|
|
|
|
return this.args?.model?.id;
|
|
}
|
|
|
|
transition(route = 'show') {
|
|
this.errorMessage = '';
|
|
const { backend, id } = this.args.model;
|
|
if (route === 'list') {
|
|
this.router.transitionTo('vault.cluster.secrets.backend.list-root', backend, {
|
|
queryParams: { tab: 'template' },
|
|
});
|
|
return;
|
|
} else {
|
|
this.router.transitionTo('vault.cluster.secrets.backend.show', `template/${id}`);
|
|
}
|
|
}
|
|
|
|
@action async createOrUpdate(event) {
|
|
event.preventDefault();
|
|
|
|
if (!this.args.model.hasDirtyAttributes) {
|
|
this.flashMessages.info('No changes detected.');
|
|
this.transition();
|
|
return;
|
|
}
|
|
|
|
try {
|
|
await this.args.model.save();
|
|
this.flashMessages.success('Transform template saved.');
|
|
this.transition();
|
|
} catch (e) {
|
|
this.errorMessage = errorMessage(e);
|
|
}
|
|
}
|
|
|
|
@action async onDelete() {
|
|
try {
|
|
await this.args.model.destroyRecord();
|
|
this.flashMessages.success('Transform template deleted.');
|
|
this.transition('list');
|
|
} catch (e) {
|
|
this.errorMessage = errorMessage(e);
|
|
}
|
|
}
|
|
}
|