mirror of https://github.com/hashicorp/consul
130 lines
4.0 KiB
Handlebars
130 lines
4.0 KiB
Handlebars
{{!
|
|
Copyright (c) HashiCorp, Inc.
|
|
SPDX-License-Identifier: BUSL-1.1
|
|
}}
|
|
|
|
<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
|
|
(or route.params.id '')
|
|
|
|
loader.data
|
|
loader.data.isNew
|
|
|
|
as |dc partition nspace id item create|}}
|
|
<AppView
|
|
@login={{route.model.app.login.open}}
|
|
>
|
|
<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>
|
|
<CopyableCode
|
|
@value={{item.ID}}
|
|
@name="Policy ID"
|
|
/>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
{{/if}}
|
|
{{#if (or (eq (policy/typeof item) 'policy-management') (eq (policy/typeof item) 'read-only'))}}
|
|
{{#if (eq (policy/typeof item) 'policy-management')}}
|
|
<Hds::Alert @type="inline" @icon="star-fill" class="mb-3 mt-2" as |A|>
|
|
<A.Title>Management</A.Title>
|
|
<A.Description>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.</A.Description>
|
|
<A.Link::Standalone @text='Learn more'
|
|
@href="{{env 'CONSUL_DOCS_URL'}}/guides/acl.html#builtin-policies"
|
|
@icon='docs-link'
|
|
@iconPosition='trailing' />
|
|
</Hds::Alert>
|
|
{{else}}
|
|
<Hds::Alert @type="inline" @icon="star-fill" class="mb-3 mt-2" as |A|>
|
|
<A.Title>Built-in policy</A.Title>
|
|
<A.Description>This global-read-only policy is built into Consul's policy system. You can apply this special policy to tokens for read-only access to all Consul components. This policy is not editable or removable, but can be ignored by not applying it to any tokens.</A.Description>
|
|
<A.Link::Standalone @text='Learn more'
|
|
@href="{{env 'CONSUL_DOCS_URL'}}/guides/acl.html#builtin-policies"
|
|
@icon='docs-link'
|
|
@iconPosition='trailing' />
|
|
</Hds::Alert>
|
|
{{/if}}
|
|
<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=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> |