mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-18 21:21:06 +02:00
74 lines
1.9 KiB
JavaScript
74 lines
1.9 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import Component from '@glimmer/component';
|
|
import { inject as service } from '@ember/service';
|
|
import { tracked } from '@glimmer/tracking';
|
|
import { action } from '@ember/object';
|
|
import { task } from 'ember-concurrency';
|
|
import { waitFor } from '@ember/test-waiters';
|
|
import { add } from 'date-fns';
|
|
import errorMessage from 'vault/utils/error-message';
|
|
import timestamp from 'vault/utils/timestamp';
|
|
/**
|
|
* @module Credentials
|
|
* CredentialsPage component is a child component to show the generate and view
|
|
* credentials form.
|
|
*
|
|
* @param {string} roleName - role name as a string
|
|
* @param {string} backend - backend as a string
|
|
* @param {array} breadcrumbs - breadcrumbs as an array of objects that contain label and route
|
|
*/
|
|
export default class CredentialsPageComponent extends Component {
|
|
@service store;
|
|
@service router;
|
|
|
|
@tracked ttl = '';
|
|
@tracked clusterRoleBinding = false;
|
|
@tracked kubernetesNamespace;
|
|
@tracked error;
|
|
|
|
@tracked credentials;
|
|
|
|
get leaseExpiry() {
|
|
return add(timestamp.now(), { seconds: this.credentials.lease_duration });
|
|
}
|
|
|
|
@action
|
|
cancel() {
|
|
this.router.transitionTo('vault.cluster.secrets.backend.kubernetes.roles.role.details');
|
|
}
|
|
|
|
@action
|
|
setKubernetesNamespace({ target }) {
|
|
this.kubernetesNamespace = target.value;
|
|
}
|
|
|
|
@action
|
|
updateTtl({ goSafeTimeString }) {
|
|
this.ttl = goSafeTimeString;
|
|
}
|
|
|
|
@task
|
|
@waitFor
|
|
*fetchCredentials(event) {
|
|
event.preventDefault();
|
|
try {
|
|
const payload = {
|
|
role: this.args.roleName,
|
|
kubernetes_namespace: this.kubernetesNamespace,
|
|
cluster_role_binding: this.clusterRoleBinding,
|
|
ttl: this.ttl,
|
|
};
|
|
|
|
this.credentials = yield this.store
|
|
.adapterFor('kubernetes/role')
|
|
.generateCredentials(this.args.backend, payload);
|
|
} catch (error) {
|
|
this.error = errorMessage(error);
|
|
}
|
|
}
|
|
}
|