open-vault/ui/app/templates/components/control-group.hbs
Matthew Irish 21af204683
UI namespaces (#5119)
* add namespace sidebar item

* depend on ember-inflector directly

* list-view and list-item components

* fill out components and render empty namespaces page

* list namespaces in access

* add menu contextual component to list item

* popup contextual component

* full crud for namespaces

* add namespaces service and picker component

* split application and vault.cluster templates and controllers, add namespace query param, add namespace-picker to vault.namespace template

* remove usage of href-to

* remove ember-href-to from deps

* add ember-responsive

* start styling the picker and link to appropriate namespaces, use ember-responsive to render picker in different places based on the breakpoint

* get query param working and save ns to authdata when authenticating, feed through ns in application adapter

* move to observer on the controller for setting state on the service

* set state in the beforeModel hook and clear the ember data model cache

* nav to secrets on change and make error handling more resilient utilizing the method that atlas does to eagerly update URLs

* add a list of sys endpoints in a helper

* hide header elements if not in the root namespace

* debounce namespace input on auth, fix 404 for auth method fetch, move auth method fetch to a task on the auth-form component and refretch on namespace change

* fix display of supported engines and exclusion of sys and identity engines

* don't fetch replication status if you're in a non-root namespace

* hide seal sub-menu if not in the root namespace

* don't autocomplete auth form inputs

* always send some requests to the root namespace

* use methodType and engineType instead of type in case there it is ns_ prefixed

* use sys/internal/ui/namespaces to fetch the list in the dropdown

* don't use model for namespace picker and always make the request to the token namespace

* fix header handling for fetch calls

* use namespace-reminder component on creation and edit forms throughout the application

* add namespace-reminder to the console

* add flat

* add deepmerge for creating the tree in the menu

* delayed rendering for animation timing

* design and code feedback on the first round

* white text in the namespace picker

* fix namespace picker issues with root keys

* separate path-to-tree

* add tests for path-to-tree util

* hide picker if you're in the root ns and you can't access other namespaces

* show error message if you enter invalid characters for namespace path

* return a different model if we dont have the namespaces feature and show upgrade page

* if a token has a namespace_path, use that as the root user namespace and transition them there on login

* use token namespace for user, but use specified namespace to log in

* always renew tokens in the token namespace

* fix edition-badge test
2018-08-16 12:48:24 -05:00

102 lines
4 KiB
Handlebars
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="box is-fullwidth is-bottomless is-sideless">
<MessageError @model={{model}} />
<div class="control-group-header {{if isSuccess 'is-success'}}">
<p>
<ICon @glyph={{if isSuccess "checkmark-circled" "control-lock"}} @size={{16}} />
<strong data-test-banner-prefix>{{bannerPrefix}}</strong>
<span data-test-banner-text>{{bannerText}}</span>
</p>
</div>
{{#if (and model.approved (not currentUserHasAuthorized) (or (not model.requestEntity) currentUserIsRequesting))}}
<ControlGroupSuccess data-test-control-group-success @model={{model}} @controlGroupResponse={{controlGroupResponse}} />
{{else}}
<div class="control-group">
<div data-test-requestor-text>
{{#if model.requestEntity.canRead}}
{{#link-to 'vault.cluster.access.identity.show' 'entities' model.requestEntity.id 'details'}}
{{requestorName}}
{{/link-to}}
{{else}}
{{requestorName}}
{{/if}}
{{#if currentUserIsRequesting}}are{{else}}is{{/if}}
{{#if model.approved}}
authorized to access <code>{{model.requestPath}}</code>
{{else}}
requesting access to <code>{{model.requestPath}}</code>
{{/if}}
</div>
{{#if (or (not model.requestEntity) currentUserIsRequesting)}}
<div class="message is-list is-highlight has-copy-button" tabindex="-1" data-test-accessor-callout>
<HoverCopyButton @alwaysShow=true @copyValue={{model.id}} />
<div class="message-body">
<h4 class="title is-7 is-marginless">
Accessor
</h4>
<code class="is-word-break" data-test-accessor-value>{{model.id}}</code>
</div>
</div>
{{/if}}
<div class="authorizations" data-test-authorizations>
{{#if (gt model.authorizations.length 0)}}
<span class="has-text-success">
<ICon @glyph="checkmark-circled-outline" @size={{16}} />
</span>
Already approved by
{{#each model.authorizations as |authorization index|}}
{{~#if authorization.canRead~}}
{{#link-to 'vault.cluster.access.identity.show' 'entities' authorization.id 'details'}}{{authorization.name}}{{/link-to}}
{{~else~}}
{{authorization.name}}
{{~/if~}}{{#if (lt (inc index) model.authorizations.length)}},{{/if}}
{{/each}}
{{else}}
<span class="has-text-grey">
<ICon @glyph="checkmark-circled-outline" @size={{16}} />
</span>
Awaiting authorization.
{{/if}}
</div>
</div>
{{/if}}
{{#if controlGroupResponse.token}}
<p class="control-group-token-text" data-test-token>
Weve saved your request token, but you may want to copy it just in case:
<span class="tag has-font-monospaced" data-test-token-value>{{controlGroupResponse.token}}</span>
<HoverCopyButton @alwaysShow=true @copyValue={{controlGroupResponse.token}} />
</p>
{{/if}}
{{#unless (and model.approved (or (not model.requestEntity) currentUserIsRequesting))}}
<div class="field is-grouped box is-fullwidth is-bottomless">
{{#if model.canAuthorize}}
{{#if (or model.approved currentUserHasAuthorized)}}
{{#link-to 'vault.cluster.access.control-groups'class="button" data-test-back-link=true}}
<ICon @glyph="chevron-left" @size=10 /> Back
{{/link-to}}
{{else}}
<button
type="button"
class="button is-primary {{if authorize.isRunning 'is-loading'}}"
{{action (perform authorize)}}
data-test-authorize-button
>
Authorize
</button>
{{/if}}
{{else}}
<button
type="button"
class="button is-primary {{if refresh.isRunning 'is-loading'}}"
{{action (perform refresh)}}
data-test-refresh-button
>
Refresh
</button>
{{/if}}
</div>
{{/unless}}
</div>