2021-04-06 12:40:40 +00:00
<Route
@name= {{ routeName }}
as |route|>
2021-09-15 18:50:11 +00:00
<DataLoader
@src= {{
uri '/$ { partition}/$ { nspace}/$ { dc}/tokens'
(hash
partition=route.params.partition
nspace=route.params.nspace
dc=route.params.dc
)}}
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">
2021-04-06 12:40:40 +00:00
{{ # let
2020-07-29 13:41:40 +00:00
2021-04-06 12:40:40 +00:00
(hash
value=(or sortBy "CreateTime:desc")
change=(action (mut sortBy) value="target.selected")
2021-01-25 18:13:54 +00:00
)
2021-04-06 12:40:40 +00:00
(hash
kind=(hash
value=(if kind (split kind ',') undefined)
change=(action (mut kind) value="target.selectedItems")
)
searchproperty=(hash
value=(if (not-eq searchproperty undefined)
(split searchproperty ',')
searchProperties
)
change=(action (mut searchproperty) value="target.selectedItems")
default=searchProperties
2021-01-25 18:13:54 +00:00
)
)
2020-09-01 18:13:11 +00:00
2021-09-15 18:50:11 +00:00
loader.data
2021-01-25 18:13:54 +00:00
2021-04-06 12:40:40 +00:00
as |sort filters items|}}
2021-01-25 18:13:54 +00:00
2021-04-06 12:40:40 +00:00
<AppView
@login= {{ route .model .app .login .open }}
>
<BlockSlot @name="header">
<h1>
2021-09-15 18:50:11 +00:00
<route.Title @title="Tokens" />
2021-04-06 12:40:40 +00:00
</h1>
</BlockSlot>
<BlockSlot @name="actions">
{{ # if ( can "create tokens" ) }}
2023-02-22 21:05:15 +00:00
<Hds::Button
@text='Create'
@route='dc.acls.tokens.create'
data-test-create
/>
2021-04-06 12:40:40 +00:00
{{ / if }}
</BlockSlot>
<BlockSlot @name="toolbar">
{{ # if ( gt items .length 0 ) }}
<Consul::Token::SearchBar
@search= {{ search }}
@onsearch= {{ action ( mut search ) value = "target.value" }}
2021-01-25 18:13:54 +00:00
2021-04-06 12:40:40 +00:00
@sort= {{ sort }}
2020-09-01 18:13:11 +00:00
2021-04-06 12:40:40 +00:00
@filter= {{ filters }}
/>
{{ / if }}
</BlockSlot>
<BlockSlot @name="content">
{{ # if ( token / is-legacy items ) }}
2023-02-25 04:07:12 +00:00
<Hds::Alert @type='inline' class='mb-3 mt-3' as |A|>
<A.Title>Update</A.Title>
<A.Description data-test-notification-update>We have upgraded our ACL System to allow the creation of reusable policies that can be applied to tokens. Read more about the changes and how to upgrade legacy tokens.</A.Description>
<A.Link::Standalone @text='Learn more'
@href=" {{ env 'CONSUL_DOCS_URL' }} /guides/acl-migrate-tokens.html"
@icon='docs-link'
@iconPosition='trailing' />
</Hds::Alert>
2021-04-06 12:40:40 +00:00
{{ / if }}
<DataCollection
@type="token"
@sort= {{ sort .value }}
@filters= {{ filters }}
@search= {{ search }}
@items= {{ items }}
as |collection|>
<collection.Collection>
<Consul::Token::List
@items= {{ collection .items }}
2021-09-15 18:50:11 +00:00
@token= {{ route .model .user .token }}
2021-04-06 12:40:40 +00:00
@onuse= {{ route-action 'use' }}
@ondelete= {{ route-action 'delete' }}
@onlogout= {{ route-action 'logout' }}
@onclone= {{ route-action 'clone' }}
/>
</collection.Collection>
<collection.Empty>
<EmptyState
@login= {{ route .model .app .login .open }}
>
<BlockSlot @name="header">
<h2>
2022-04-11 11:49:59 +00:00
{{ t 'routes.dc.acls.tokens.index.empty.header'
items=items.length
}}
2021-04-06 12:40:40 +00:00
</h2>
</BlockSlot>
<BlockSlot @name="body">
2022-04-11 11:49:59 +00:00
{{ t 'routes.dc.acls.tokens.index.empty.body'
items=items.length
htmlSafe=true
}}
2021-04-06 12:40:40 +00:00
</BlockSlot>
</EmptyState>
</collection.Empty>
</DataCollection>
</BlockSlot>
</AppView>
{{ / let }}
2021-09-15 18:50:11 +00:00
</BlockSlot>
</DataLoader>
2021-04-06 12:40:40 +00:00
</Route>