mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-15 19:17:02 +02:00
* directly depend on route-recognizer * add path encode helper using route-recognizer normalizer methods * encode user-entered paths/ids for places we're not using the built-in ember data buildUrl method * encode secret link params * decode params from the url, and encode for linked-block and navigate-input components * add escape-string-regexp * use list-controller mixin and escape the string when contructing new Regex objects * encode paths in the console service * add acceptance tests for kv secrets * make encoding in linked-block an attribute, and use it on secret lists * egp endpoints are enterprise-only, so include 'enterprise' text in the test * fix routing test and exclude single quote from encoding tests * encode cli string before tokenizing * encode auth_path for use with urlFor * add test for single quote via UI input instead of web cli
48 lines
1.2 KiB
JavaScript
48 lines
1.2 KiB
JavaScript
import { inject as service } from '@ember/service';
|
|
import Component from '@ember/component';
|
|
import hbs from 'htmlbars-inline-precompile';
|
|
import { encodePath } from 'vault/utils/path-encoding-helpers';
|
|
|
|
let LinkedBlockComponent = Component.extend({
|
|
router: service(),
|
|
|
|
layout: hbs`{{yield}}`,
|
|
|
|
classNames: 'linked-block',
|
|
|
|
queryParams: null,
|
|
|
|
encode: false,
|
|
|
|
click(event) {
|
|
const $target = this.$(event.target);
|
|
const isAnchorOrButton =
|
|
$target.is('a') ||
|
|
$target.is('button') ||
|
|
$target.closest('button', event.currentTarget).length > 0 ||
|
|
$target.closest('a', event.currentTarget).length > 0;
|
|
if (!isAnchorOrButton) {
|
|
let params = this.get('params');
|
|
if (this.encode) {
|
|
params = params.map((param, index) => {
|
|
if (index === 0 || typeof param !== 'string') {
|
|
return param;
|
|
}
|
|
return encodePath(param);
|
|
});
|
|
}
|
|
const queryParams = this.get('queryParams');
|
|
if (queryParams) {
|
|
params.push({ queryParams });
|
|
}
|
|
this.get('router').transitionTo(...params);
|
|
}
|
|
},
|
|
});
|
|
|
|
LinkedBlockComponent.reopenClass({
|
|
positionalParams: 'params',
|
|
});
|
|
|
|
export default LinkedBlockComponent;
|