From 06bec24b00abc27550f7abb416ae062cdfe3652d Mon Sep 17 00:00:00 2001 From: claire bontempo <68122737+hellobontempo@users.noreply.github.com> Date: Fri, 3 Feb 2023 13:07:59 -0800 Subject: [PATCH] UI: add issuerRef getter in case issuer is nameless (#18968) * add issuerRef getter in case issuer is nameless * declare as getter * remove changes to test, oops! --- ui/app/adapters/pki/action.js | 4 ++-- ui/app/models/pki/issuer.js | 4 ++++ ui/lib/pki/addon/components/pki-issuer-cross-sign.hbs | 2 +- ui/lib/pki/addon/components/pki-issuer-cross-sign.js | 4 ++-- ui/lib/pki/addon/templates/issuers/index.hbs | 2 +- ui/lib/pki/addon/templates/issuers/issuer/cross-sign.hbs | 2 +- ui/tests/unit/serializers/pki/action-test.js | 2 +- ui/types/vault/models/pki/issuer.d.ts | 3 ++- 8 files changed, 14 insertions(+), 9 deletions(-) diff --git a/ui/app/adapters/pki/action.js b/ui/app/adapters/pki/action.js index 2cb22a502f..d54ef4341f 100644 --- a/ui/app/adapters/pki/action.js +++ b/ui/app/adapters/pki/action.js @@ -7,7 +7,7 @@ export default class PkiActionAdapter extends ApplicationAdapter { urlForCreateRecord(modelName, snapshot) { const { type } = snapshot.record; - const { actionType, useIssuer, issuerName, mount } = snapshot.adapterOptions; + const { actionType, useIssuer, issuerRef, mount } = snapshot.adapterOptions; // if the backend mount is passed, we want that to override the URL's mount path const backend = mount || snapshot.record.backend; if (!backend || !actionType) { @@ -24,7 +24,7 @@ export default class PkiActionAdapter extends ApplicationAdapter { ? `${baseUrl}/issuers/generate/intermediate/${type}` : `${baseUrl}/intermediate/generate/${type}`; case 'sign-intermediate': - return `${baseUrl}/issuer/${encodePath(issuerName)}/sign-intermediate`; + return `${baseUrl}/issuer/${encodePath(issuerRef)}/sign-intermediate`; default: assert('actionType must be one of import, generate-root, generate-csr or sign-intermediate'); } diff --git a/ui/app/models/pki/issuer.js b/ui/app/models/pki/issuer.js index 9fe49c19d7..90e1bf072f 100644 --- a/ui/app/models/pki/issuer.js +++ b/ui/app/models/pki/issuer.js @@ -31,6 +31,10 @@ export default class PkiIssuerModel extends PkiCertificateBaseModel { return false; } + get issuerRef() { + return this.issuerName || this.issuerId; + } + @attr isDefault; // readonly @attr('string') issuerId; diff --git a/ui/lib/pki/addon/components/pki-issuer-cross-sign.hbs b/ui/lib/pki/addon/components/pki-issuer-cross-sign.hbs index 7bf19bd97f..1b8893c955 100644 --- a/ui/lib/pki/addon/components/pki-issuer-cross-sign.hbs +++ b/ui/lib/pki/addon/components/pki-issuer-cross-sign.hbs @@ -50,7 +50,7 @@ @route="externalMountIssuer" @models={{array (get crossSignRow "intermediateMount") data.issuerId}} > - {{data.issuerName}} + {{data.issuerRef}} {{/if}} diff --git a/ui/lib/pki/addon/components/pki-issuer-cross-sign.js b/ui/lib/pki/addon/components/pki-issuer-cross-sign.js index 43f0ef984c..c36517b39f 100644 --- a/ui/lib/pki/addon/components/pki-issuer-cross-sign.js +++ b/ui/lib/pki/addon/components/pki-issuer-cross-sign.js @@ -21,7 +21,7 @@ import { parseCertificate } from 'vault/utils/parse-pki-cert'; * 2. Create a new CSR based on this existing issuer ID * -> POST /:intermediateMount/intermediate/generate/existing * 3. Sign it with the new parent issuer, minting a new certificate. - * -> POST /this.args.parentIssuer.backend/issuer/this.args.parentIssuer.issuerName/sign-intermediate + * -> POST /this.args.parentIssuer.backend/issuer/this.args.parentIssuer.issuerRef/sign-intermediate * 4. Import it back into the existing mount * -> POST /:intermediateMount/issuers/import/bundle * 5. Read the imported issuer @@ -145,7 +145,7 @@ export default class PkiIssuerCrossSign extends Component { adapterOptions: { actionType: 'sign-intermediate', mount: this.args.parentIssuer.backend, - issuerName: this.args.parentIssuer.issuerName, + issuerRef: this.args.parentIssuer.issuerRef, }, }) .then(({ caChain }) => caChain.join('\n')); diff --git a/ui/lib/pki/addon/templates/issuers/index.hbs b/ui/lib/pki/addon/templates/issuers/index.hbs index c342116fa4..4eb0b6627c 100644 --- a/ui/lib/pki/addon/templates/issuers/index.hbs +++ b/ui/lib/pki/addon/templates/issuers/index.hbs @@ -49,7 +49,7 @@
- {{or pkiIssuer.issuerName pkiIssuer.id}} + {{pkiIssuer.issuerRef}}
{{#if pkiIssuer.isDefault}} diff --git a/ui/lib/pki/addon/templates/issuers/issuer/cross-sign.hbs b/ui/lib/pki/addon/templates/issuers/issuer/cross-sign.hbs index 5862aa7f0b..5b753afc76 100644 --- a/ui/lib/pki/addon/templates/issuers/issuer/cross-sign.hbs +++ b/ui/lib/pki/addon/templates/issuers/issuer/cross-sign.hbs @@ -21,7 +21,7 @@
  1. You identify which intermediates need to be cross-signed.
  2. The new CSR for your intermediate(s) will be generated.
  3. -
  4. The CSR is signed with the root {{this.model.issuerName}}.
  5. +
  6. The CSR is signed with the root {{this.model.issuerRef}}.
  7. Your new intermediate(s) are imported into any existing mount(s).
Then, you can begin re-issuing leaf certs and phase out the old root. diff --git a/ui/tests/unit/serializers/pki/action-test.js b/ui/tests/unit/serializers/pki/action-test.js index b7206d990f..d142c2fda0 100644 --- a/ui/tests/unit/serializers/pki/action-test.js +++ b/ui/tests/unit/serializers/pki/action-test.js @@ -22,7 +22,7 @@ module('Unit | Serializer | pki/action', function (hooks) { const store = this.owner.lookup('service:store'); const record = store.createRecord('pki/action', { pemBundle: this.pemBundle, - issuerName: 'do-not-send', + issuerRef: 'do-not-send', keyType: 'do-not-send', }); const expectedResult = { diff --git a/ui/types/vault/models/pki/issuer.d.ts b/ui/types/vault/models/pki/issuer.d.ts index 7316d9789c..9580ac0125 100644 --- a/ui/types/vault/models/pki/issuer.d.ts +++ b/ui/types/vault/models/pki/issuer.d.ts @@ -3,9 +3,10 @@ import { FormField, FormFieldGroups, ModelValidations } from 'vault/app-types'; export default class PkiIssuerModel extends PkiCertificateBaseModel { useOpenAPI(): boolean; issuerId: string; + issuerName: string; + issuerRef(): string; keyId: string; uriSans: string; - issuerName: string; leafNotAfterBehavior: string; usage: string; manualChain: string;