Files
threshold-ui/ui/admin/app/components/form/auth-method/oidc/index.hbs
T
Devon Anderson 8e40b01caf refactor: 💡 Quick fix for client_secret attributes (#2157)
`client_secret` attribute needed to be `@type` instead of `type`
2024-02-22 14:52:31 -05:00

520 lines
15 KiB
Handlebars

{{!
Copyright (c) HashiCorp, Inc.
SPDX-License-Identifier: MPL-2.0
}}
<Rose::Form
@edit={{@edit}}
@onSubmit={{@submit}}
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@showEditToggle={{if @model.isNew false true}}
as |form|
>
<InfoField @value={{@model.type}} disabled={{form.disabled}} as |F|>
<F.Label>{{t 'form.type.label'}}</F.Label>
</InfoField>
<Hds::Form::TextInput::Field
name='name'
@value={{@model.name}}
@isInvalid={{@model.errors.name}}
@isOptional={{true}}
disabled={{form.disabled}}
{{on 'input' (set-from-event @model 'name')}}
as |F|
>
<F.Label>{{t 'form.name.label'}}</F.Label>
<F.HelperText>{{t 'form.name.help'}}</F.HelperText>
{{#if @model.errors.name}}
<F.Error as |E|>
{{#each @model.errors.name as |error|}}
<E.Message data-test-error-message-name>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
<Hds::Form::Textarea::Field
name='description'
@value={{@model.description}}
@isInvalid={{@model.errors.description}}
@isOptional={{true}}
disabled={{form.disabled}}
as |F|
>
<F.Label>{{t 'form.description.label'}}</F.Label>
<F.HelperText>{{t 'form.description.help'}}</F.HelperText>
{{#if @model.errors.description}}
<F.Error as |E|>
{{#each @model.errors.description as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::Textarea::Field>
<Hds::Form::TextInput::Field
@value={{@model.issuer}}
@isInvalid={{@model.errors.issuer}}
@isOptional={{true}}
disabled={{form.disabled}}
name='issuer'
{{on 'input' (set-from-event @model 'issuer')}}
as |F|
>
<F.Label>{{t 'form.issuer.label'}}</F.Label>
<F.HelperText>{{t 'form.issuer.help'}}</F.HelperText>
{{#if @model.errors.issuer}}
<F.Error as |E|>
{{#each @model.errors.issuer as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
<Hds::Form::Checkbox::Field
name='disable_discovered_config_validation'
checked={{@model.disable_discovered_config_validation}}
disabled={{form.disabled}}
{{on
'change'
(fn
(mut @model.disable_discovered_config_validation)
(if @model.disable_discovered_config_validation false true)
)
}}
as |F|
>
<F.Label>{{t 'form.disable_discovered_config_validation.label'}}</F.Label>
<F.HelperText>
{{t 'form.disable_discovered_config_validation.help'}}
</F.HelperText>
</Hds::Form::Checkbox::Field>
<Hds::Form::TextInput::Field
name='client_id'
@value={{@model.client_id}}
@isInvalid={{@model.errors.client_id}}
@isOptional={{true}}
disabled={{form.disabled}}
{{on 'input' (set-from-event @model 'client_id')}}
as |F|
>
<F.Label>{{t 'form.client_id.label'}}</F.Label>
<F.HelperText>{{t 'form.client_id.help'}}</F.HelperText>
{{#if @model.errors.client_id}}
<F.Error as |E|>
{{#each @model.errors.client_id as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
<Hds::Form::TextInput::Field
name='client_secret'
@value={{@model.client_secret}}
@isInvalid={{@model.errors.client_secret}}
@isOptional={{true}}
disabled={{form.disabled}}
@hasVisibilityToggle={{false}}
@type='password'
{{on 'input' (set-from-event @model 'client_secret')}}
as |F|
>
<F.Label>{{t 'form.client_secret.label'}}</F.Label>
<F.HelperText>{{t 'form.client_secret.help'}}</F.HelperText>
{{#if @model.errors.client_secret}}
<F.Error as |E|>
{{#each @model.errors.client_secret as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
{{#unless @model.isNew}}
<Hds::Form::TextInput::Field
@value={{@model.client_secret_hmac}}
disabled={{true}}
as |F|
>
<F.Label>{{t 'form.client_secret_hmac.label'}}</F.Label>
</Hds::Form::TextInput::Field>
{{/unless}}
{{! Signing Algorithms }}
<Form::Field::ListWrapper @layout='horizontal' @disabled={{form.disabled}}>
<:fieldset as |F|>
<F.Legend>
{{t 'form.signing_algorithms.label'}}
</F.Legend>
<F.HelperText>
{{t 'form.signing_algorithms.help'}}
</F.HelperText>
{{#if @model.errors.signing_algorithms}}
<F.Error as |E|>
{{#each @model.errors.signing_algorithms as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</:fieldset>
<:field as |F|>
<F.Select
@name='signing_algorithms'
@model={{@model}}
@selectOptions={{this.signingAlgorithms}}
@width='100%'
/>
</:field>
</Form::Field::ListWrapper>
{{! Allowed Audiences }}
<Form::Field::ListWrapper
@layout='horizontal'
@isOptional={{true}}
@disabled={{form.disabled}}
>
<:fieldset as |F|>
<F.Legend>
{{t 'form.allowed_audiences.label'}}
</F.Legend>
<F.HelperText>
{{t 'form.allowed_audiences.help'}}
</F.HelperText>
{{#if @model.errors.allowed_audiences}}
<F.Error as |E|>
{{#each @model.errors.allowed_audiences as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</:fieldset>
<:field as |F|>
<F.TextInput
@name='allowed_audiences'
@options={{@model.allowed_audiences}}
@model={{@model}}
/>
</:field>
</Form::Field::ListWrapper>
{{! Claims Scopes }}
<Form::Field::ListWrapper
@layout='horizontal'
@isOptional={{true}}
@disabled={{form.disabled}}
>
<:fieldset as |F|>
<F.Legend>
{{t 'form.claims_scopes.label'}}
</F.Legend>
<F.HelperText>
{{t 'form.claims_scopes.help'}}
</F.HelperText>
{{#if @model.errors.claims_scopes}}
<F.Error as |E|>
{{#each @model.errors.claims_scopes as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</:fieldset>
<:field as |F|>
<F.TextInput
@name='claims_scopes'
@options={{@model.claims_scopes}}
@model={{@model}}
/>
</:field>
</Form::Field::ListWrapper>
{{! Account Claim Maps }}
<Rose::Form::Fieldset>
<:title>{{t 'form.account_claim_maps.label'}}</:title>
<:description>{{t 'form.account_claim_maps.help'}}</:description>
<:body>
{{#if @model.errors.account_claim_maps}}
<Rose::Form::Errors as |errors|>
{{#each @model.errors.account_claim_maps as |error|}}
<errors.message>{{error.message}}</errors.message>
{{/each}}
</Rose::Form::Errors>
{{/if}}
<Rose::Table @style='condensed' as |table|>
<table.header as |header|>
<header.row as |row|>
<row.headerCell>{{t 'form.from_claim.label'}}</row.headerCell>
<row.headerCell>{{t 'form.to_claim.label'}}</row.headerCell>
<row.headerCell>{{t 'titles.actions'}}</row.headerCell>
</header.row>
</table.header>
<table.body as |body|>
{{#each @model.account_claim_maps as |claimMap i|}}
<body.row as |row|>
<row.cell>
<form.input
@type='text'
@name='from_claim'
@value={{claimMap.from}}
@error={{@model.errors.account_claim_maps}}
@contextual={{true}}
as |field|
>
<field.label>{{t 'form.from_claim.label'}}</field.label>
<field.field />
</form.input>
</row.cell>
<row.cell>
<Hds::Form::Select::Field
@value={{claimMap.to}}
@isInvalid={{@model.errors.account_claim_maps}}
disabled={{form.disabled}}
{{on 'change' (set-from-event claimMap 'to')}}
as |F|
>
<F.Label class='sr-only'>{{t 'form.to_claim.label'}}</F.Label>
<F.Options>
{{#each this.toClaims as |toClaimOption|}}
<option
value={{toClaimOption}}
selected={{eq toClaimOption claimMap.to}}
>{{toClaimOption}}</option>
{{/each}}
</F.Options>
</Hds::Form::Select::Field>
</row.cell>
<row.cell @shrink={{true}}>
<Rose::Button
@style='warning'
@iconOnly='flight-icons/svg/trash-16'
title={{t 'actions.remove'}}
@disabled={{if
@model.isNew
false
(if form.isEditable false true)
}}
{{on 'click' (fn @removeItemByIndex 'account_claim_maps' i)}}
>
{{t 'actions.remove'}}
</Rose::Button>
</row.cell>
</body.row>
{{/each}}
<body.row as |row|>
<row.cell>
<form.input
@type='text'
@name='from_claim'
@value={{this.newFromClaim}}
@label={{t 'resources.auth-method.titles.new-from-claim'}}
/>
</row.cell>
<row.cell>
<Hds::Form::Select::Field
@value={{this.newToClaim}}
disabled={{form.disabled}}
{{on 'change' (set-from-event this 'newToClaim')}}
as |F|
>
<F.Label class='sr-only'>{{t
'resources.auth-method.titles.new-to-claim'
}}</F.Label>
<F.Options>
{{#each this.toClaims as |toClaimOption|}}
<option
value={{toClaimOption}}
selected={{eq toClaimOption this.newToClaim}}
>{{toClaimOption}}</option>
{{/each}}
</F.Options>
</Hds::Form::Select::Field>
</row.cell>
<row.cell @shrink={{true}}>
<Rose::Button
@style='secondary'
title={{t 'actions.add'}}
@disabled={{if
@model.isNew
false
(if form.isEditable false true)
}}
{{on
'click'
(fn
@addAccountMapItem
'account_claim_maps'
this.newFromClaim
this.newToClaim
)
}}
>
{{t 'actions.add'}}
</Rose::Button>
</row.cell>
</body.row>
</table.body>
</Rose::Table>
</:body>
</Rose::Form::Fieldset>
{{! Certificates }}
<Form::Field::ListWrapper
@layout='horizontal'
@isOptional={{true}}
@disabled={{form.disabled}}
>
<:fieldset as |F|>
<F.Legend>
{{t 'form.idp_ca_certs.label'}}
</F.Legend>
<F.HelperText>
{{t 'form.idp_ca_certs.help'}}
</F.HelperText>
{{#if @model.errors.idp_ca_certs}}
<F.Error as |E|>
{{#each @model.errors.idp_ca_certs as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</:fieldset>
<:field as |F|>
<F.Textarea
@name='idp_ca_certs'
@options={{@model.idp_ca_certs}}
@model={{@model}}
/>
</:field>
</Form::Field::ListWrapper>
<Hds::Form::TextInput::Field
name='max_age'
@value={{@model.max_age}}
@isInvalid={{@model.errors.max_age}}
disabled={{form.disabled}}
{{on 'input' (set-from-event @model 'max_age')}}
as |F|
>
<F.Label>{{t 'form.max_age.label'}}</F.Label>
<F.HelperText>{{t 'form.max_age.help'}}</F.HelperText>
{{#if @model.errors.max_age}}
<F.Error as |E|>
{{#each @model.errors.max_age as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
<Hds::Form::TextInput::Field
name='api_url_prefix'
@value={{@model.api_url_prefix}}
@isInvalid={{@model.errors.api_url_prefix}}
disabled={{form.disabled}}
{{on 'input' (set-from-event @model 'api_url_prefix')}}
as |F|
>
<F.Label>{{t 'form.api_url_prefix.label'}}</F.Label>
<F.HelperText>{{t 'form.api_url_prefix.help'}}</F.HelperText>
{{#if @model.errors.api_url_prefix}}
<F.Error as |E|>
{{#each @model.errors.api_url_prefix as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
<Hds::Form::Fieldset @isOptional={{true}} as |F|>
<F.Legend>{{t 'form.prompts.label'}}</F.Legend>
<F.HelperText>{{t 'form.prompts.help'}}</F.HelperText>
<F.Control>
<Hds::Form::Toggle::Field
name='prompts'
checked={{this.skipPromptsList}}
disabled={{form.disabled}}
{{on 'change' (fn this.toggleField 'none')}}
as |F|
>
<F.Label>
{{t 'resources.auth-method.form.none.label'}}
</F.Label>
<F.HelperText>
{{t 'resources.auth-method.form.none.help'}}
</F.HelperText>
</Hds::Form::Toggle::Field>
{{#unless this.skipPromptsList}}
<Hds::Form::Checkbox::Group
class='oidc-prompts'
@name='prompts'
disabled={{form.disabled}}
as |G|
>
{{#each this.prompts as |prompt|}}
<G.Checkbox::Field
@id={{prompt}}
checked={{includes prompt this.selectedPrompts}}
{{on 'change' (fn this.updatePrompt prompt)}}
as |F|
>
<F.Label>
{{t (concat 'resources.auth-method.form.' prompt '.label')}}
</F.Label>
<F.HelperText>
{{t (concat 'resources.auth-method.form.' prompt '.help')}}
</F.HelperText>
</G.Checkbox::Field>
{{/each}}
</Hds::Form::Checkbox::Group>
{{/unless}}
</F.Control>
{{#if @model.errors.prompts}}
<F.Error as |E|>
{{#each @model.errors.prompts as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::Fieldset>
{{#unless @model.isNew}}
<Hds::Form::TextInput::Field
@value={{@model.callback_url}}
disabled={{true}}
as |F|
>
<F.Label>{{t 'form.callback_url.label'}}</F.Label>
<F.HelperText>{{t 'form.callback_url.help'}}</F.HelperText>
</Hds::Form::TextInput::Field>
{{/unless}}
{{#if (can 'save model' @model)}}
<form.actions
@enableEditText={{t 'actions.edit-form'}}
@submitText={{t 'actions.save'}}
@cancelText={{t 'actions.cancel'}}
/>
{{/if}}
</Rose::Form>