mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 10:37:56 +00:00 
			
		
		
		
	UI: [VAULT-19783] Set up root token warning modal (#23277)
This commit is contained in:
		
							
								
								
									
										3
									
								
								changelog/23277.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								changelog/23277.txt
									
									
									
									
									
										Normal 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. | ||||
| ``` | ||||
| @@ -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]; | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -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.' | ||||
|         ); | ||||
|   | ||||
| @@ -36,6 +36,7 @@ export default Service.extend({ | ||||
|   expirationCalcTS: null, | ||||
|   isRenewing: false, | ||||
|   mfaErrors: null, | ||||
|   isRootToken: false, | ||||
|  | ||||
|   get tokenExpired() { | ||||
|     const expiration = this.tokenExpirationDate; | ||||
|   | ||||
| @@ -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', ''); | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -2,7 +2,6 @@ | ||||
|   Copyright (c) HashiCorp, Inc. | ||||
|   SPDX-License-Identifier: BUSL-1.1 | ||||
| ~}} | ||||
|  | ||||
| <ExternalLink | ||||
|   @href={{this.namespaceLink}} | ||||
|   @sameTab={{true}} | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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}} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Kianna
					Kianna