Files
threshold-ui/ui/admin/app/templates/scopes/scope.hbs
T
3dded0a7bc Llb/side nav refactor (#2763)
* feat: 🎸 scope picker component (#2646)

* feat: 🎸 scope picker component
---------

Co-authored-by: lisbet-alvarez <lisbet-alvarez@users.noreply.github.com>
Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>

* refactor: 💡 use hds side nav w/ hds frame instead of rose (#2688)

* refactor: 💡 use hds side nav w/ hds frame instead of rose

* test: 💍 clean up selectors

* fix: 🐛 specificity of style override

* refactor: 💡 use hds side nav list instead of target and portal

* refactor: 💡 revert to using portal component & update scss

* docs: ✏️ update comment

* refactor: 💡 use custom class names for containers

* refactor: 💡 pr feedback (use @hasSidebar arg)

* refactor: 💡 fix onboarding page & fix settings title

* refactor: 💡 remove unneeded template file (pr feedback)

* test: 💍 fix tests due to merge conflicts

* test: 💍 add missing test selector due to merge conflict

* test: 💍 fix more broken tests due to merge conflicts

* chore: 🤖 update yarn.lock & update hds version to 4.18.1

* chore: 🤖 fix e2e test cases due to side nav refactor (#2751)

* chore: 🤖 fix e2e test cases due to side nav refactor

* test: 💍 fix e2e test for desktop

---------

Co-authored-by: lisbet-alvarez <lisbet-alvarez@users.noreply.github.com>
Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2025-04-14 14:27:02 -07:00

249 lines
6.3 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.scope.org.displayName}}
{{page-title (t 'resources.project.title_plural')}}
{{page-title @model.displayName}}
<Breadcrumbs::Item
@text={{this.scope.org.displayName}}
@icon='org'
@route='scopes.scope.edit'
@model={{this.scope.org.id}}
/>
<Breadcrumbs::Item
@text={{@model.displayName}}
@icon='grid'
@route='scopes.scope.edit'
@model={{@model.id}}
/>
{{/if}}
<Hds::SideNav::Portal as |Nav|>
{{#if @model.isGlobal}}
<Nav.Title>{{t 'titles.scope-level' scope=(t 'titles.global')}}</Nav.Title>
<Nav.Link
@icon='org'
@text={{t 'resources.org.title_plural'}}
@route='scopes.scope.scopes'
/>
{{#if (can 'navigate scope' @model collection='session-recordings')}}
<Nav.Link
@icon='film'
@text={{t 'resources.session-recording.title_plural'}}
@route='scopes.scope.session-recordings'
/>
{{/if}}
{{#if (can 'navigate scope' @model collection='storage-buckets')}}
<Nav.Link
@icon='cloud-upload'
@text={{t 'resources.storage-bucket.title_plural'}}
@route='scopes.scope.storage-buckets'
/>
{{/if}}
{{#if (can 'navigate scope' @model collection='policies')}}
<Nav.Link
@icon='hourglass'
@text={{t 'resources.policy.title_plural'}}
@route='scopes.scope.policies'
/>
{{/if}}
{{#if (can 'navigate scope' @model collection='aliases')}}
<Nav.Link
@icon='at-sign'
@text={{t 'resources.alias.title_plural'}}
@route='scopes.scope.aliases'
/>
{{/if}}
{{#if
(and
(can 'navigate worker' @model collection='workers')
(feature-flag 'byow')
)
}}
<Nav.Link
@icon='cpu'
@text={{t 'titles.workers'}}
@route='scopes.scope.workers'
/>
{{/if}}
<Nav.Title>{{t 'titles.scope-iam' scope=(t 'titles.global')}}</Nav.Title>
{{/if}}
{{#if @model.isOrg}}
<Nav.Title>{{t
'titles.scope-level'
scope=(t 'resources.org.title')
}}</Nav.Title>
{{#if this.session.data.authenticated.isGlobal}}
<Nav.Link
@icon='org'
@text={{t 'resources.org.title_plural'}}
@route='scopes.scope.scopes'
@model='global'
/>
{{/if}}
<Nav.Link
@icon='grid'
@text={{t 'resources.project.title_plural'}}
@route='scopes.scope.scopes'
/>
{{#if (can 'navigate scope' @model collection='policies')}}
<Nav.Link
@icon='hourglass'
@text={{t 'resources.policy.title_plural'}}
@route='scopes.scope.policies'
/>
{{/if}}
<Nav.Title>{{t
'titles.scope-iam'
scope=(t 'resources.org.title')
}}</Nav.Title>
{{/if}}
{{#if @model.isProject}}
<Nav.BackLink
@text={{t 'titles.back-link' scope=this.scope.org.displayName}}
@route='scopes.scope.scopes'
@model={{@model.scopeID}}
/>
<Nav.Title>{{t 'titles.project-actions'}}</Nav.Title>
{{#if (can 'navigate model' @model collection='sessions')}}
<Nav.Link
@icon='entry-point'
@text={{t 'resources.session.title_plural'}}
@route='scopes.scope.sessions'
/>
{{/if}}
{{#if (can 'navigate model' @model collection='targets')}}
<Nav.Link
@icon='target'
@text={{t 'resources.target.title_plural'}}
@route='scopes.scope.targets'
/>
{{/if}}
{{#if (can 'navigate model' @model collection='host-catalogs')}}
<Nav.Link
@icon='collections'
@text={{t 'resources.host-catalog.title_plural'}}
@route='scopes.scope.host-catalogs'
/>
{{/if}}
{{#if (can 'navigate model' @model collection='credential-stores')}}
<Nav.Link
@icon='key'
@text={{t 'resources.credential-store.title_plural'}}
@route='scopes.scope.credential-stores'
/>
{{/if}}
<Nav.Title>{{t
'titles.scope-iam'
scope=(t 'resources.project.title')
}}</Nav.Title>
{{/if}}
{{! Users are available only for org/global scopes }}
{{#unless @model.isProject}}
{{#if (can 'navigate model' @model collection='users')}}
<Nav.Link
@icon='users'
@text={{t 'resources.user.title_plural'}}
@route='scopes.scope.users'
/>
{{/if}}
{{/unless}}
{{! Groups and roles are available for all scopes }}
{{#if (can 'navigate model' @model collection='groups')}}
<Nav.Link
@icon='folder-users'
@text={{t 'resources.group.title_plural'}}
@route='scopes.scope.groups'
/>
{{/if}}
{{#if (can 'navigate model' @model collection='roles')}}
<Nav.Link
@icon='identity-user'
@text={{t 'resources.role.title_plural'}}
@route='scopes.scope.roles'
/>
{{/if}}
{{! Auth methods are available only for org/global scopes }}
{{#unless @model.isProject}}
{{#if (can 'navigate model' @model collection='auth-methods')}}
<Nav.Link
@icon='lock'
@text={{t 'resources.auth-method.title_plural'}}
@route='scopes.scope.auth-methods'
/>
{{/if}}
{{/unless}}
{{#if (and @model.isGlobal (feature-flag 'ssh-session-recording'))}}
{{#if this.session.data.authenticated.isGlobal}}
<Nav.Title>{{t 'titles.settings'}}</Nav.Title>
<Nav.Link
@icon='settings'
@text={{t 'resources.global.messages.settings.title'}}
@route='scopes.scope.edit'
/>
{{/if}}
{{/if}}
{{#if @model.isOrg}}
{{#if this.session.data.authenticated.isGlobal}}
<Nav.Title>{{t 'titles.settings'}}</Nav.Title>
<Nav.Link
@icon='settings'
@text={{t 'resources.org.messages.settings.title'}}
@route='scopes.scope.edit'
/>
{{/if}}
{{/if}}
{{#if @model.isProject}}
<Nav.Title>{{t 'titles.settings'}}</Nav.Title>
<Nav.Link
@icon='settings'
@text={{t 'resources.project.messages.settings.title'}}
@route='scopes.scope.edit'
/>
{{/if}}
</Hds::SideNav::Portal>
{{outlet}}