UI: [VAULT-19783] Set up root token warning modal (#23277)

This commit is contained in:
Kianna
2023-10-11 18:36:59 -07:00
committed by GitHub
parent 1b7b5a1c6e
commit f1554425c3
9 changed files with 23 additions and 10 deletions

3
changelog/23277.txt Normal file
View File

@@ -0,0 +1,3 @@
```release-note:improvement
ui: Add warning message to the namespace picker warning users about the behavior when logging in with a root token.
```

View File

@@ -25,10 +25,4 @@ export default class DashboardVaultVersionTitle extends Component {
? `Vault v${this.version.version.slice(0, this.version.version.indexOf('+'))}`
: `Vault v${this.version.version}`;
}
get namespaceDisplay() {
if (this.namespace.inRootNamespace) return 'root';
const parts = this.namespace.path?.split('/');
return parts[parts.length - 1];
}
}

View File

@@ -2,7 +2,6 @@
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
import { inject as service } from '@ember/service';
import { alias } from '@ember/object/computed';
import Controller, { inject as controller } from '@ember/controller';
@@ -67,6 +66,7 @@ export default Controller.extend({
}
transition.followRedirects().then(() => {
if (isRoot) {
this.auth.set('isRootToken', true);
this.flashMessages.warning(
'You have logged in with a root token. As a security precaution, this root token will not be stored by your browser and you will need to re-authenticate after the window is closed or refreshed.'
);

View File

@@ -36,6 +36,7 @@ export default Service.extend({
expirationCalcTS: null,
isRenewing: false,
mfaErrors: null,
isRootToken: false,
get tokenExpired() {
const expiration = this.tokenExpirationDate;

View File

@@ -6,6 +6,7 @@
import { alias, equal } from '@ember/object/computed';
import Service, { inject as service } from '@ember/service';
import { task } from 'ember-concurrency';
import { computed } from '@ember/object';
const ROOT_NAMESPACE = '';
export default Service.extend({
@@ -20,6 +21,13 @@ export default Service.extend({
inRootNamespace: equal('path', ROOT_NAMESPACE),
currentNamespace: computed('inRootNamespace', 'path', function () {
if (this.inRootNamespace) return 'root';
const parts = this.path?.split('/');
return parts[parts.length - 1];
}),
setNamespace(path) {
if (!path) {
this.set('path', '');

View File

@@ -3,7 +3,7 @@
<h1 class="title is-3" data-test-dashboard-card-header="Vault version">
{{this.versionHeader}}
{{#if @version.isEnterprise}}
<Hds::Badge @text={{this.namespaceDisplay}} @icon="org" data-test-badge-namespace />
<Hds::Badge @text={{this.namespace.currentNamespace}} @icon="org" data-test-badge-namespace />
{{/if}}
</h1>
</p.levelLeft>

View File

@@ -2,7 +2,6 @@
Copyright (c) HashiCorp, Inc.
SPDX-License-Identifier: BUSL-1.1
~}}
<ExternalLink
@href={{this.namespaceLink}}
@sameTab={{true}}

View File

@@ -32,6 +32,15 @@
</div>
</div>
<div class="namespace-list {{if this.isAnimating 'animated-list'}}">
{{#if this.auth.isRootToken}}
<div class="has-left-margin-s has-right-margin-s">
<span><Icon @name="alert-triangle-fill" class="has-text-highlight" /></span>
<span class="is-size-8 has-text-semibold">
You are logged in with a root token and will have to reauthenticate when switching namespaces.
</span>
</div>
{{/if}}
<div class="is-mobile level-left">
{{#unless this.isUserRootNamespace}}
<NamespaceLink

View File

@@ -2,7 +2,6 @@
Copyright (c) HashiCorp, Inc.
SPDX-License-Identifier: BUSL-1.1
~}}
<Sidebar::Nav::Cluster />
{{! Only show license banners for Enterprise }}
{{#if this.activeCluster.version.isEnterprise}}