6e23f5a14c
For our dc, nspace and partition 'bucket' menus, sometimes when selecting one 'bucket' we need to reset a different 'bucket' back to the one that your token has by default (or the default if not). For example when switching to a different partition whilst you are in a non-default namespace of another partition, we need to switch you to the token default namespace of the partition you are switching to.
180 lines
3.8 KiB
Handlebars
180 lines
3.8 KiB
Handlebars
<Route
|
|
@name={{routeName}}
|
|
as |route|>
|
|
|
|
{{! Add the a11y route announcer }}
|
|
<route.Announcer
|
|
@title="Consul"
|
|
/>
|
|
{{! Tell CSS what we have enabled }}
|
|
{{#if (can "use acls")}}
|
|
{{document-attrs class="has-acls"}}
|
|
{{/if}}
|
|
{{#if (can "use nspaces")}}
|
|
{{document-attrs class="has-nspaces"}}
|
|
{{/if}}
|
|
{{#if (can "use partitions")}}
|
|
{{document-attrs class="has-partitions"}}
|
|
{{/if}}
|
|
|
|
{{! Tell CSS about our theme }}
|
|
<DataSource
|
|
@src={{uri 'settings://consul:theme'}}
|
|
as |source|>
|
|
{{#each-in source.data as |key value|}}
|
|
{{#if (and value (contains key (array "color-scheme" "contrast")))}}
|
|
{{document-attrs class=(concat 'prefers-' key '-' value)}}
|
|
{{/if}}
|
|
{{/each-in}}
|
|
</DataSource>
|
|
|
|
{{! If ACLs are enabled try get a token }}
|
|
{{#if (can "use acls")}}
|
|
<DataSource
|
|
@src={{uri 'settings://consul:token'}}
|
|
@onchange={{action (mut token) value="data"}}
|
|
/>
|
|
{{/if}}
|
|
|
|
{{#if (not-eq route.currentName 'oauth-provider-debug')}}
|
|
|
|
{{! redirect if we aren't on a URL with dc information }}
|
|
{{#if (eq route.currentName 'index')}}
|
|
{{did-insert (route-action 'replaceWith' 'dc.services.index'
|
|
(hash
|
|
dc=(env 'CONSUL_DATACENTER_LOCAL')
|
|
)
|
|
)}}
|
|
{{else}}
|
|
{{! If we are notfound, guess the params we need }}
|
|
{{#if (eq route.currentName 'notfound')}}
|
|
<DataSource
|
|
@src={{uri '/*/*/*/notfound/${path}'
|
|
(hash
|
|
path=route.params.notfound
|
|
)
|
|
}}
|
|
@onchange={{action (mut notfound) value="data"}}
|
|
/>
|
|
{{/if}}
|
|
|
|
{{! Make sure we guess and default to the right params when not found }}
|
|
{{#let
|
|
(if (can "use partitions") (or route.params.partition notfound.partition token.Partition '') '')
|
|
(if (can "use nspaces") (or route.params.nspace notfound.nspace token.Namespace '') '')
|
|
as |partition nspace|}}
|
|
|
|
{{! Make sure we have enough to show the app chrome}}
|
|
{{! Don't show anything until we have a list of DCs }}
|
|
<DataSource
|
|
@src={{uri '/*/*/*/datacenters'}}
|
|
as |dcs|>
|
|
{{! Once we have a list of DCs make sure the DC we are asking for exists }}
|
|
{{! If not use the DC that the UI is running in }}
|
|
{{#let
|
|
|
|
(or
|
|
|
|
(if nofound.dc
|
|
(object-at 0 (cached-model
|
|
'dc'
|
|
(hash
|
|
Name=notfound.dc
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(object-at 0 (cached-model
|
|
'dc'
|
|
(hash
|
|
Name=route.params.dc
|
|
)
|
|
)
|
|
)
|
|
|
|
(hash
|
|
Name=(env "CONSUL_DATACENTER_LOCAL")
|
|
)
|
|
|
|
)
|
|
|
|
dcs.data
|
|
|
|
as |dc dcs|}}
|
|
{{#if (and (gt dc.Name.length 0) dcs)}}
|
|
|
|
{{! figure out our current DC and convert it to a model }}
|
|
<DataSource
|
|
@src={{uri '/${partition}/*/${dc}/datacenter/${name}'
|
|
(hash
|
|
dc=dc.Name
|
|
partition=partition
|
|
name=dc.Name
|
|
)
|
|
}}
|
|
as |dc|>
|
|
{{#if dc.data}}
|
|
<HashicorpConsul
|
|
id="wrapper"
|
|
@dcs={{dcs}}
|
|
@dc={{dc.data}}
|
|
@partition={{partition}}
|
|
@nspace={{nspace}}
|
|
@user={{hash
|
|
token=token
|
|
}}
|
|
@onchange={{action "reauthorize"}}
|
|
as |consul|>
|
|
|
|
{{#if error}}
|
|
{{! If we got an error from anything, show an error page }}
|
|
<AppError
|
|
@error={{error}}
|
|
@login={{consul.login.open}}
|
|
/>
|
|
{{else}}
|
|
{{! Otherwise show the rest of the app}}
|
|
<Outlet
|
|
@name="application"
|
|
@model={{hash
|
|
app=consul
|
|
user=(hash
|
|
token=token
|
|
)
|
|
dc=dc.data
|
|
dcs=dcs
|
|
}}
|
|
as |o|>
|
|
{{outlet}}
|
|
</Outlet>
|
|
|
|
{{! loading component for when we need it}}
|
|
<Consul::Loader
|
|
class="view-loader"
|
|
/>
|
|
{{/if}}
|
|
|
|
</HashicorpConsul>
|
|
{{/if}}
|
|
</DataSource>
|
|
{{/if}}
|
|
{{/let}}
|
|
</DataSource>
|
|
{{/let}}
|
|
{{/if}}
|
|
{{else}}
|
|
{{! Routes with no main navigation }}
|
|
<Outlet
|
|
@name="application"
|
|
@model={{hash
|
|
user=(hash
|
|
token=token
|
|
)
|
|
}}
|
|
as |o|>
|
|
{{outlet}}
|
|
</Outlet>
|
|
{{/if}}
|
|
</Route>
|