Files
threshold-ui/ui/admin/app/components/form/auth-method/oidc/index.hbs
T

428 lines
13 KiB
Handlebars

{{!
Copyright IBM Corp. 2021, 2026
SPDX-License-Identifier: BUSL-1.1
}}
<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}}
@isRequired={{true}}
@isInvalid={{@model.errors.client_id}}
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}}
@isRequired={{true}}
@isInvalid={{@model.errors.client_secret}}
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::KeyValue
@name='signing_algorithms'
@data={{@model.signing_algorithms}}
@onAdd={{fn this.addRow 'signing_algorithms' this.createEmptyValue}}
@onRemove={{fn this.removeRow 'signing_algorithms' this.createEmptyValue}}
@onUpdate={{fn this.updateRow 'signing_algorithms'}}
@legend={{t 'form.signing_algorithms.label'}}
@helperText={{t 'form.signing_algorithms.help'}}
@errors={{@model.errors.signing_algorithms}}
@disabled={{form.disabled}}
@isOptional={{true}}
>
<:row as |R|>
<R.Field as |F|>
<F.Select
data-test-value-input
{{on 'change' (fn R.updateRow 'value')}}
>
<option disabled hidden selected value=''>
{{t 'titles.choose-an-option'}}
</option>
{{#each this.signingAlgorithms as |algorithm|}}
<option
value={{algorithm}}
selected={{eq R.rowData.value algorithm}}
>
{{algorithm}}
</option>
{{/each}}
</F.Select>
</R.Field>
{{#if R.canDelete}}
<R.DeleteRowButton data-test-delete-button @onClick={{R.removeRow}} />
{{/if}}
</:row>
</Form::Field::KeyValue>
{{! Allowed audiences }}
<Form::Field::KeyValue
@name='allowed_audiences'
@data={{@model.allowed_audiences}}
@onAdd={{fn this.addRow 'allowed_audiences' this.createEmptyValue}}
@onRemove={{fn this.removeRow 'allowed_audiences' this.createEmptyValue}}
@onUpdate={{fn this.updateRow 'allowed_audiences'}}
@legend={{t 'form.allowed_audiences.label'}}
@helperText={{t 'form.allowed_audiences.help'}}
@errors={{@model.errors.allowed_audiences}}
@disabled={{form.disabled}}
@isOptional={{true}}
>
<:row as |R|>
<R.Field as |F|>
<F.TextInput
data-test-value-input
@value={{R.rowData.value}}
{{on 'input' (fn R.updateRow 'value')}}
/>
</R.Field>
{{#if R.canDelete}}
<R.DeleteRowButton data-test-delete-button @onClick={{R.removeRow}} />
{{/if}}
</:row>
</Form::Field::KeyValue>
{{! Claims Scopes }}
<Form::Field::KeyValue
@name='claims_scopes'
@data={{@model.claims_scopes}}
@onAdd={{fn this.addRow 'claims_scopes' this.createEmptyValue}}
@onRemove={{fn this.removeRow 'claims_scopes' this.createEmptyValue}}
@onUpdate={{fn this.updateRow 'claims_scopes'}}
@legend={{t 'form.claims_scopes.label'}}
@helperText={{t 'form.claims_scopes.help'}}
@errors={{@model.errors.claims_scopes}}
@disabled={{form.disabled}}
@isOptional={{true}}
>
<:row as |R|>
<R.Field as |F|>
<F.TextInput
data-test-value-input
@value={{R.rowData.value}}
{{on 'input' (fn R.updateRow 'value')}}
/>
</R.Field>
{{#if R.canDelete}}
<R.DeleteRowButton data-test-delete-button @onClick={{R.removeRow}} />
{{/if}}
</:row>
</Form::Field::KeyValue>
{{! Account Claim Maps }}
<Form::Field::KeyValue
@name='account_claim_maps'
@data={{@model.account_claim_maps}}
@onAdd={{fn this.addRow 'account_claim_maps' this.createEmptyKeyValue}}
@onRemove={{fn
this.removeRow
'account_claim_maps'
this.createEmptyKeyValue
}}
@onUpdate={{fn this.updateRow 'account_claim_maps'}}
@legend={{t 'form.account_claim_maps.label'}}
@helperText={{t 'form.account_claim_maps.help'}}
@errors={{@model.errors.account_claim_maps}}
@disabled={{form.disabled}}
@isOptional={{true}}
>
<:row as |R|>
<R.Field as |F|>
<F.Label>{{t 'form.from_claim.label'}}</F.Label>
<F.TextInput
data-test-key-input
@value={{R.rowData.key}}
{{on 'input' (fn R.updateRow 'key')}}
/>
</R.Field>
<R.Field as |F|>
<F.Label>{{t 'form.to_claim.label'}}</F.Label>
<F.Select
data-test-value-input
{{on 'change' (fn R.updateRow 'value')}}
>
<option disabled hidden selected value=''>
{{t 'titles.choose-an-option'}}
</option>
{{#each this.toClaims as |claim|}}
<option value={{claim}} selected={{eq R.rowData.value claim}}>
{{claim}}
</option>
{{/each}}
</F.Select>
</R.Field>
{{#if R.canDelete}}
<R.DeleteRowButton data-test-delete-button @onClick={{R.removeRow}} />
{{/if}}
</:row>
</Form::Field::KeyValue>
{{! Certificates }}
<Form::Field::KeyValue
@name='idp_ca_certs'
@data={{@model.idp_ca_certs}}
@onAdd={{fn this.addRow 'idp_ca_certs' this.createEmptyValue}}
@onRemove={{fn this.removeRow 'idp_ca_certs' this.createEmptyValue}}
@onUpdate={{fn this.updateRow 'idp_ca_certs'}}
@legend={{t 'form.idp_ca_certs.label'}}
@helperText={{t 'form.idp_ca_certs.help'}}
@errors={{@model.errors.idp_ca_certs}}
@disabled={{form.disabled}}
@isOptional={{true}}
>
<:row as |R|>
<R.Field as |F|>
<F.Textarea
data-test-value-input
@value={{R.rowData.value}}
{{on 'input' (fn R.updateRow 'value')}}
/>
</R.Field>
{{#if R.canDelete}}
<R.DeleteRowButton data-test-delete-button @onClick={{R.removeRow}} />
{{/if}}
</:row>
</Form::Field::KeyValue>
<Hds::Form::TextInput::Field
name='max_age'
@value={{@model.max_age}}
@isOptional={{true}}
@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}}
@isRequired={{true}}
@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.CheckboxField
@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.CheckboxField>
{{/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>