250 lines
8.9 KiB
Handlebars
250 lines
8.9 KiB
Handlebars
{{!
|
|
Copyright (c) HashiCorp, Inc.
|
|
SPDX-License-Identifier: BUSL-1.1
|
|
}}
|
|
|
|
{{#if @model.isOrg}}
|
|
{{page-title (t 'resources.org.title_plural')}}
|
|
{{page-title @model.displayName}}
|
|
<Breadcrumbs::Item
|
|
@text={{@model.displayName}}
|
|
@icon='org'
|
|
@route='scopes.scope.edit'
|
|
@model={{@model.id}}
|
|
/>
|
|
{{/if}}
|
|
|
|
{{#if @model.isProject}}
|
|
{{page-title (t 'resources.org.title_plural')}}
|
|
{{page-title this.scopes.selectedOrg.displayName}}
|
|
{{page-title (t 'resources.project.title_plural')}}
|
|
{{page-title @model.displayName}}
|
|
<Breadcrumbs::Item
|
|
@text={{this.scopes.selectedOrg.displayName}}
|
|
@icon='org'
|
|
@route='scopes.scope.edit'
|
|
@model={{this.scopes.selectedOrg.id}}
|
|
/>
|
|
<Breadcrumbs::Item
|
|
@text={{@model.displayName}}
|
|
@icon='grid'
|
|
@route='scopes.scope.edit'
|
|
@model={{@model.id}}
|
|
/>
|
|
{{/if}}
|
|
|
|
<Rose::Layout::Sidebar as |sidebarLayout|>
|
|
|
|
{{#if this.session.isAuthenticated}}
|
|
<sidebarLayout.sidebar>
|
|
|
|
{{#if @model.isGlobal}}
|
|
<Rose::Nav::Sidebar @title={{t 'titles.general'}} as |nav|>
|
|
<nav.link @route='scopes.scope.scopes'>
|
|
<Rose::Icon @name='flight-icons/svg/org-16' @size='medium' />
|
|
{{t 'resources.org.title_plural'}}
|
|
</nav.link>
|
|
|
|
{{#if (can 'navigate scope' @model collection='session-recordings')}}
|
|
<nav.link @route='scopes.scope.session-recordings'>
|
|
<Rose::Icon @name='flight-icons/svg/film-16' @size='medium' />
|
|
{{t 'resources.session-recording.title_plural'}}
|
|
</nav.link>
|
|
{{/if}}
|
|
{{#if (can 'navigate scope' @model collection='storage-buckets')}}
|
|
<nav.link @route='scopes.scope.storage-buckets'>
|
|
<Rose::Icon
|
|
@name='flight-icons/svg/cloud-upload-16'
|
|
@size='medium'
|
|
/>
|
|
{{t 'resources.storage-bucket.title_plural'}}
|
|
</nav.link>
|
|
{{/if}}
|
|
{{#if (can 'navigate scope' @model collection='policies')}}
|
|
<nav.link @route='scopes.scope.policies'>
|
|
<Rose::Icon
|
|
@name='flight-icons/svg/hourglass-16'
|
|
@size='medium'
|
|
/>
|
|
{{t 'resources.policy.title_plural'}}
|
|
</nav.link>
|
|
{{/if}}
|
|
{{#if (can 'navigate scope' @model collection='aliases')}}
|
|
<nav.link @route='scopes.scope.aliases'>
|
|
<Rose::Icon @name='flight-icons/svg/at-sign-16' @size='medium' />
|
|
{{t 'resources.alias.title_plural'}}
|
|
</nav.link>
|
|
{{/if}}
|
|
{{#if
|
|
(and
|
|
(can 'navigate worker' @model collection='workers')
|
|
(feature-flag 'byow')
|
|
)
|
|
}}
|
|
<nav.link @route='scopes.scope.workers'>
|
|
<Rose::Icon @name='flight-icons/svg/cpu-16' @size='medium' />
|
|
{{t 'titles.workers'}}
|
|
</nav.link>
|
|
{{/if}}
|
|
</Rose::Nav::Sidebar>
|
|
{{/if}}
|
|
|
|
{{#if @model.isOrg}}
|
|
<Rose::Nav::Sidebar @title={{t 'titles.general'}} as |nav|>
|
|
{{#if this.session.data.authenticated.isGlobal}}
|
|
<nav.link @route='scopes.scope.scopes' @model='global'>
|
|
<Rose::Icon @name='flight-icons/svg/org-16' @size='medium' />
|
|
{{t 'resources.org.title_plural'}}
|
|
</nav.link>
|
|
{{/if}}
|
|
<nav.link @route='scopes.scope.scopes'>
|
|
<Rose::Icon @name='flight-icons/svg/grid-16' @size='medium' />
|
|
{{t 'resources.project.title_plural'}}
|
|
</nav.link>
|
|
|
|
{{#if (can 'navigate scope' @model collection='policies')}}
|
|
<nav.link @route='scopes.scope.policies'>
|
|
<Rose::Icon
|
|
@name='flight-icons/svg/hourglass-16'
|
|
@size='medium'
|
|
/>
|
|
{{t 'resources.policy.title_plural'}}
|
|
</nav.link>
|
|
{{/if}}
|
|
</Rose::Nav::Sidebar>
|
|
|
|
{{/if}}
|
|
|
|
{{#if @model.isProject}}
|
|
<Rose::Nav::Sidebar @title={{t 'titles.general'}} as |nav|>
|
|
{{#if this.session.data.authenticated.isGlobal}}
|
|
<nav.link @route='scopes.scope.scopes' @model='global'>
|
|
<Rose::Icon @name='flight-icons/svg/org-16' @size='medium' />
|
|
{{t 'resources.org.title_plural'}}
|
|
</nav.link>
|
|
{{/if}}
|
|
<nav.link @route='scopes.scope.scopes' @model={{@model.scopeID}}>
|
|
<Rose::Icon @name='flight-icons/svg/grid-16' @size='medium' />
|
|
{{t 'resources.project.title_plural'}}
|
|
</nav.link>
|
|
</Rose::Nav::Sidebar>
|
|
|
|
<Rose::Nav::Sidebar @title={{t 'titles.resources'}} as |nav|>
|
|
{{#if (can 'navigate model' @model collection='sessions')}}
|
|
<nav.link @route='scopes.scope.sessions'>
|
|
<Rose::Icon
|
|
@name='flight-icons/svg/entry-point-16'
|
|
@size='medium'
|
|
/>
|
|
{{t 'resources.session.title_plural'}}
|
|
</nav.link>
|
|
{{/if}}
|
|
{{#if (can 'navigate model' @model collection='targets')}}
|
|
<nav.link @route='scopes.scope.targets'>
|
|
<Rose::Icon @name='flight-icons/svg/target-16' @size='medium' />
|
|
{{t 'resources.target.title_plural'}}
|
|
</nav.link>
|
|
{{/if}}
|
|
{{#if (can 'navigate model' @model collection='host-catalogs')}}
|
|
<nav.link @route='scopes.scope.host-catalogs'>
|
|
<Rose::Icon
|
|
@name='flight-icons/svg/collections-16'
|
|
@size='medium'
|
|
/>
|
|
{{t 'resources.host-catalog.title_plural'}}
|
|
</nav.link>
|
|
{{/if}}
|
|
{{#if (can 'navigate model' @model collection='credential-stores')}}
|
|
<nav.link @route='scopes.scope.credential-stores'>
|
|
<Rose::Icon @name='flight-icons/svg/key-16' @size='medium' />
|
|
{{t 'resources.credential-store.title_plural'}}
|
|
</nav.link>
|
|
{{/if}}
|
|
</Rose::Nav::Sidebar>
|
|
{{/if}}
|
|
|
|
<Rose::Nav::Sidebar @title={{t 'titles.iam'}} as |nav|>
|
|
{{! Users are available only for org/global scopes }}
|
|
{{#unless @model.isProject}}
|
|
{{#if (can 'navigate model' @model collection='users')}}
|
|
<nav.link @route='scopes.scope.users'>
|
|
<Rose::Icon @name='flight-icons/svg/users-16' @size='medium' />
|
|
{{t 'resources.user.title_plural'}}
|
|
</nav.link>
|
|
{{/if}}
|
|
{{/unless}}
|
|
|
|
{{! Groups and roles are available for all scopes }}
|
|
{{#if (can 'navigate model' @model collection='groups')}}
|
|
<nav.link @route='scopes.scope.groups'>
|
|
<Rose::Icon
|
|
@name='flight-icons/svg/folder-users-16'
|
|
@size='medium'
|
|
/>
|
|
{{t 'resources.group.title_plural'}}
|
|
</nav.link>
|
|
{{/if}}
|
|
{{#if (can 'navigate model' @model collection='roles')}}
|
|
<nav.link @route='scopes.scope.roles'>
|
|
<Rose::Icon
|
|
@name='flight-icons/svg/identity-user-16'
|
|
@size='medium'
|
|
/>
|
|
{{t 'resources.role.title_plural'}}
|
|
</nav.link>
|
|
{{/if}}
|
|
|
|
{{! Auth methods are available only for org/global scopes }}
|
|
{{#unless @model.isProject}}
|
|
{{#if (can 'navigate model' @model collection='auth-methods')}}
|
|
<nav.link @route='scopes.scope.auth-methods'>
|
|
<Rose::Icon @name='flight-icons/svg/lock-16' @size='medium' />
|
|
{{t 'resources.auth-method.title_plural'}}
|
|
</nav.link>
|
|
{{/if}}
|
|
{{/unless}}
|
|
</Rose::Nav::Sidebar>
|
|
|
|
{{#if (and @model.isGlobal (feature-flag 'ssh-session-recording'))}}
|
|
{{#if this.session.data.authenticated.isGlobal}}
|
|
<Rose::Nav::Sidebar @title={{t 'titles.settings'}} as |nav|>
|
|
<nav.link @route='scopes.scope.edit'>
|
|
{{t 'resources.global.messages.settings.title'}}
|
|
</nav.link>
|
|
</Rose::Nav::Sidebar>
|
|
{{/if}}
|
|
{{/if}}
|
|
|
|
{{#if @model.isOrg}}
|
|
{{#if this.session.data.authenticated.isGlobal}}
|
|
<Rose::Nav::Sidebar @title={{t 'titles.settings'}} as |nav|>
|
|
<nav.link @route='scopes.scope.edit'>
|
|
{{t 'resources.org.messages.settings.title'}}
|
|
</nav.link>
|
|
</Rose::Nav::Sidebar>
|
|
{{/if}}
|
|
{{/if}}
|
|
|
|
{{#if @model.isProject}}
|
|
<Rose::Nav::Sidebar @title={{t 'titles.settings'}} as |nav|>
|
|
<nav.link @route='scopes.scope.edit'>
|
|
{{t 'resources.project.messages.settings.title'}}
|
|
</nav.link>
|
|
</Rose::Nav::Sidebar>
|
|
{{/if}}
|
|
|
|
</sidebarLayout.sidebar>
|
|
{{/if}}
|
|
|
|
<sidebarLayout.body>
|
|
<main>
|
|
{{outlet}}
|
|
</main>
|
|
</sidebarLayout.body>
|
|
<sidebarLayout.footer>
|
|
<Hds::AppFooter @theme={{this.session.data.theme}} as |AF|>
|
|
<AF.Link @href={{(doc-url)}}>{{t 'titles.documentation'}}</AF.Link>
|
|
<AF.LegalLinks />
|
|
</Hds::AppFooter>
|
|
</sidebarLayout.footer>
|
|
</Rose::Layout::Sidebar> |