be632db682
* runs ember-cli-update to 4.4.0 * updates yarn.lock * updates dependencies causing runtime errors (#17135) * Inject Store Service When Accessed Implicitly (#17345) * adds codemod for injecting store service * adds custom babylon parser with decorators-legacy plugin for jscodeshift transforms * updates inject-store-service codemod to only look for .extend object expressions and adds recast options * runs inject-store-service codemod on js files * replace query-params helper with hash (#17404) * Updates/removes dependencies throwing errors in Ember 4.4 (#17396) * updates ember-responsive to latest * updates ember-composable-helpers to latest and uses includes helper since contains was removed * updates ember-concurrency to latest * updates ember-cli-clipboard to latest * temporary workaround for toolbar-link component throwing errors for using params arg with LinkTo * adds missing store injection to auth configure route * fixes issue with string-list component throwing error for accessing prop in same computation * fixes non-iterable query params issue in mfa methods controller * refactors field-to-attrs to handle belongsTo rather than fragments * converts mount-config fragment to belongsTo on auth-method model * removes ember-api-actions and adds tune method to auth-method adapter * converts cluster replication attributes from fragment to relationship * updates ember-data, removes ember-data-fragments and updates yarn to latest * removes fragments from secret-engine model * removes fragment from test-form-model * removes commented out code * minor change to inject-store-service codemod and runs again on js files * Remove LinkTo positional params (#17421) * updates ember-cli-page-object to latest version * update toolbar-link to support link-to args and not positional params * adds replace arg to toolbar-link component * Clean up js lint errors (#17426) * replaces assert.equal to assert.strictEqual * update eslint no-console to error and disables invididual intended uses of console * cleans up hbs lint warnings (#17432) * Upgrade bug and test fixes (#17500) * updates inject-service codemod to take arg for service name and runs for flashMessages service * fixes hbs lint error after merging main * fixes flash messages * updates more deps * bug fixes * test fixes * updates ember-cli-content-security-policy and prevents default form submission throwing errors * more bug and test fixes * removes commented out code * fixes issue with code-mirror modifier sending change event on setup causing same computation error * Upgrade Clean Up (#17543) * updates deprecation workflow and filter * cleans up build errors, removes unused ivy-codemirror and sass and updates ember-cli-sass and node-sass to latest * fixes control groups test that was skipped after upgrade * updates control group service tests * addresses review feedback * updates control group service handleError method to use router.currentURL rather that transition.intent.url * adds changelog entry
177 lines
6.4 KiB
Handlebars
177 lines
6.4 KiB
Handlebars
{{#if (or (eq this.policyType "acl") (has-feature "Sentinel"))}}
|
|
<PageHeader as |p|>
|
|
<p.levelLeft>
|
|
<h1 class="title is-3">
|
|
{{uppercase this.policyType}}
|
|
Policies
|
|
{{#if (not-eq this.policyType "acl")}}
|
|
<span class="tag" aria-label="Enforcement level: {{this.model.enforcementLevel}}">
|
|
Sentinel
|
|
</span>
|
|
{{/if}}
|
|
</h1>
|
|
</p.levelLeft>
|
|
</PageHeader>
|
|
<Toolbar>
|
|
{{#if this.model.meta.total}}
|
|
<ToolbarFilters>
|
|
<NavigateInput
|
|
filterFocusDidChange={{action "setFilterFocus"}}
|
|
@filterDidChange={{action "setFilter"}}
|
|
@filter={{this.filter}}
|
|
@filterMatchesKey={{this.filterMatchesKey}}
|
|
@firstPartialMatch={{this.firstPartialMatch}}
|
|
@extraNavParams={{this.policyType}}
|
|
@placeholder="Filter policies"
|
|
@mode="policy"
|
|
/>
|
|
{{#if this.filterFocused}}
|
|
{{#if this.filterMatchesKey}}
|
|
<p class="input-hint">
|
|
<kbd>ENTER</kbd>
|
|
to go to
|
|
<code>{{or this.pageFilter this.filter}}</code>
|
|
</p>
|
|
{{/if}}
|
|
{{#if this.firstPartialMatch}}
|
|
<p class="input-hint">
|
|
<kbd>TAB</kbd>
|
|
to complete
|
|
<code>{{this.firstPartialMatch.id}}</code>
|
|
</p>
|
|
{{/if}}
|
|
{{/if}}
|
|
</ToolbarFilters>
|
|
{{/if}}
|
|
<ToolbarActions>
|
|
<ToolbarLink @route="vault.cluster.policies.create" @type="add" data-test-policy-create-link>
|
|
Create
|
|
{{uppercase this.policyType}}
|
|
policy
|
|
</ToolbarLink>
|
|
</ToolbarActions>
|
|
</Toolbar>
|
|
{{#if this.model.meta.total}}
|
|
{{#each this.model as |item|}}
|
|
{{#if (eq item.id "root")}}
|
|
<div class="list-item-row is-flex" data-test-policy-item>
|
|
<Icon @name="file" class="has-text-grey-light" />
|
|
<div>
|
|
<span class="has-text-weight-semibold has-text-grey" data-test-policy-name>
|
|
{{item.id}}
|
|
</span>
|
|
<p class="help has-text-grey">
|
|
The
|
|
<code>root</code>
|
|
policy does not contain any rules but can do anything within Vault. It should be used with extreme care.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
{{else}}
|
|
<LinkedBlock
|
|
@params={{array "vault.cluster.policy.show" this.policyType item.id}}
|
|
class="list-item-row"
|
|
data-test-policy-link={{item.id}}
|
|
>
|
|
<div class="columns is-mobile">
|
|
<div class="column is-10">
|
|
<LinkTo
|
|
@route="vault.cluster.policy.show"
|
|
@models={{array this.policyType item.id}}
|
|
class="has-text-black has-text-weight-semibold"
|
|
data-test-policy-item={{true}}
|
|
>
|
|
<Icon @name="file" class="has-text-grey-light" />
|
|
<span class="is-underline" data-test-policy-name>{{item.id}}</span>
|
|
</LinkTo>
|
|
</div>
|
|
<div class="column has-text-right">
|
|
<PopupMenu name="policy-nav">
|
|
<Confirm as |c|>
|
|
<nav class="menu">
|
|
<ul class="menu-list">
|
|
{{#if item.updatePath.isPending}}
|
|
<li class="action">
|
|
<button disabled type="button" class="link button is-loading is-transparent">
|
|
loading
|
|
</button>
|
|
</li>
|
|
<li class="action">
|
|
<button disabled type="button" class="link button is-loading is-transparent">
|
|
loading
|
|
</button>
|
|
</li>
|
|
{{else}}
|
|
{{#if item.canRead}}
|
|
<li class="action">
|
|
<LinkTo
|
|
@route="vault.cluster.policy.show"
|
|
@models={{array this.policyType item.id}}
|
|
data-test-policy-link="show"
|
|
>
|
|
Details
|
|
</LinkTo>
|
|
</li>
|
|
{{/if}}
|
|
{{#if item.canEdit}}
|
|
<li class="action">
|
|
<LinkTo
|
|
@route="vault.cluster.policy.edit"
|
|
@models={{array this.policyType item.id}}
|
|
data-test-policy-link="edit"
|
|
>
|
|
Edit
|
|
</LinkTo>
|
|
</li>
|
|
{{/if}}
|
|
{{#if item.canDelete}}
|
|
<li class="action">
|
|
<c.Message
|
|
@id={{item.id}}
|
|
@confirmMessage="This will permanently delete this policy and may affect access to some data"
|
|
@onConfirm={{action "deletePolicy" item}}
|
|
data-test-policy-delete={{item.id}}
|
|
/>
|
|
</li>
|
|
{{/if}}
|
|
{{/if}}
|
|
</ul>
|
|
</nav>
|
|
</Confirm>
|
|
</PopupMenu>
|
|
</div>
|
|
</div>
|
|
</LinkedBlock>
|
|
{{/if}}
|
|
{{else}}
|
|
<EmptyState @title="No policies matching "{{this.pageFilter}}"" />
|
|
{{/each}}
|
|
{{#if (gt this.model.meta.lastPage 1)}}
|
|
<ListPagination
|
|
@page={{this.model.meta.currentPage}}
|
|
@lastPage={{this.model.meta.lastPage}}
|
|
@link="vault.cluster.policies.index"
|
|
/>
|
|
{{/if}}
|
|
{{else}}
|
|
<EmptyState
|
|
@title="No {{uppercase this.policyType}} policies yet"
|
|
@message="A list of policies will be listed here. Create your first {{uppercase
|
|
this.policyType
|
|
}} policy to get started."
|
|
>
|
|
<LinkTo @route="vault.cluster.policies.create" class="link">
|
|
Create
|
|
{{uppercase this.policyType}}
|
|
policy
|
|
<Chevron />
|
|
</LinkTo>
|
|
<LearnLink @path="/vault/getting-started/policies">
|
|
Learn more
|
|
<Chevron />
|
|
</LearnLink>
|
|
</EmptyState>
|
|
{{/if}}
|
|
{{else}}
|
|
<UpgradePage @title="Sentinel" @minimumEdition="Vault Enterprise Premium" />
|
|
{{/if}} |