Files
threshold-ui/ui/admin/app/templates/scopes/scope.hbs
T

233 lines
8.3 KiB
Handlebars

{{!
Copyright (c) HashiCorp, Inc.
SPDX-License-Identifier: MPL-2.0
}}
{{#if @model.isOrg}}
{{page-title (t 'resources.org.title_plural')}}
{{page-title @model.displayName}}
{{/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}}
{{/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 (feature-flag 'session-recording')}}
{{#if
(can
'navigate session-recording'
@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 storage-bucket' @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}}
{{#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 'resources.worker.title_plural'}}
</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>
</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>
{{! TODO: after scope awareness refactor, update groups and roles
to support project scopes }}
{{!--
<Rose::Nav::Sidebar @title={{t "titles.iam"}} as |nav|>
<nav.link @route="scopes.scope.groups">
<Rose::Icon
@name="flight-icons/svg/folder-users-16"
@size="medium" />
{{t "resources.group.title_plural"}}
</nav.link>
<nav.link @route="scopes.scope.roles">
<Rose::Icon
@name="flight-icons/svg/identity-user-16"
@size="medium" />
{{t "resources.role.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/crosshair-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 @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>
<Rose::Footer as |footer|>
<footer.text>{{app-name}}</footer.text>
<footer.nav as |nav|>
<nav.link @href={{(doc-url)}}>
{{t 'titles.documentation'}}
</nav.link>
</footer.nav>
<footer.brand @logo='logo-company' @text={{(company-name)}} />
<footer.text>{{company-copyright}}</footer.text>
</Rose::Footer>
</sidebarLayout.footer>
</Rose::Layout::Sidebar>