Merge pull request #8413 from hashicorp/b-ui/namespaces-after-token
UI: Reset the system and refetch namespaces with every token change
This commit is contained in:
commit
67d2ab73af
|
@ -3,6 +3,8 @@
|
||||||
BUG FIXES:
|
BUG FIXES:
|
||||||
|
|
||||||
* ui: Fixed order of column headers in client allocations table. [[GH-8409](https://github.com/hashicorp/nomad/pull/8409)]
|
* ui: Fixed order of column headers in client allocations table. [[GH-8409](https://github.com/hashicorp/nomad/pull/8409)]
|
||||||
|
* ui: Fixed stale namespaces after changing acl tokens. [[GH-8413](https://github.com/hashicorp/nomad/issues/8413)]
|
||||||
|
* ui: Fixed missing namespace query param after changing acl tokens [[GH-8413](https://github.com/hashicorp/nomad/issues/8413)]
|
||||||
* vault: Fixed a bug where vault identity policies not considered in permissions check [[GH-7732](https://github.com/hashicorp/nomad/issues/7732)]
|
* vault: Fixed a bug where vault identity policies not considered in permissions check [[GH-7732](https://github.com/hashicorp/nomad/issues/7732)]
|
||||||
|
|
||||||
## 0.12.0 (July 9, 2020)
|
## 0.12.0 (July 9, 2020)
|
||||||
|
|
|
@ -31,6 +31,8 @@ export default class Tokens extends Controller {
|
||||||
tokenIsValid: false,
|
tokenIsValid: false,
|
||||||
tokenIsInvalid: false,
|
tokenIsInvalid: false,
|
||||||
});
|
});
|
||||||
|
// Clear out all data to ensure only data the anonymous token is privileged to see is shown
|
||||||
|
this.system.reset();
|
||||||
this.resetStore();
|
this.resetStore();
|
||||||
this.token.reset();
|
this.token.reset();
|
||||||
}
|
}
|
||||||
|
@ -44,8 +46,7 @@ export default class Tokens extends Controller {
|
||||||
|
|
||||||
TokenAdapter.findSelf().then(
|
TokenAdapter.findSelf().then(
|
||||||
() => {
|
() => {
|
||||||
// Clear out all data to ensure only data the new token is privileged to
|
// Clear out all data to ensure only data the new token is privileged to see is shown
|
||||||
// see is shown
|
|
||||||
this.system.reset();
|
this.system.reset();
|
||||||
this.resetStore();
|
this.resetStore();
|
||||||
|
|
||||||
|
|
|
@ -128,5 +128,6 @@ export default class SystemService extends Service {
|
||||||
|
|
||||||
reset() {
|
reset() {
|
||||||
this.set('activeNamespace', null);
|
this.set('activeNamespace', null);
|
||||||
|
this.notifyPropertyChange('namespaces');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<p>Tokens are stored client-side in <a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage">local storage</a>. This will persist your token across sessions. You can manually clear your token here.</p>
|
<p>Tokens are stored client-side in <a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage">local storage</a>. This will persist your token across sessions. You can manually clear your token here.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="column is-centered is-minimum">
|
<div class="column is-centered is-minimum">
|
||||||
<button class="button is-info" {{action "clearTokenProperties"}} type="button">Clear Token</button>
|
<button data-test-token-clear class="button is-info" {{action "clearTokenProperties"}} type="button">Clear Token</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -141,6 +141,23 @@ module('Acceptance | tokens', function(hooks) {
|
||||||
assert.notOk(find('[data-test-job-row]'), 'No jobs found');
|
assert.notOk(find('[data-test-job-row]'), 'No jobs found');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('when namespaces are enabled, setting or clearing a token refetches namespaces available with new permissions', async function(assert) {
|
||||||
|
const { secretId } = clientToken;
|
||||||
|
|
||||||
|
server.createList('namespace', 2);
|
||||||
|
await Tokens.visit();
|
||||||
|
|
||||||
|
const requests = server.pretender.handledRequests;
|
||||||
|
|
||||||
|
assert.equal(requests.filter(req => req.url === '/v1/namespaces').length, 1);
|
||||||
|
|
||||||
|
await Tokens.secret(secretId).submit();
|
||||||
|
assert.equal(requests.filter(req => req.url === '/v1/namespaces').length, 2);
|
||||||
|
|
||||||
|
await Tokens.clear();
|
||||||
|
assert.equal(requests.filter(req => req.url === '/v1/namespaces').length, 3);
|
||||||
|
});
|
||||||
|
|
||||||
function getHeader({ requestHeaders }, name) {
|
function getHeader({ requestHeaders }, name) {
|
||||||
// Headers are case-insensitive, but object property look up is not
|
// Headers are case-insensitive, but object property look up is not
|
||||||
return (
|
return (
|
||||||
|
|
|
@ -13,6 +13,7 @@ export default create({
|
||||||
|
|
||||||
secret: fillable('[data-test-token-secret]'),
|
secret: fillable('[data-test-token-secret]'),
|
||||||
submit: clickable('[data-test-token-submit]'),
|
submit: clickable('[data-test-token-submit]'),
|
||||||
|
clear: clickable('[data-test-token-clear]'),
|
||||||
|
|
||||||
errorMessage: isVisible('[data-test-token-error]'),
|
errorMessage: isVisible('[data-test-token-error]'),
|
||||||
successMessage: isVisible('[data-test-token-success]'),
|
successMessage: isVisible('[data-test-token-success]'),
|
||||||
|
|
Loading…
Reference in New Issue