-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ui] ACL Roles in the UI, plus Role, Policy and Token management (#17770
) (#18599) * Rename pages to include roles * Models and adapters * [ui] Any policy checks in the UI now check for roles' policies as well as token policies (#18346) * combinedPolicies as a concept * Classic decorator on role adapter * We added a new request for roles, so the test based on a specific order of requests got fickle fast * Mirage roles cluster scaffolded * Acceptance test for roles and policies on the login page * Update mirage mock for nodes fetch to account for role policies / empty token.policies * Roles-derived policies checks * [ui] Access Control with Roles and Tokens (#18413) * top level policies routes moved into access control * A few more routes and name cleanup * Delog and test fixes to account for new url prefix and document titles * Overview page * Tokens and Roles routes * Tokens helios table * Add a role * Hacky role page and deletion * New policy keyboard shortcut and roles breadcrumb nav * If you leave New Role but havent made any changes, remove the newly-created record from store * Roles index list and general role route crud * Roles index actually links to roles now * Helios button styles for new roles and policies * Handle when you try to create a new role without having any policies * Token editing generally * Create Token functionality * Cant delete self-token but management token editing and deleting is fine * Upgrading helios caused codemirror to explode, shimmed * Policies table fix * without bang-element condition, modifier would refire over and over * Token TTL or Time setting * time will take you on * Mirage hooks for create and list roles * Ensure policy names only use allow characters in mirage mocks * Mirage mocked roles and policies in the default cluster * log and lintfix * chromedriver to 2.1.2 * unused unit tests removed * Nice profile dropdown * With the HDS accordion, rename our internal component scss ref * design revisions after discussion * Tooltip on deleted-policy tokens * Two-step button peripheral isDeleting gcode removed * Never to null on token save * copywrite headers added and empty routefiles removed * acceptance test fixes for policies endpoint * Route for updating a token * Policies testfixes * Ember on-click-outside modifier upgraded with general ember-modifier upgrade * Test adjustments to account for new profile header dropdown * Test adjustments for tokens via policy pages * Removed an unused route * Access Control index page tests * a11y tests * Tokens index acceptance tests generally * Lintfix * Token edit page tests * Token editing tests * New token expiration tests * Roles Index tests * Role editing policies tests * A complete set of Access Control Roles tests * Policies test * Be more specific about which row to check for expiration time * Nil check on expirationTime equality * Management tokens shouldnt show No Roles/Policies, give them their own designation * Route guard on selftoken, conditional columns, and afterModel at parent to prevent orphaned policies on tokens/roles from stopping a new save * Policy unloading on delete and other todos plus autofocus conditionally re-enabled * Invalid policies non-links now a concept for Roles index * HDS style links to make job.variables.alert links look like links again * Mirage finding looks weird so making model async in hash even though redundant * Drop rsvp * RSVP wasnt the problem, cached lookups were * remove old todo comments * de-log
- Loading branch information
1 parent
6877591
commit 183decc
Showing
78 changed files
with
4,076 additions
and
454 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
```release-note:improvement | ||
ui: observe a token's roles' rules in the UI and add an interface for managing tokens, roles, and policies | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
/** | ||
* Copyright (c) HashiCorp, Inc. | ||
* SPDX-License-Identifier: BUSL-1.1 | ||
*/ | ||
|
||
import AbstractAbility from './abstract'; | ||
import { alias } from '@ember/object/computed'; | ||
import classic from 'ember-classic-decorator'; | ||
|
||
@classic | ||
export default class Role extends AbstractAbility { | ||
@alias('selfTokenIsManagement') canRead; | ||
@alias('selfTokenIsManagement') canList; | ||
@alias('selfTokenIsManagement') canWrite; | ||
@alias('selfTokenIsManagement') canUpdate; | ||
@alias('selfTokenIsManagement') canDestroy; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
/** | ||
* Copyright (c) HashiCorp, Inc. | ||
* SPDX-License-Identifier: MPL-2.0 | ||
*/ | ||
|
||
// @ts-check | ||
import { default as ApplicationAdapter, namespace } from './application'; | ||
import classic from 'ember-classic-decorator'; | ||
import { singularize } from 'ember-inflector'; | ||
@classic | ||
export default class RoleAdapter extends ApplicationAdapter { | ||
namespace = namespace + '/acl'; | ||
|
||
urlForCreateRecord(modelName) { | ||
let baseUrl = this.buildURL(modelName); | ||
return singularize(baseUrl); | ||
} | ||
|
||
urlForDeleteRecord(id) { | ||
return this.urlForUpdateRecord(id, 'role'); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
/** | ||
* Copyright (c) HashiCorp, Inc. | ||
* SPDX-License-Identifier: BUSL-1.1 | ||
*/ | ||
|
||
import Component from '@ember/component'; | ||
import { tagName } from '@ember-decorators/component'; | ||
import { inject as service } from '@ember/service'; | ||
|
||
@tagName('') | ||
export default class AccessControlSubnav extends Component { | ||
@service keyboard; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
{{! | ||
Copyright (c) HashiCorp, Inc. | ||
SPDX-License-Identifier: BUSL-1.1 | ||
~}} | ||
|
||
<form class="acl-form" autocomplete="off" {{on "submit" this.save}}> | ||
<label> | ||
<span> | ||
Role Name | ||
</span> | ||
<Input | ||
data-test-role-name-input | ||
@type="text" | ||
@value={{@role.name}} | ||
class="input" | ||
{{autofocus ignore=(not @role.isNew)}} | ||
/> | ||
</label> | ||
|
||
<div> | ||
<label> | ||
<span> | ||
Description (optional) | ||
</span> | ||
<Input | ||
data-test-role-description-input | ||
@value={{@role.description}} | ||
class="input" | ||
/> | ||
</label> | ||
</div> | ||
|
||
<div> | ||
<label> | ||
Policies | ||
</label> | ||
<Hds::Table @caption="A list of policies available to this role" class="acl-table" | ||
@model={{@policies}} | ||
@columns={{array | ||
(hash key="selected" width="80px") | ||
(hash key="name" label="Name" isSortable=true) | ||
(hash key="description" label="Description") | ||
(hash key="definition" label="View Policy Definition") | ||
}} | ||
@sortBy="name" | ||
data-test-role-policies | ||
> | ||
<:body as |B|> | ||
<B.Tr> | ||
<B.Td class="selection-checkbox"> | ||
<label> | ||
<input type="checkbox" | ||
checked={{find-by "name" B.data.name @role.policies}} | ||
{{on "change" (action this.updateRolePolicies B.data)}} | ||
/> | ||
</label> | ||
</B.Td> | ||
<B.Td data-test-policy-name>{{B.data.name}}</B.Td> | ||
<B.Td>{{B.data.description}}</B.Td> | ||
<B.Td> | ||
<LinkTo @route="access-control.policies.policy" @model={{B.data.name}}> | ||
View Policy Definition | ||
</LinkTo> | ||
</B.Td> | ||
</B.Tr> | ||
</:body> | ||
</Hds::Table> | ||
</div> | ||
|
||
<footer> | ||
{{#if (can "update role")}} | ||
<Hds::Button @text="Save Role" @color="primary" | ||
{{on "click" this.save}} | ||
data-test-save-role | ||
/> | ||
{{/if}} | ||
</footer> | ||
</form> |
Oops, something went wrong.