mirror of https://github.com/hashicorp/consul
123 lines
3.3 KiB
Handlebars
123 lines
3.3 KiB
Handlebars
<Route
|
|
@name={{routeName}}
|
|
as |route|>
|
|
<DataLoader @src={{
|
|
uri '/${partition}/${nspace}/${dc}/policy/${id}'
|
|
(hash
|
|
partition=route.params.partition
|
|
nspace=route.params.nspace
|
|
dc=route.params.dc
|
|
id=(or route.params.id '')
|
|
)
|
|
}}
|
|
as |loader|>
|
|
|
|
<BlockSlot @name="error">
|
|
{{#if (eq loader.error.status '401')}}
|
|
<Consul::Acl::Disabled />
|
|
{{else}}
|
|
<AppError
|
|
@error={{loader.error}}
|
|
@login={{route.model.app.login.open}}
|
|
/>
|
|
{{/if}}
|
|
</BlockSlot>
|
|
|
|
<BlockSlot @name="loaded">
|
|
{{#let
|
|
|
|
route.params.dc
|
|
route.params.partition
|
|
route.params.nspace
|
|
|
|
loader.data
|
|
loader.data.isNew
|
|
|
|
as |dc partition nspace item create|}}
|
|
<AppView
|
|
@login={{route.model.app.login.open}}
|
|
>
|
|
<BlockSlot @name="notification" as |status type item error|>
|
|
<Consul::Policy::Notifications
|
|
@type={{type}}
|
|
@status={{status}}
|
|
@item={{item}}
|
|
@error={{error}}
|
|
/>
|
|
</BlockSlot>
|
|
<BlockSlot @name="breadcrumbs">
|
|
<ol>
|
|
<li><a data-test-back href={{href-to 'dc.acls.policies'}}>All Policies</a></li>
|
|
</ol>
|
|
</BlockSlot>
|
|
<BlockSlot @name="header">
|
|
<h1>
|
|
{{#if create }}
|
|
<route.Title @title="New Policy" />
|
|
{{else}}
|
|
{{#if (can "write policy" item=item)}}
|
|
<route.Title @title="Edit Policy" />
|
|
{{else}}
|
|
<route.Title @title="View Policy" />
|
|
{{/if}}
|
|
{{/if}}
|
|
</h1>
|
|
</BlockSlot>
|
|
<BlockSlot @name="content">
|
|
{{#if (not create) }}
|
|
<div class="definition-table">
|
|
<dl>
|
|
<dt>Policy ID</dt>
|
|
<dd>
|
|
<CopyButton @value={{item.ID}} @name="Policy ID" @position="top-start" /> {{item.ID}}
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
{{/if}}
|
|
{{#if (eq (policy/typeof item) 'policy-management')}}
|
|
<Notice
|
|
class="policy-management"
|
|
@type="none"
|
|
as |notice|>
|
|
<notice.Header>
|
|
<h3>Management</h3>
|
|
</notice.Header>
|
|
<notice.Body>
|
|
<p>
|
|
This global-management token is built into Consul's policy system. You can apply this special policy to tokens for full access. This policy is not editable or removeable, but can be ignored by not applying it to any tokens. Learn more in our <a href="{{env 'CONSUL_DOCS_URL'}}/guides/acl.html#builtin-policies" target="_blank" rel="noopener noreferrer">documentation</a>.
|
|
</p>
|
|
</notice.Body>
|
|
</Notice>
|
|
<div class="definition-table">
|
|
<dl>
|
|
<dt>Name</dt>
|
|
<dd>{{item.Name}}</dd>
|
|
<dt>Valid Datacenters</dt>
|
|
<dd>{{ join ', ' (policy/datacenters item)}}</dd>
|
|
<dt>Description</dt>
|
|
<dd>{{item.Description}}</dd>
|
|
</dl>
|
|
</div>
|
|
<DataSource
|
|
@src={{uri '/${partition}/${nspace}/${dc}/tokens/for-policy/${id}'
|
|
(hash
|
|
partition=partition
|
|
nspace=nspace
|
|
dc=dc
|
|
id=(or id '')
|
|
)
|
|
}}
|
|
as |loader|>
|
|
{{#if (gt loader.data.length 0)}}
|
|
<TokenList @caption="Applied to the following tokens:" @items={{loader.data}} />
|
|
{{/if}}
|
|
</DataSource>
|
|
{{else}}
|
|
{{ partial 'dc/acls/policies/form'}}
|
|
{{/if}}
|
|
</BlockSlot>
|
|
</AppView>
|
|
{{/let}}
|
|
</BlockSlot>
|
|
</DataLoader>
|
|
</Route> |