2023-01-23 19:36:34 +00:00
<form {{ on "submit" ( perform this .save ) }} data-test-pki-config-generate-root-form>
2023-01-18 18:20:44 +00:00
<MessageError @errorMessage= {{ this .errorBanner }} class="has-top-margin-s" />
<h2 class="title is-size-5 has-border-bottom-light page-header" data-test-generate-root-title="Root parameters">
Root parameters
</h2>
{{ # each this .defaultFields as | field | }}
{{ # let ( find-by "name" field @ model .allFields ) as | attr | }}
<FormField
@attr= {{ attr }}
@model= {{ @ model }}
@modelValidations= {{ this .modelValidations }}
@onChange= {{ this .checkFormValidity }}
data-test-field
>
{{ # if ( eq field "customTtl" ) }}
{{! customTtl attr has editType yield, which will render this }}
<PkiNotValidAfterForm @attr= {{ attr }} @model= {{ @ model }} />
{{ / if }}
</FormField>
{{ / let }}
{{ / each }}
{{! togglable groups }}
{{ # each - in this .groups as | group fields | }}
<ToggleButton
@isOpen= {{ eq this .showGroup group }}
@openLabel= {{ concat "Hide " group }}
@closedLabel= {{ group }}
@onClick= {{ fn this .toggleGroup group }}
class="is-block"
data-test-toggle-group= {{ group }}
/>
{{ # if ( eq this .showGroup group ) }}
<div class="box is-marginless" data-test-group= {{ group }} >
{{ # if ( eq group "Key parameters" ) }}
<p class="has-bottom-margin-m" data-test-toggle-group-description>
{{ # if ( eq @ model .type "internal" ) }}
This certificate type is internal. This means that the private key will not be returned and cannot be retrieved
later. Below, you will name the key and define its type and key bits.
{{ else if ( eq @ model .type "kms" ) }}
This certificate type is kms, meaning managed keys will be used. Below, you will name the key and tell Vault
where to find it in your KMS or HSM.
<DocLink @path="/vault/docs/enterprise/managed-keys">Learn more about managed keys.</DocLink>
{{ else if ( eq @ model .type "exported" ) }}
This certificate type is exported. This means the private key will be returned in the response. Below, you will
name the key and define its type and key bits.
{{ else if ( eq @ model .type "existing" ) }}
You chose to use an existing key. This means that we’ ll use the key reference to create the CSR or root. Please
provide the reference to the key.
{{ else }}
Please choose a type to see key parameter options.
{{ / if }}
</p>
{{ # if this .keyParamFields }}
<PkiKeyParameters @model= {{ @ model }} @fields= {{ this .keyParamFields }} />
{{ / if }}
{{ else }}
<p class="has-bottom-margin-m" data-test-toggle-group-description>
{{ # if ( eq group "Subject Alternative Name (SAN) Options" ) }}
SAN fields are an extension that allow you specify additional host names (sites, IP addresses, common names,
etc.) to be protected by a single certificate.
{{ else if ( eq group "Additional subject fields" ) }}
These fields provide more information about the client to which the certificate belongs.
{{ / if }}
</p>
{{ # each fields as | fieldName | }}
{{ # let ( find-by "name" fieldName @ model .allFields ) as | attr | }}
<FormField data-test-field @attr= {{ attr }} @mode="create" @model= {{ @ model }} />
{{ / let }}
{{ / each }}
{{ / if }}
</div>
{{ / if }}
{{ / each - in }}
2023-01-23 19:36:34 +00:00
{{ # if @ urls }}
<fieldset class="box is-shadowless is-marginless is-borderless is-fullwidth" data-test-urls-section>
<h2
class="title is-size-5 page-header {{ if @ urls .canCreate 'has-border-bottom-light' 'is-borderless' }} "
data-test-generate-root-title="Issuer URLs"
>
Issuer URLs
</h2>
{{ # if @ urls .canSet }}
{{ # each @ urls .allFields as | attr | }}
{{ # if ( not ( eq attr .name "mountPath" ) ) }}
<FormField
@attr= {{ attr }}
@mode="create"
@model= {{ @ urls }}
@showHelpText= {{ attr .options .showHelpText }}
data-test-urls-field
/>
{{ / if }}
{{ / each }}
{{ else }}
<EmptyState
@title="You do not have permissions to set URLs."
@message="These are not required but will need to be configured later. You can do this via the CLI or by changing your permissions and returning to this form."
/>
{{ / if }}
</fieldset>
{{ / if }}
2023-01-18 18:20:44 +00:00
<div class="field is-grouped box is-fullwidth is-bottomless">
<div class="control">
<button type="submit" class="button is-primary" data-test-pki-generate-root-save>
Done
</button>
<button {{ on "click" this .cancel }} type="button" class="button has-left-margin-s" data-test-pki-generate-root-cancel>
Cancel
</button>
</div>
{{ # if this .invalidFormAlert }}
<div class="control">
<AlertInline
@type="danger"
@paddingTop= {{ true }}
@message= {{ this .invalidFormAlert }}
@mimicRefresh= {{ true }}
data-test-pki-generate-root-validation-error
/>
</div>
{{ / if }}
</div>
</form>