ui: Disable licensing tab if the UI is running via HCP (#12771)
Co-authored-by: Evan Rowe <ev.rowe@gmail.com>
This commit is contained in:
parent
d81d8468db
commit
a0a17aab2d
|
@ -30,7 +30,7 @@ references:
|
|||
ember: &EMBER_IMAGE docker.mirror.hashicorp.services/circleci/node:14-browsers
|
||||
ubuntu: &UBUNTU_CI_IMAGE ubuntu-2004:202201-02
|
||||
cache:
|
||||
yarn: &YARN_CACHE_KEY consul-ui-v7-{{ checksum "ui/yarn.lock" }}
|
||||
yarn: &YARN_CACHE_KEY consul-ui-v8-{{ checksum "ui/yarn.lock" }}
|
||||
|
||||
steps:
|
||||
install-gotestsum: &install-gotestsum
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
"scripts": {
|
||||
"doc:toc": "doctoc README.md",
|
||||
"compliance": "npm-run-all compliance:*",
|
||||
"compliance:licenses": "license-checker --summary --onlyAllow 'Python-2.0;Apache*;Apache License, Version 2.0;Apache-2.0;Apache 2.0;Artistic-2.0;BSD;BSD-3-Clause;CC-BY-3.0;CC-BY-4.0;CC0-1.0;ISC;MIT;MPL-2.0;Public Domain;Unicode-TOU;Unlicense;WTFPL' --excludePackages 'consul-ui@2.2.0;consul-acls@0.1.0;consul-lock-sessions@0.1.0;consul-partitions@0.1.0;consul-nspaces@0.1.0'"
|
||||
"compliance:licenses": "license-checker --summary --onlyAllow 'Python-2.0;Apache*;Apache License, Version 2.0;Apache-2.0;Apache 2.0;Artistic-2.0;BSD;BSD-3-Clause;CC-BY-3.0;CC-BY-4.0;CC0-1.0;ISC;MIT;MPL-2.0;Public Domain;Unicode-TOU;Unlicense;WTFPL' --excludePackages 'consul-ui@2.2.0;consul-acls@0.1.0;consul-lock-sessions@0.1.0;consul-partitions@0.1.0;consul-nspaces@0.1.0;consul-hcp@0.1.0'"
|
||||
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"name": "consul-hcp",
|
||||
"version": "0.1.0",
|
||||
"private": true
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
(routes => routes({
|
||||
dc: {
|
||||
show: {
|
||||
license: null,
|
||||
},
|
||||
},
|
||||
}))(
|
||||
(json, data = (typeof document !== 'undefined' ? document.currentScript.dataset : module.exports)) => {
|
||||
data[`routes`] = JSON.stringify(json);
|
||||
}
|
||||
);
|
|
@ -0,0 +1,7 @@
|
|||
(services => services({
|
||||
|
||||
}))(
|
||||
(json, data = (typeof document !== 'undefined' ? document.currentScript.dataset : module.exports)) => {
|
||||
data[`services`] = JSON.stringify(json);
|
||||
}
|
||||
);
|
|
@ -1,11 +0,0 @@
|
|||
import BaseAbility from './base';
|
||||
import { inject as service } from '@ember/service';
|
||||
|
||||
export default class HcpAbility extends BaseAbility {
|
||||
@service('env') env;
|
||||
|
||||
get is() {
|
||||
return false;
|
||||
// return this.env.var('CONSUL_HCP');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
import BaseAbility from './base';
|
||||
|
||||
export default class ServerAbility extends BaseAbility {
|
||||
resource = 'operator';
|
||||
segmented = false;
|
||||
}
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
refresh=this.refresh
|
||||
t=this.t
|
||||
exists=this.exists
|
||||
|
||||
Title=(component "route/title")
|
||||
Announcer=(component "route/announcer")
|
||||
|
|
|
@ -31,6 +31,12 @@ export default class RouteComponent extends Component {
|
|||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
@action
|
||||
exists(str) {
|
||||
return this.routlet.exists(`${this.args.name}.${str}`);
|
||||
}
|
||||
|
||||
@action
|
||||
t(str, options) {
|
||||
if (str.includes('${')) {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import Service, { inject as service } from '@ember/service';
|
||||
import { schedule } from '@ember/runloop';
|
||||
import { get } from '@ember/object';
|
||||
|
||||
import wildcard from 'consul-ui/utils/routing/wildcard';
|
||||
import { routes } from 'consul-ui/router';
|
||||
|
@ -57,10 +58,29 @@ export default class RoutletService extends Service {
|
|||
@service('env') env;
|
||||
@service('router') router;
|
||||
|
||||
@service('repository/permission') permissions;
|
||||
|
||||
ready() {
|
||||
return this._transition;
|
||||
}
|
||||
|
||||
exists(routeName) {
|
||||
if(get(routes, routeName)) {
|
||||
return this.allowed(routeName);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
allowed(routeName) {
|
||||
const abilities = get(routes, `${routeName}._options.abilities`) || [];
|
||||
if (abilities.length > 0) {
|
||||
if (!abilities.every(ability => this.permissions.can(ability))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
transition() {
|
||||
let endTransition;
|
||||
this._transition = new Promise(resolve => {
|
||||
|
|
|
@ -13,9 +13,9 @@ as |route|>
|
|||
|
||||
{{#let
|
||||
(from-entries (array
|
||||
(array 'serverstatus' true)
|
||||
(array 'serverstatus' (compute (fn route.exists 'serverstatus')))
|
||||
(array 'cataloghealth' false)
|
||||
(array 'license' (can 'read license'))
|
||||
(array 'license' (compute (fn route.exists 'license')))
|
||||
))
|
||||
as |tabs|}}
|
||||
|
||||
|
|
|
@ -6,6 +6,9 @@ export const walk = function(routes) {
|
|||
if (item === '_options') {
|
||||
return;
|
||||
}
|
||||
if(routes[item] === null) {
|
||||
return;
|
||||
}
|
||||
const options = routes[item]._options;
|
||||
let cb;
|
||||
if (Object.keys(routes[item]).length > 1) {
|
||||
|
|
|
@ -31,7 +31,8 @@ module.exports = function(defaults, $ = process.env) {
|
|||
'consul-acls',
|
||||
'consul-lock-sessions',
|
||||
'consul-partitions',
|
||||
'consul-nspaces'
|
||||
'consul-nspaces',
|
||||
'consul-hcp'
|
||||
].map(item => {
|
||||
return {
|
||||
name: item,
|
||||
|
|
|
@ -66,6 +66,9 @@ ${
|
|||
{{if .NamespacesEnabled}}
|
||||
<script src="${rootURL}assets/consul-nspaces/routes.js"></script>
|
||||
{{end}}
|
||||
{{if .HCPEnabled}}
|
||||
<script src="${rootURL}assets/consul-hcp/routes.js"></script>
|
||||
{{end}}
|
||||
`
|
||||
: `
|
||||
<script>
|
||||
|
@ -85,7 +88,8 @@ ${
|
|||
{
|
||||
'CONSUL_ACLS_ENABLE': 'consul-acls',
|
||||
'CONSUL_PARTITIONS_ENABLE': 'consul-partitions',
|
||||
'CONSUL_NSPACES_ENABLE': 'consul-nspaces'
|
||||
'CONSUL_NSPACES_ENABLE': 'consul-nspaces',
|
||||
'CONSUL_HCP_ENABLE': 'consul-hcp'
|
||||
}
|
||||
);
|
||||
</script>
|
||||
|
|
|
@ -79,6 +79,7 @@
|
|||
"chalk": "^4.1.0",
|
||||
"clipboard": "^2.0.4",
|
||||
"consul-acls": "*",
|
||||
"consul-hcp": "*",
|
||||
"consul-lock-sessions": "*",
|
||||
"consul-nspaces": "*",
|
||||
"consul-partitions": "*",
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
serverstatus: {
|
||||
_options: {
|
||||
path: '/server-status',
|
||||
abilities: ['access overview', 'read zones'],
|
||||
abilities: ['read servers']
|
||||
},
|
||||
},
|
||||
cataloghealth: {
|
||||
|
@ -30,7 +30,7 @@
|
|||
license: {
|
||||
_options: {
|
||||
path: '/license',
|
||||
abilities: ['access overview', 'read licence'],
|
||||
abilities: ['read license']
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue