Merge branch 'develop' into feature-enable-form-edit-mode

This commit is contained in:
Randall Morey authored and GitHub committed 2020-09-27 13:30:47 -04:00
commit 0722d5f5f5
81 files changed
+389 -280

No files matched your search

@@ -9,7 +9,7 @@
>
<form.actions
@submitText={{t "actions.add-members"}}
@submitText={{t "resources.group.actions.add-members"}}
@cancelText={{t "actions.cancel"}} />
<Rose::Table as |table|>
@@ -43,9 +43,9 @@
{{#unless this.hasAvailableHosts}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.no-host-set-hosts"}} as |message|>
<Rose::Message @title={{t "resources.host-set.host.messages.add.title"}} as |message|>
<message.description>
{{t "descriptions.no-host-set-hosts"}}
{{t "resources.host-set.host.messages.add.description"}}
</message.description>
<message.link @route="scopes.scope.projects.project.host-catalogs.host-catalog.host-sets.host-set.hosts">
<Rose::Icon @name="chevron-left" />
@@ -8,7 +8,7 @@
>
<form.input
@value={{t (concat 'host-set.types.' @model.type)}}
@value={{t (concat 'resources.host-set.types.' @model.type)}}
@label={{t "form.type.label"}}
readonly={{true}}
@disabled={{true}} />
+1 -1
View File
@@ -8,7 +8,7 @@
>
<form.input
@value={{t (concat 'host.types.' @model.type)}}
@value={{t (concat 'resources.host.types.' @model.type)}}
@label={{t "form.type.label"}}
readonly={{true}}
@disabled={{true}} />
@@ -31,7 +31,7 @@
</row.cell>
<row.cell>{{principal.name}}</row.cell>
<row.cell>
<Rose::Badge>{{t (concat 'resources.' principal.constructor.modelName)}}</Rose::Badge>
<Rose::Badge>{{t (concat 'resources.role.principal.types.' principal.constructor.modelName)}}</Rose::Badge>
</row.cell>
</body.row>
{{/each}}
@@ -43,9 +43,9 @@
{{#unless this.hasAvailablePrincipals}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.no-principals-available"}} as |message|>
<Rose::Message @title={{t "resources.role.principal.messages.none.title"}} as |message|>
<message.description>
{{t "descriptions.no-principals-available"}}
{{t "resources.role.principal.messages.none.description"}}
</message.description>
<message.link @route="scopes.scope.roles.role.principals">
<Rose::Icon @name="chevron-left" />
@@ -14,7 +14,7 @@
@value={{this.newGrantString}}
as |input|>
<item.key>
<input.label>{{t "titles.new-grant"}}</input.label>
<input.label>{{t "resources.role.grant.actions.create"}}</input.label>
</item.key>
<item.cell>
<input.field title={{t "form.grant.help"}} />
@@ -1,44 +1,60 @@
<Rose::Form
class="full-width"
@onSubmit={{fn this.submit @submit}}
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@error={{@model.errors.base}}
as |form|
>
{{#if this.hasAvailableHostSets}}
<Rose::Form
class="full-width"
@onSubmit={{fn this.submit @submit}}
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@error={{@model.errors.base}}
as |form|
>
<form.actions
@submitText={{t "actions.add-host-sets"}}
@cancelText={{t "actions.cancel"}} />
<form.actions
@submitText={{t "actions.add-host-sets"}}
@cancelText={{t "actions.cancel"}} />
<Rose::Table as |table|>
<table.header as |header|>
<header.row as |row|>
<row.headerCell>{{t 'form.id.label'}}</row.headerCell>
<row.headerCell>{{t 'form.name.label'}}</row.headerCell>
<row.headerCell>{{t 'form.type.label'}}</row.headerCell>
<row.headerCell>{{t 'resources.host-catalog'}}</row.headerCell>
</header.row>
</table.header>
<table.body as |body|>
{{#each this.filteredHostSets as |hostSet|}}
<body.row as |row|>
<row.cell>
<form.checkbox
@label={{hostSet.id}}
@description={{hostSet.description}}
onChange={{fn this.toggleHostSet hostSet}} />
</row.cell>
<row.cell>{{hostSet.name}}</row.cell>
<row.cell>
<Rose::Badge>{{hostSet.type}}</Rose::Badge>
</row.cell>
<row.cell>
<code>{{hostSet.host_catalog_id}}</code>
</row.cell>
</body.row>
{{/each}}
</table.body>
</Rose::Table>
<Rose::Table as |table|>
<table.header as |header|>
<header.row as |row|>
<row.headerCell>{{t 'form.id.label'}}</row.headerCell>
<row.headerCell>{{t 'form.name.label'}}</row.headerCell>
<row.headerCell>{{t 'form.type.label'}}</row.headerCell>
<row.headerCell>{{t 'resources.host-catalog.title_plural'}}</row.headerCell>
</header.row>
</table.header>
<table.body as |body|>
{{#each this.filteredHostSets as |hostSet|}}
<body.row as |row|>
<row.cell>
<form.checkbox
@label={{hostSet.id}}
@description={{hostSet.description}}
onChange={{fn this.toggleHostSet hostSet}} />
</row.cell>
<row.cell>{{hostSet.name}}</row.cell>
<row.cell>
<Rose::Badge>{{t (concat 'resources.host-set.types.' hostSet.type)}}</Rose::Badge>
</row.cell>
<row.cell>
<code>{{hostSet.host_catalog_id}}</code>
</row.cell>
</body.row>
{{/each}}
</table.body>
</Rose::Table>
</Rose::Form>
</Rose::Form>
{{/if}}
{{#unless this.hasAvailableHostSets}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "resources.target.host-set.messages.none.title"}} as |message|>
<message.description>
{{t "resources.target.host-set.messages.none.description"}}
</message.description>
<message.link @route="scopes.scope.projects.project.targets.target.host-sets">
<Rose::Icon @name="chevron-left" />
{{t "actions.back"}}
</message.link>
</Rose::Message>
</Rose::Layout::Centered>
{{/unless}}
@@ -11,6 +11,16 @@ export default class FormTargetAddHostSetsComponent extends Component {
*/
selectedHostSetIDs = A();
/**
* Checks for unassigned hostsets.
* @param {[HostSetModel]} filteredHostSets
* @type {boolean}
*/
@computed('filteredHostSets')
get hasAvailableHostSets() {
return this.filteredHostSets.length > 0;
}
/**
* Host sets not already added to the target.
* @type {[HostSetModel]}
+1 -1
View File
@@ -8,7 +8,7 @@
>
<form.input
@value={{t (concat 'target.types.' @model.type)}}
@value={{t (concat 'resources.target.types.' @model.type)}}
@label={{t "form.type.label"}}
readonly={{true}}
@disabled={{true}} />
@@ -13,6 +13,6 @@ export default class ScopesScopeGroupsController extends Controller {
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.groups');
return this.intl.t('resources.group.title_plural');
}
}
@@ -13,6 +13,6 @@ export default class ScopesScopeGroupsGroupAddMembersController extends Controll
* @type {string}
*/
get breadCrumb() {
return this.intl.t('actions.add-members');
return this.intl.t('resources.group.messages.add-members.title');
}
}
+1 -1
View File
@@ -12,6 +12,6 @@ export default class ScopesScopeOrgsController extends Controller {
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.orgs');
return this.intl.t('resources.org.title_plural');
}
}
@@ -12,6 +12,6 @@ export default class ScopesScopeProjectsController extends Controller {
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.projects');
return this.intl.t('resources.project.title_plural');
}
}
@@ -12,6 +12,6 @@ export default class ScopesScopeProjectsProjectHostCatalogsController extends Co
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.host-catalogs');
return this.intl.t('resources.host-catalog.title_plural');
}
}
@@ -13,6 +13,6 @@ export default class ScopesScopeProjectsProjectHostCatalogsHostCatalogHostSetsCo
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.host-sets');
return this.intl.t('resources.host-set.title_plural');
}
}
@@ -13,6 +13,6 @@ export default class ScopesScopeProjectsProjectHostCatalogsHostCatalogHostsContr
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.hosts');
return this.intl.t('resources.host.title_plural');
}
}
@@ -13,6 +13,6 @@ export default class ScopesScopeProjectsProjectTargetsController extends Control
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.targets');
return this.intl.t('resources.target.title_plural');
}
}
@@ -12,6 +12,6 @@ export default class ScopesScopeProjectsProjectTargetsTargetAddHostSetsControlle
* @type {string}
*/
get breadCrumb() {
return this.intl.t('actions.add-host-sets');
return this.intl.t('resources.target.actions.add-host-sets');
}
}
@@ -13,6 +13,6 @@ export default class ScopesScopeProjectsProjectTargetsTargetHostSetsController e
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.host-sets');
return this.intl.t('resources.host-set.title_plural');
}
}
@@ -13,6 +13,6 @@ export default class ScopesScopeRolesController extends Controller {
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.roles');
return this.intl.t('resources.role.title_plural');
}
}
@@ -13,6 +13,6 @@ export default class ScopesScopeRolesRoleAddPrincipalsController extends Control
* @type {string}
*/
get breadCrumb() {
return this.intl.t('actions.add-principals');
return this.intl.t('resources.role.principal.actions.add-principals');
}
}
@@ -13,6 +13,6 @@ export default class ScopesScopeUsersController extends Controller {
* @type {string}
*/
get breadCrumb() {
return this.intl.t('resources.users');
return this.intl.t('resources.user.title_plural');
}
}
+4 -4
View File
@@ -5,19 +5,19 @@
<sidebarLayout.sidebar>
<Rose::Nav::Sidebar @title={{t "titles.general"}} as |nav|>
<nav.link @route="scopes.scope.projects">
{{t "resources.projects"}}
{{t "resources.project.title_plural"}}
</nav.link>
</Rose::Nav::Sidebar>
<Rose::Nav::Sidebar @title={{t "titles.iam"}} as |nav|>
<nav.link @route="scopes.scope.users">
{{t "resources.users"}}
{{t "resources.user.title_plural"}}
</nav.link>
<nav.link @route="scopes.scope.groups">
{{t "resources.groups"}}
{{t "resources.group.title_plural"}}
</nav.link>
<nav.link @route="scopes.scope.roles">
{{t "resources.roles"}}
{{t "resources.role.title_plural"}}
</nav.link>
<nav.link @route="scopes.scope.auth-methods">
{{t "resources.auth-method.title_plural"}}
@@ -1,3 +1,3 @@
{{title (t "resources.groups")}}
{{title (t "resources.group.title_plural")}}
{{outlet}}
@@ -1,6 +1,6 @@
<Rose::Dropdown @text="{{t 'actions.manage'}}" @dropdownRight={{true}} as |dropdown|>
<dropdown.link @route="scopes.scope.groups.group.add-members">
{{t "actions.add-members"}}
{{t "resources.group.actions.add-members"}}
</dropdown.link>
<dropdown.button
@style="danger"
@@ -1,2 +1,2 @@
<h2>{{t "resources.group"}}</h2>
<p>{{t "resources.descriptions.group"}}</p>
<h2>{{t "resources.group.title"}}</h2>
<p>{{t "resources.group.description"}}</p>
@@ -3,6 +3,6 @@
{{t 'titles.details'}}
</nav.link>
<nav.link @route='scopes.scope.groups.group.members'>
{{t 'titles.members'}}
{{t 'resources.group.messages.members.title'}}
</nav.link>
</Rose::Nav::Tabs>
@@ -1,4 +1,4 @@
{{title (t "actions.add-members")}}
{{title (t "resources.group.messages.add-members.title")}}
<Form::Group::AddMembers
@model={{@model.group}}
@@ -1 +1,2 @@
<h2>{{t "actions.add-members"}}</h2>
<h2>{{t "resources.group.messages.add-members.title"}}</h2>
<p>{{t "resources.group.messages.add-members.description"}}</p>
@@ -1,4 +1,4 @@
{{title (t 'titles.members')}}
{{title (t 'resources.group.messages.members.title')}}
{{#if @model.members}}
@@ -43,9 +43,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.group-members-welcome"}} as |message|>
<Rose::Message @title={{t "resources.group.messages.members.title"}} as |message|>
<message.description>
{{t "descriptions.group-members-welcome"}}
{{t "resources.group.messages.members.description"}}
</message.description>
</Rose::Message>
</Rose::Layout::Centered>
@@ -5,8 +5,8 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.groups"}}</h2>
<p>{{t "resources.descriptions.groups"}}</p>
<h2>{{t "resources.group.title_plural"}}</h2>
<p>{{t "resources.group.description"}}</p>
</page.header>
<page.actions>
@@ -49,9 +49,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t 'titles.groups-welcome'}} as |message|>
<Rose::Message @title={{t 'resources.group.messages.welcome.title'}} as |message|>
<message.description>
{{t 'descriptions.groups-welcome'}}
{{t 'resources.group.description'}}
</message.description>
<message.link @route="scopes.scope.groups.new">
<Rose::Icon @name="plus-circle-outline" />
+1 -1
View File
@@ -1,3 +1,3 @@
{{title (t "resources.orgs")}}
{{title (t "resources.org.title_plural")}}
{{outlet}}
@@ -5,8 +5,10 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.orgs"}}</h2>
<p>{{t "resources.descriptions.orgs"}}</p>
<h2>{{t "resources.org.title_plural"}}</h2>
{{#if @model}}
<p>{{t "resources.org.description"}}</p>
{{/if}}
</page.header>
<page.actions>
@@ -39,9 +41,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t 'titles.orgs-welcome'}} as |message|>
<Rose::Message @title={{t 'resources.org.messages.welcome.title'}} as |message|>
<message.description>
{{t 'descriptions.orgs-welcome'}}
{{t 'resources.org.description'}}
</message.description>
<message.link @route="scopes.scope.orgs.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -1,3 +1,3 @@
{{title (t "resources.projects")}}
{{title (t "resources.project.title_plural")}}
{{outlet}}
@@ -5,8 +5,10 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.projects"}}</h2>
<p>{{t "resources.descriptions.projects"}}</p>
<h2>{{t "resources.project.title_plural"}}</h2>
{{#if @model}}
<p>{{t "resources.project.description"}}</p>
{{/if}}
</page.header>
<page.actions>
@@ -39,9 +41,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t 'titles.projects-welcome'}} as |message|>
<Rose::Message @title={{t 'resources.project.messages.welcome.title'}} as |message|>
<message.description>
{{t 'descriptions.projects-welcome'}}
{{t 'resources.project.description'}}
</message.description>
<message.link @route="scopes.scope.projects.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -1,11 +1,11 @@
<Rose::Nav::Sidebar @title={{t "titles.resources"}} as |nav|>
<nav.link @route="scopes.scope.projects.project.sessions">
{{t "resources.sessions"}}
{{t "resources.session.title_plural"}}
</nav.link>
<nav.link @route="scopes.scope.projects.project.targets">
{{t "resources.targets"}}
{{t "resources.target.title_plural"}}
</nav.link>
<nav.link @route="scopes.scope.projects.project.host-catalogs">
{{t "resources.host-catalogs"}}
{{t "resources.host-catalog.title_plural"}}
</nav.link>
</Rose::Nav::Sidebar>
@@ -1,3 +1,3 @@
{{title (t "resources.host-catalogs")}}
{{title (t "resources.host-catalog.title_plural")}}
{{outlet}}
@@ -1,3 +1,5 @@
{{title @model.displayName}}
<Rose::Layout::Page as |page|>
<page.breadcrumbs>
@@ -3,13 +3,13 @@
@route="scopes.scope.projects.project.host-catalogs.host-catalog.hosts.new"
@model={{@model}}
>
{{t "actions.add-host"}}
{{t "resources.host.actions.add"}}
</dropdown.link>
<dropdown.link
@route="scopes.scope.projects.project.host-catalogs.host-catalog.host-sets.new"
@model={{@model}}
>
{{t "actions.add-host-set"}}
{{t "resources.host-set.actions.add"}}
</dropdown.link>
<dropdown.separator />
<dropdown.button
@@ -17,6 +17,6 @@
@disabled={{@model.canSave}}
{{on "click" (route-action "delete" @model)}}
>
{{t 'actions.delete-host-catalog'}}
{{t 'resources.host-catalog.actions.delete'}}
</dropdown.button>
</Rose::Dropdown>
@@ -1,2 +1,2 @@
<h2>{{t "resources.host-catalog"}}</h2>
<p>{{t "resources.descriptions.host-catalog"}}</p>
<h2>{{t "resources.host-catalog.title"}}</h2>
<p>{{t "resources.host-catalog.description"}}</p>
@@ -3,9 +3,9 @@
{{t 'titles.details'}}
</nav.link>
<nav.link @route='scopes.scope.projects.project.host-catalogs.host-catalog.host-sets'>
{{t 'titles.host-sets'}}
{{t 'resources.host-set.title_plural'}}
</nav.link>
<nav.link @route='scopes.scope.projects.project.host-catalogs.host-catalog.hosts'>
{{t 'titles.hosts'}}
{{t 'resources.host.title_plural'}}
</nav.link>
</Rose::Nav::Tabs>
@@ -1,3 +1,3 @@
{{title (t "resources.host-sets")}}
{{title (t "resources.host-set.title_plural")}}
{{outlet}}
@@ -1,12 +1,12 @@
<Rose::Dropdown @text="{{t 'actions.manage'}}" @dropdownRight={{true}} as |dropdown|>
<dropdown.link @route="scopes.scope.projects.project.host-catalogs.host-catalog.host-sets.host-set.add-hosts">
{{t 'actions.add-hosts'}}
{{t 'resources.host-set.actions.add-hosts'}}
</dropdown.link>
<dropdown.button
@style="danger"
@disabled={{@model.canSave}}
{{on "click" (route-action "delete" @model)}}
>
{{t 'actions.delete-host-set'}}
{{t 'resources.host-set.actions.delete'}}
</dropdown.button>
</Rose::Dropdown>
@@ -1,2 +1,2 @@
<h2>{{t "resources.host-set"}}</h2>
<p>{{t "resources.descriptions.host-set"}}</p>
<h2>{{t "resources.host-set.title"}}</h2>
<p>{{t "resources.host-set.description"}}</p>
@@ -3,6 +3,6 @@
{{t 'titles.details'}}
</nav.link>
<nav.link @route='scopes.scope.projects.project.host-catalogs.host-catalog.host-sets.host-set.hosts'>
{{t 'resources.hosts'}}
{{t 'resources.host.title_plural'}}
</nav.link>
</Rose::Nav::Tabs>
@@ -1,4 +1,4 @@
{{title (t "actions.add-hosts")}}
{{title (t "resources.host-set.actions.add-hosts")}}
<Form::HostSet::AddHosts
@model={{@model.hostSet}}
@@ -1 +1,2 @@
<h2>{{t "actions.add-hosts"}}</h2>
<h2>{{t "resources.host-set.host.messages.add.title"}}</h2>
<p>{{t "resources.host-set.host.messages.add.description"}}</p>
@@ -52,9 +52,9 @@
{{#unless @model.hosts}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.no-host-set-hosts"}} as |message|>
<Rose::Message @title={{t "resources.host-set.host.messages.none.title"}} as |message|>
<message.description>
{{t "descriptions.no-host-set-hosts"}}
{{t "resources.host-set.host.messages.none.description"}}
</message.description>
<message.link @route="scopes.scope.projects.project.host-catalogs.host-catalog.hosts.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -21,7 +21,9 @@
<p>{{hostSet.description}}</p>
</row.headerCell>
<row.cell>
<Rose::Badge>{{hostSet.type}}</Rose::Badge>
<Rose::Badge>
{{t (concat 'resources.host-set.types.' hostSet.type)}}
</Rose::Badge>
</row.cell>
<row.cell>
<code>{{hostSet.id}}</code>
@@ -34,9 +36,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.host-sets-welcome"}} as |message|>
<Rose::Message @title={{t "resources.host-set.messages.welcome.title"}} as |message|>
<message.description>
{{t "descriptions.host-sets-welcome"}}
{{t "resources.host-set.description"}}
</message.description>
<message.link @route="scopes.scope.projects.project.host-catalogs.host-catalog.host-sets.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -1,3 +1,3 @@
{{title (t "resources.hosts")}}
{{title (t "resources.host.title_plural")}}
{{outlet}}
@@ -4,6 +4,6 @@
@disabled={{@model.canSave}}
{{on "click" (route-action "delete" @model)}}
>
{{t 'actions.delete-host'}}
{{t 'resources.host.actions.delete'}}
</dropdown.button>
</Rose::Dropdown>
@@ -1,2 +1,2 @@
<h2>{{t "resources.host"}}</h2>
<p>{{t "resources.descriptions.host"}}</p>
<h2>{{t "resources.host.title"}}</h2>
<p>{{t "resources.host.description"}}</p>
@@ -22,7 +22,9 @@
<p>{{host.description}}</p>
</row.headerCell>
<row.cell>
<Rose::Badge>{{host.type}}</Rose::Badge>
<Rose::Badge>
{{t (concat 'resources.host.types.' host.type)}}
</Rose::Badge>
</row.cell>
<row.cell>
<code>{{host.id}}</code>
@@ -38,9 +40,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.hosts-welcome"}} as |message|>
<Rose::Message @title={{t "resources.host.messages.welcome.title"}} as |message|>
<message.description>
{{t "descriptions.hosts-welcome"}}
{{t "resources.host.description"}}
</message.description>
<message.link @route="scopes.scope.projects.project.host-catalogs.host-catalog.hosts.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -5,8 +5,8 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.host-catalogs"}}</h2>
<p>{{t "resources.descriptions.host-catalogs"}}</p>
<h2>{{t "resources.host-catalog.title_plural"}}</h2>
<p>{{t "resources.host-catalog.description"}}</p>
</page.header>
<page.actions>
@@ -43,7 +43,7 @@
</row.headerCell>
<row.cell>
<Rose::Badge>
{{hostCatalog.type}}
{{t (concat 'resources.host-catalog.types.' hostCatalog.type)}}
</Rose::Badge>
</row.cell>
<row.cell>
@@ -57,9 +57,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.host-catalogs-welcome"}} as |message|>
<Rose::Message @title={{t "resources.host-catalog.messages.welcome.title"}} as |message|>
<message.description>
{{t "descriptions.host-catalogs-welcome"}}
{{t "resources.host-catalog.description"}}
</message.description>
<message.link @route="scopes.scope.projects.project.host-catalogs.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -5,8 +5,8 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.project"}}</h2>
<p>{{t "resources.descriptions.project"}}</p>
<h2>{{t "resources.project.title"}}</h2>
<p>{{t "resources.project.description"}}</p>
</page.header>
<page.navigation>
@@ -1,3 +1,3 @@
{{title (t "resources.sessions")}}
{{title (t "resources.session.title_plural")}}
{{outlet}}
@@ -5,7 +5,8 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.sessions"}}</h2>
<h2>{{t "resources.session.title_plural"}}</h2>
<p>{{t "resources.session.description"}}</p>
</page.header>
<page.body>
@@ -16,8 +17,8 @@
<table.header as |header|>
<header.row as |row|>
<row.headerCell>{{t "form.id.label"}}</row.headerCell>
<row.headerCell>{{t "resources.user"}}</row.headerCell>
<row.headerCell>{{t "resources.target"}}</row.headerCell>
<row.headerCell>{{t "resources.user.title"}}</row.headerCell>
<row.headerCell>{{t "resources.target.title"}}</row.headerCell>
<row.headerCell>{{t "form.started.label"}}</row.headerCell>
<row.headerCell>{{t "form.status.label"}}</row.headerCell>
<row.headerCell>{{t "titles.actions"}}</row.headerCell>
@@ -52,9 +53,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.no-sessions"}} as |message|>
<Rose::Message @title={{t "resources.session.messages.none.title"}} as |message|>
<message.description>
{{t "descriptions.no-sessions"}}
{{t "resources.session.messages.none.description"}}
</message.description>
</Rose::Message>
</Rose::Layout::Centered>
@@ -1,3 +1,3 @@
{{title (t "resources.targets")}}
{{title (t "resources.target.title_plural")}}
{{outlet}}
@@ -5,8 +5,10 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.targets"}}</h2>
<p>{{t "resources.descriptions.targets"}}</p>
<h2>{{t "resources.target.title_plural"}}</h2>
{{#if @model}}
<p>{{t "resources.target.description"}}</p>
{{/if}}
</page.header>
<page.actions>
@@ -44,7 +46,7 @@
<row.cell>
{{#if target.type}}
<Rose::Badge>
{{t (concat "target.types." target.type)}}
{{t (concat "resources.target.types." target.type)}}
</Rose::Badge>
{{/if}}
</row.cell>
@@ -59,9 +61,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.targets-welcome"}} as |message|>
<Rose::Message @title={{t "resources.target.messages.welcome.title"}} as |message|>
<message.description>
{{t "descriptions.targets-welcome"}}
{{t "resources.target.description"}}
</message.description>
<message.link @route="scopes.scope.projects.project.targets.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -1,12 +1,12 @@
<Rose::Dropdown @text="{{t 'actions.manage'}}" @dropdownRight={{true}} as |dropdown|>
<dropdown.link @route="scopes.scope.projects.project.targets.target.add-host-sets">
{{t 'actions.add-host-sets'}}
{{t 'resources.target.actions.add-host-sets'}}
</dropdown.link>
<dropdown.button
@style="danger"
@disabled={{@model.canSave}}
{{on "click" (route-action "delete" @model)}}
>
{{t 'actions.delete-target'}}
{{t 'resources.target.actions.delete'}}
</dropdown.button>
</Rose::Dropdown>
@@ -1,2 +1,2 @@
<h2>{{t "resources.target"}}</h2>
<p>{{t "resources.descriptions.target"}}</p>
<h2>{{t "resources.target.title"}}</h2>
<p>{{t "resources.target.description"}}</p>
@@ -3,6 +3,6 @@
{{t 'titles.details'}}
</nav.link>
<nav.link @route='scopes.scope.projects.project.targets.target.host-sets'>
{{t 'titles.host-sets'}}
{{t 'resources.host-set.title_plural'}}
</nav.link>
</Rose::Nav::Tabs>
@@ -1,4 +1,4 @@
{{title (t 'actions.add-host-sets')}}
{{title (t 'resources.target.actions.add-host-sets')}}
{{#if @model.hostSets}}
<Form::Target::AddHostSets
@@ -12,9 +12,9 @@
{{#unless @model.hostSets}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.no-host-sets-for-target"}} as |message|>
<Rose::Message @title={{t "resources.target.host-set.messages.none.title"}} as |message|>
<message.description>
{{t "descriptions.no-host-sets-for-target"}}
{{t "resources.target.host-set.messages.none.description"}}
</message.description>
<message.link @route="scopes.scope.projects.project.targets.target.host-sets">
<Rose::Icon @name="chevron-left" />
@@ -1 +1,2 @@
<h2>{{t "actions.add-host-sets"}}</h2>
<h2>{{t "resources.target.host-set.messages.add.title"}}</h2>
<p>{{t "resources.target.host-set.messages.add.description"}}</p>
@@ -1,4 +1,4 @@
{{title (t "resources.host-sets")}}
{{title (t "resources.host-set.title_plural")}}
{{#if @model.hostSets}}
@@ -19,7 +19,7 @@
<p>{{hostSet.model.description}}</p>
</row.headerCell>
<row.cell>
<Rose::Badge>{{hostSet.model.type}}</Rose::Badge>
<Rose::Badge>{{t (concat 'resources.host-set.types.' hostSet.model.type)}}</Rose::Badge>
</row.cell>
<row.cell>
<code>{{hostSet.model.id}}</code>
@@ -48,9 +48,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.target-host-sets-welcome"}} as |message|>
<Rose::Message @title={{t "resources.target.host-set.messages.welcome.title"}} as |message|>
<message.description>
{{t "descriptions.target-host-sets-welcome"}}
{{t "resources.target.host-set.messages.welcome.description"}}
</message.description>
</Rose::Message>
</Rose::Layout::Centered>
+1 -1
View File
@@ -1,3 +1,3 @@
{{title (t "resources.roles")}}
{{title (t "resources.role.title_plural")}}
{{outlet}}
@@ -5,8 +5,10 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.roles"}}</h2>
<p>{{t "resources.descriptions.roles"}}</p>
<h2>{{t "resources.role.title_plural"}}</h2>
{{#if @model}}
<p>{{t "resources.role.description"}}</p>
{{/if}}
</page.header>
<page.actions>
@@ -49,9 +51,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t 'titles.roles-welcome'}} as |message|>
<Rose::Message @title={{t 'resources.role.messages.welcome.title'}} as |message|>
<message.description>
{{t 'descriptions.roles-welcome'}}
{{t 'resources.role.description'}}
</message.description>
<message.link @route="scopes.scope.roles.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -1,12 +1,12 @@
<Rose::Dropdown @text="{{t 'actions.manage'}}" @dropdownRight={{true}} as |dropdown|>
<dropdown.link @route="scopes.scope.roles.role.add-principals">
{{t 'actions.add-principals'}}
{{t 'resources.role.principal.actions.add-principals'}}
</dropdown.link>
<dropdown.button
@style="danger"
@disabled={{@model.canSave}}
{{on "click" (route-action "delete" @model)}}
>
{{t 'actions.delete-role'}}
{{t 'resources.role.actions.delete'}}
</dropdown.button>
</Rose::Dropdown>
@@ -1,2 +1,2 @@
<h2>{{t "resources.role"}}</h2>
<p>{{t "resources.descriptions.role"}}</p>
<h2>{{t "resources.role.title"}}</h2>
<p>{{t "resources.role.description"}}</p>
@@ -3,9 +3,9 @@
{{t 'titles.settings'}}
</nav.link>
<nav.link @route='scopes.scope.roles.role.principals'>
{{t 'titles.principals'}}
{{t 'resources.role.principal.title_plural'}}
</nav.link>
<nav.link @route='scopes.scope.roles.role.grants'>
{{t 'titles.grants'}}
{{t 'resources.role.grant.title_plural'}}
</nav.link>
</Rose::Nav::Tabs>
@@ -1,4 +1,4 @@
{{title (t "actions.add-principals")}}
{{title (t "resources.role.principal.actions.add-principals")}}
<Form::Role::AddPrincipals
@model={{@model.role}}
@@ -1 +1,2 @@
<h2>{{t "actions.add-principals"}}</h2>
<h2>{{t "resources.role.principal.messages.add-principals.title"}}</h2>
<p>{{t "resources.role.principal.messages.add-principals.description"}}</p>
@@ -1,4 +1,4 @@
{{title (t 'titles.grants')}}
{{title (t 'resources.role.grant.title_plural')}}
<Form::Role::Grants
@model={{@model}}
@@ -1,2 +1,2 @@
<h2>{{t "resources.role"}}</h2>
<p>{{t "resources.descriptions.grants"}}</p>
<h2>{{t "resources.role.title"}}</h2>
<p>{{t "resources.role.grant.description"}}</p>
@@ -1,4 +1,4 @@
{{title (t 'titles.principals')}}
{{title (t 'resources.role.principal.title_plural')}}
{{#if @model}}
@@ -18,7 +18,7 @@
{{principal.model.displayName}}
</row.headerCell>
<row.cell>
{{t (concat 'resources.' principal.type)}}
{{t (concat 'resources.role.principal.types.' principal.type)}}
</row.cell>
<row.cell>
<code>{{principal.model.id}}</code>
@@ -47,10 +47,14 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t "titles.role-principals-welcome"}} as |message|>
<Rose::Message @title={{t "resources.role.principal.messages.welcome.title"}} as |message|>
<message.description>
{{t "descriptions.role-principals-welcome"}}
{{t "resources.role.principal.messages.welcome.description"}}
</message.description>
<message.link @route="scopes.scope.roles.role.add-principals">
<Rose::Icon @name="plus-circle-outline" />
{{t 'resources.role.principal.actions.add-principals'}}
</message.link>
</Rose::Message>
</Rose::Layout::Centered>
@@ -1,2 +1,2 @@
<h2>{{t "resources.role"}}</h2>
<p>{{t "resources.descriptions.principals"}}</p>
<h2>{{t "resources.role.title"}}</h2>
<p>{{t "resources.role.principal.description"}}</p>
+1 -1
View File
@@ -1,3 +1,3 @@
{{title (t "resources.users")}}
{{title (t "resources.user.title_plural")}}
{{outlet}}
@@ -5,8 +5,10 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.users"}}</h2>
<p>{{t "resources.descriptions.users"}}</p>
<h2>{{t "resources.user.title_plural"}}</h2>
{{#if @model}}
<p>{{t "resources.user.description"}}</p>
{{/if}}
</page.header>
<page.actions>
@@ -49,9 +51,9 @@
{{else}}
<Rose::Layout::Centered>
<Rose::Message @title={{t 'titles.users-welcome'}} as |message|>
<Rose::Message @title={{t 'resources.user.messages.welcome.title'}} as |message|>
<message.description>
{{t 'descriptions.users-welcome'}}
{{t 'resources.user.description'}}
</message.description>
<message.link @route="scopes.scope.users.new">
<Rose::Icon @name="plus-circle-outline" />
@@ -5,8 +5,8 @@
</page.breadcrumbs>
<page.header>
<h2>{{t "resources.user"}}</h2>
<p>{{t "resources.descriptions.user"}}</p>
<h2>{{t "resources.user.title"}}</h2>
<p>{{t "resources.user.description"}}</p>
</page.header>
<page.actions>
+1 -52
View File
@@ -5,15 +5,6 @@ auth:
no-scopes: No scopes were found. To authenticate, ask your administrator to create an scope and grant you access.
choose-org: Choose a scope to authenticate.
authenticating-with-org: "You're authenticating with {name}."
host-set:
types:
static: Static
target:
types:
tcp: TCP
host:
types:
static: Static
titles:
iam: IAM
new: New
@@ -23,49 +14,7 @@ titles:
overview: Overview
settings: Settings
empty-set: No Items Yet
orgs-welcome: Welcome to Orgs
projects-welcome: Welcome to Projects
host-catalogs-welcome: Welcome to Host Catalogs
host-sets-welcome: Welcome to Host Sets
hosts-welcome: Welcome to Hosts
users-welcome: Welcome to Users
roles-welcome: Welcome to Roles
groups-welcome: Welcome to Groups
targets-welcome: Create your first Target
target-host-sets-welcome: No Host Sets Associated
grants: Permissions
new-grant: New Grant
principals: Principals
host-sets: Host Sets
hosts: Hosts
targets: Targets
global: Global
no-host-set-hosts: No Hosts Available
no-host-sets-for-target: No Host Sets Available
role-principals-welcome: No Principals Associated
no-principals-available: No Principals Available
members: Members
group-members-welcome: Welcome to Members
no-available-users: No Users Available
no-sessions: No Active Sessions
actions: Actions
descriptions:
host-catalogs: Overview of collections of hosts and host sets.
empty-set: There are no items to display yet. You may be able to add items or try back later.
orgs-welcome: Create your orgs here.
projects-welcome: Projects allow you to create and manage host catalogs. To start, create a project.
host-catalogs-welcome: Host catalogs allow you to configure to collect and create hosts and host sets. To start, create a host catalog.
host-sets-welcome: Configure a static host set in this host catalog.
hosts-welcome: Configure a static host in this host catalog.
users-welcome: Users are authorized to access Boundary.
roles-welcome: Roles are collections of capabilities that can be granted to user and/or groups.
groups-welcome: Groups are collections of users.
targets-welcome: Targets provide Users the means to connect to and interact networked services. A Target contains a collection of Hosts and a collection of Credentials.
target-host-sets-welcome: Add Host Sets to this target to provide access.
no-host-set-hosts: Before associating hosts with this host set, create hosts within the host catalog.
no-host-sets-for-target: No host sets are available to add to this target.
role-principals-welcome: No principals are available in this role.
no-principals-available: Principals are not available for assignment.
group-members-welcome: Users belonging to this group appear here.
no-available-users: No users are available to add to this group.
no-sessions: There are no active sessions at this time.
empty-set: There are no items to display yet. You may be able to add items or try back later.
+153 -44
View File
@@ -23,52 +23,161 @@ auth-method:
description: Auth methods are configurations to authenticate users.
none:
title: No Authentication Methods
description: No authentication methods were found for this scope. Switch scopes and try again.
description: No authentication methods were found for this scope.
types:
password: Password
actions:
create: Create Auth Method
delete: Delete Auth Method
user: User
users: Users
role: Role
roles: Roles
group: Group
groups: Groups
orgs: Orgs
org: Org
projects: Projects
project: Project
host-catalog: Host Catalog
host-catalogs: Host Catalogs
host-set: Host Set
host-sets: Host Sets
host: Host
hosts: Hosts
target: Target
targets: Targets
sessions: Sessions
session: Session
descriptions:
user: A User inherits from Principal ("is-a" Principal) allowing it to be associated with zero or more Roles.
users: A user is any entity authorized to access Boundary using authentication credentials specific to one of the configured Authentication Methods. A User is owned by one and only one Organization. A User is associated with zero or one Authentication Methods. A User not associated with an Authentication Method can not log in to the system. A User can belong to zero or more Groups. A User is deleted when the Organization it belongs to is deleted. The lifecycle of a User is not tied to the lifecycle of any Authentication Method, Group or Role, but rather to its Organization only.
role: A Role can be assigned to zero or more Principals. A Principal assigned a Role receives all capabilities granted by any Direct Grant owned by the Role. A Role is deleted when the Scope it belongs to is deleted. All Direct Grants owned by a Role are deleted when the Role is deleted.
roles: A role is a collection of capabilities granted to any Principal the Role is assigned to. A Role belongs to one and only one Scope. A Role owns zero or more Direct Grants. The lifecycle of a Role is not tied to the lifecycle of any Principal.
grants: A grant represents a set of capabilities granted to a role. It couples a set of Actions to either a set of Resource Types or an individual Resource. A Direct Grant belongs exclusively to one and only one Role. However, equivalent Direct Grants may exist across different Roles. A Direct Grant references one or more Actions and either one or more Resource types or one specific Resource. A Direct Grant is deleted when the Role it belongs to is deleted. A Direct Grant is also deleted if it is associated with a specific Resource and that Resource itself is deleted. The lifecycle of a Direct Grant is not tied to the lifecycle of any Action or Resource Type.
principals: A principal is any entity which can be assigned capabilities. Principal is abstract. User, Group, and Project are concrete Principals. A Principal can be assigned to zero or more Roles.
group: All Users in a Group are granted the capabilities of all Roles the Group is associated with. A Group is deleted when the Scope it belongs to is deleted.
groups: Groups are collections of Users used only for access control purposes. A Group is owned by one and only one Scope. A Group can contain zero or more Users. A Group inherits from Principal ("is-a" Principal) allowing it to be associated with zero or more Roles. The lifecycle of a Group is not tied to the lifecycle of any User or Role.
org: When an Organization is deleted, all resources owned by it are also deleted.
orgs: An Organization is a top-level container, and owns zero to many Projects and zero to many Authentication Methods. An Organization inherits from Scope ("is-a" Scope) allowing it to own zero to many Groups, Roles, Targets, or Host Catalogs. The lifecycle of an Organization is not tied to anything else. A Role at the Organization level can grant permissions at the Project level.
project: When a Project is deleted, all resources owned by it are also deleted. The lifecycle of a Project is not tied to any resource it contains.
projects: A project is a child scope of an organization and is owned by an Organization. A Project inherits from Scope ("is-a" Scope) allowing it to own zero to many Groups, Roles, Targets, or Host Catalogs. A Project also inherits from Principal ("is-a" Principal) allowing it to be associated with zero or more Roles. A Project has no additional relationships beyond those defined in Scope and Principal. A Project is deleted when the Organization it belongs to is deleted.
host-catalog: A host catalog is a permission boundary modeled as a container.
host-catalogs: A host catalog is a permission boundary modeled as a container.
host-set: Host Set is abstract. A Host Set is deleted when the Host Catalog it belongs to is deleted.
host-sets: A host set is a resource which provides a subset of Hosts from the set of Hosts of the Host Catalog it belongs to. A Host Set belongs to one and only one Host Catalog. A Host Set can contain zero or more Hosts. A Host Set can be contained by zero or more Targets. The lifecycle of a Host Set is not tied to the lifecycle of any Targets or Hosts.
host: Host is abstract. A Host is deleted when the Host Catalog it belongs to is deleted.
hosts: A host is a computing element with a network address reachable from Boundary. A Host belongs to one and only one Host Catalog. A Host can be contained by zero or more Host Sets. The lifecycle of a Host is not tied to the lifecycle of any Host Sets.
target: Target is abstract. A Target is deleted when the Scope it belongs to is deleted.
targets: A target is a networked service a User can connect to and interact with through Boundary. A Target does not directly contain any secrets. A Target contains a collection of Hosts. A Target belongs to one and only one Scope. A Target can contain zero or more Host Sets. The lifecycle of a Target is not tied to the lifecycle of any Host Set.
sessions: Sessions
session: Session
group:
title: Group
title_plural: Groups
description: Groups are collections of users. Groups may be assigned to roles to receive the role’s grants.
messages:
welcome:
title: Welcome to Groups
members:
title: Members
description: Members are the users assigned to a group.
add-members:
title: Add Members
description: Select users to add users to this group.
actions:
add-members: Add Members
host-catalog:
title: Host Catalog
title_plural: Host Catalogs
description: A host catalog is a collection of hosts and host sets.
messages:
welcome:
title: Welcome to Host Catalogs
actions:
delete: Delete Host Catalog
types:
static: Static
host-set:
title: Host Set
title_plural: Host Sets
description: A host set is a collection of hosts within a host catalog.
actions:
add: Add Host Set
create: New Host Set
delete: Delete Host Set
add-hosts: Add Hosts
messages:
welcome:
title: Welcome to Host Sets
host:
messages:
none:
title: Welcome to Hosts
description: No hosts available in this host set.
add:
title: Add Hosts
description: Select hosts that belong to this host set.
types:
static: Static
host:
title: Host
title_plural: Hosts
description: A host is a resource that may be accessed by a Boundary target.
messages:
welcome:
title: Welcome to Hosts
none:
title: No Hosts
description: No hosts available in this scope.
actions:
add: Add Host
create: New Host
delete: Delete Host
types:
static: Static
session:
title: Session
title_plural: Sessions
description: A session is a connection to a target initiated through Boundary.
messages:
none:
title: No Sessions
description: There are no active sessions within the current scope.
org:
title: Organization
title_plural: Organizations
description: An organization is a type of scope used to organize projects and IAM resources. Organizations contain projects and is a child scope of global.
messages:
welcome:
title: Welcome to Organizations
project:
title: Project
title_plural: Projects
description: A project is a type of scope used to organize resources such as by targets and host catalogs.
messages:
welcome:
title: Welcome to Projects
user:
title: User
title_plural: Users
description: Users are entities authorized to access Boundary. Users may be assigned to roles as principals, thus receiving role grants.
messages:
welcome:
title: Welcome to Users
role:
title: Role
title_plural: Roles
description: Roles are collections of capability grants and the principals (users and groups) assigned to them.
messages:
welcome:
title: Welcome to Roles
actions:
create: Create Role
delete: Delete Role
principal:
title: Principal
title_plural: Principals
description: Principals are the users and groups assigned to a role and bounded by a role’s grants.
messages:
welcome:
title: Welcome to Principals
description: Principals are not assigned in this role.
none:
title: No Principals Available
description: Principals are not available for assignment.
add-principals:
title: Add Principals
description: Select users and groups to assign to this role.
types:
user: User
group: Group
actions:
add-principals: Add Principals
grant:
title: Grant
title_plural: Grants
description: Grants are permissions which allow roles to take actions and access resources.
actions:
create: New Grant
target:
title: Target
title_plural: Targets
description: A target is a logical collection of host sets which may be used to initiate sessions.
messages:
welcome:
title: Welcome to Targets
actions:
create: New Target
delete: Delete Target
add-host-sets: Add Host Sets
types:
tcp: TCP
host-set:
messages:
welcome:
title: Welcome to Host Sets
description: No hosts sets in this target.
none:
title: No Host Sets Available
description: No hosts sets available to add to target.
add:
title: Add Host Sets
description: Select host sets to assign to this target.