open-consul/ui/packages/consul-ui/app/components/token-source/index.hbs

41 lines
1.4 KiB
Handlebars

<StateChart @src={{chart}} @initial={{if (eq type 'oidc') 'provider' 'secret'}} as |State Guard Action dispatch state|>
<Guard @name="isSecret" @cond={{action 'isSecret'}} />
{{!-- This `or` can be completely removed post 1.10 as 1.10 has optional params with default values --}}
{{#let (concat '/' (or partition '') '/' (or nspace '') '/' dc) as |path|}}
<State @matches="secret">
<DataSource
@src={{concat path '/token/self/' value}}
@onchange={{action 'change'}}
@onerror={{action onerror}}
/>
</State>
<State @matches="provider">
<DataSource
@src={{concat path '/oidc/provider/' value}}
@onchange={{queue (action (mut provider) value="data") (action dispatch "SUCCESS")}}
@onerror={{action onerror}}
/>
</State>
<State @matches="jwt">
<JwtSource
@src={{provider.AuthURL}}
@onchange={{queue (action (mut jwt) value="data") (action dispatch "SUCCESS")}}
@onerror={{action onerror}}
/>
</State>
<State @matches="token">
<DataSource
@src={{uri
(concat path '/oidc/authorize/${provider}/${code}/${state}')
(hash
provider=provider.Name
code=jwt.authorizationCode
state=(or jwt.authorizationState '')
)
}}
@onchange={{action 'change'}}
@onerror={{action onerror}}
/>
</State>
{{/let}}
</StateChart>