diff --git a/ui/app/components/clients/date-range.hbs b/ui/app/components/clients/date-range.hbs index 0699385039..f40ce29ca7 100644 --- a/ui/app/components/clients/date-range.hbs +++ b/ui/app/components/clients/date-range.hbs @@ -7,9 +7,6 @@
{{! Enterprise should always have a @billingStartTime but as a fallback allow the user to query dates manually }} {{#if (and @billingStartTime this.version.isEnterprise)}} - - {{if this.flags.isHvdManaged "Change data period" "Change billing period"}} - diff --git a/ui/app/components/clients/page-header.hbs b/ui/app/components/clients/page-header.hbs index 33aa3284d4..e2fc407f44 100644 --- a/ui/app/components/clients/page-header.hbs +++ b/ui/app/components/clients/page-header.hbs @@ -9,21 +9,6 @@ @breadcrumbs={{array (hash label="Vault" route="vault.cluster.dashboard" icon="vault") (hash label="Client usage")}} /> - <:subtitle> - {{#if @activityTimestamp}} - Dashboard last updated: - {{date-format @activityTimestamp "MMM d yyyy, h:mm:ss aaa" withTimeZone=true}} - - {{/if}} - <:description> {{#if (and this.version.isEnterprise @billingStartTime)}} {{! Enterprise should always have a @billingStartTime but as a fallback allow the user to query dates manually. }} @@ -56,6 +41,27 @@
{{/if}} + + View the number and source of active Vault clients on the cluster to track license compliance. + + Learn more + + + {{#if @activityTimestamp}} + + Dashboard last updated: + {{date-format @activityTimestamp "MMM d yyyy, h:mm:ss aaa" withTimeZone=true}} + + + {{/if}} <:actions> {{#if this.showExportButton}} diff --git a/ui/app/components/clients/page/counts.hbs b/ui/app/components/clients/page/counts.hbs index bfaca0028b..24ffd4efdd 100644 --- a/ui/app/components/clients/page/counts.hbs +++ b/ui/app/components/clients/page/counts.hbs @@ -2,7 +2,7 @@ Copyright IBM Corp. 2016, 2025 SPDX-License-Identifier: BUSL-1.1 }} -
+
- - This is the dashboard for your overall client count usage. Review Vault's - - client counting documentation - for more information. - - {{#if this.trackingDisabled}} Tracking is disabled diff --git a/ui/app/components/dashboard/vault-version-title.hbs b/ui/app/components/dashboard/vault-version-title.hbs index fe32f375af..cddc05cff7 100644 --- a/ui/app/components/dashboard/vault-version-title.hbs +++ b/ui/app/components/dashboard/vault-version-title.hbs @@ -3,12 +3,16 @@ SPDX-License-Identifier: BUSL-1.1 }} - + <:badges> {{#if @version.isEnterprise}} {{/if}} +
\ No newline at end of file diff --git a/ui/app/components/identity/entity-nav.hbs b/ui/app/components/identity/entity-nav.hbs index 47e855fec9..5b355469d2 100644 --- a/ui/app/components/identity/entity-nav.hbs +++ b/ui/app/components/identity/entity-nav.hbs @@ -3,12 +3,12 @@ SPDX-License-Identifier: BUSL-1.1 }} - + <:breadcrumbs> @@ -17,12 +17,12 @@ - {{#if this.model.meta.total}} + {{#if @model.meta.total}} - + {{/if}} - {{#if (eq this.identityType "entity")}} + {{#if (eq @identityType "entity")}} Merge - {{pluralize this.identityType}} + {{pluralize @identityType}} {{/if}} Create - {{this.identityType}} + {{@identityType}} \ No newline at end of file diff --git a/ui/app/components/identity/entity-nav.js b/ui/app/components/identity/entity-nav.js deleted file mode 100644 index 2b674eb095..0000000000 --- a/ui/app/components/identity/entity-nav.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Copyright IBM Corp. 2016, 2025 - * SPDX-License-Identifier: BUSL-1.1 - */ - -import Component from '@ember/component'; - -export default Component.extend({}); diff --git a/ui/app/components/identity/entity-nav.ts b/ui/app/components/identity/entity-nav.ts new file mode 100644 index 0000000000..62a487bd1c --- /dev/null +++ b/ui/app/components/identity/entity-nav.ts @@ -0,0 +1,23 @@ +/** + * Copyright IBM Corp. 2016, 2025 + * SPDX-License-Identifier: BUSL-1.1 + */ + +import Component from '@glimmer/component'; + +interface Args { + identityType: 'entity' | 'group'; + model: { + meta: { + total: number; + }; + }; +} + +export default class EntityNavComponent extends Component { + get description() { + return this.args.identityType === 'entity' + ? 'Create and manage unique identities for human and non-human identities to serve as the canonical reference ID for policies and metadata.' + : 'Create and name logical collections of entities to simplify policy management and permission scaling across your organization.'; + } +} diff --git a/ui/app/components/license-info.hbs b/ui/app/components/license-info.hbs index 3780ff3850..6026a8ff7d 100644 --- a/ui/app/components/license-info.hbs +++ b/ui/app/components/license-info.hbs @@ -9,6 +9,12 @@ @breadcrumbs={{array (hash label="Vault" route="vault.cluster.dashboard" icon="vault") (hash label="License")}} /> + <:description> + View your Vault Enterprise license ID, status, expiration date, and feature entitlements. + + Learn more + +
diff --git a/ui/app/components/page/methods.hbs b/ui/app/components/page/methods.hbs index 9a011ef6a9..4db2769443 100644 --- a/ui/app/components/page/methods.hbs +++ b/ui/app/components/page/methods.hbs @@ -8,6 +8,12 @@ <:breadcrumbs> + <:description> + Configure authentication methods for accessing Vault. + + Learn more + + <:actions> {{#if this.showIntroButton}} + <:description> + Create logically separated, multi-tenant environments so teams can manage secrets, policies, and authentication + methods independently. + + Learn more + + <:actions> {{#if this.showIntroButton}} + + <:description> + {{this.description}} + + Learn more + + <:actions> {{#if this.showIntroButton}} { this.filter = this.args.filter || ''; } + get description() { + const policyType = this.args.policyType; + if (policyType === PolicyTypes.ACL) { + return 'Define fine-grained rules to explicitly grant or forbid access to specific paths and operations within your cluster. Because Vault is a “default deny” system, if a permission is not granted in a policy, an entity would not have permission.'; + } else if (policyType === PolicyTypes.EGP) { + return 'Use Sentinel to specify policies as code that apply to discrete API paths and enforce organizational compliance standards.'; + } else if (policyType === PolicyTypes.RGP) { + return 'Use Sentinel to specify policies as code that apply to tokens, entities, groups and enforce organizational compliance standards.'; + } + return ''; + } + // Check if the filter exactly matches a policy ID get filterMatchesKey(): boolean { const filter = this.filter; @@ -94,7 +106,7 @@ export default class PagePoliciesComponent extends Component { // Show when it is not in a dismissed state and there are no non-default policies and get showWizard() { - if (this.args.policyType !== 'acl') return false; + if (this.args.policyType !== PolicyTypes.ACL) return false; // Use total instead of filtered total to avoid flashing wizard when filtering with no results return !this.wizard.isDismissed(WIZARD_ID) && this.hasOnlyDefaultPolicies; } @@ -106,9 +118,9 @@ export default class PagePoliciesComponent extends Component { const policyType = this.args.policyType; // Use the appropriate sys endpoint based on policy type - if (policyType === 'egp') { + if (policyType === PolicyTypes.EGP) { await this.api.sys.systemDeletePoliciesEgpName(policyName); - } else if (policyType === 'rgp') { + } else if (policyType === PolicyTypes.RGP) { await this.api.sys.systemDeletePoliciesRgpName(policyName); } else { await this.api.sys.policiesDeleteAclPolicy(policyName); diff --git a/ui/app/components/recovery/page/header.hbs b/ui/app/components/recovery/page/header.hbs deleted file mode 100644 index 5b78b4b196..0000000000 --- a/ui/app/components/recovery/page/header.hbs +++ /dev/null @@ -1,29 +0,0 @@ -{{! - Copyright IBM Corp. 2016, 2025 - SPDX-License-Identifier: BUSL-1.1 -}} - - - <:breadcrumbs> - {{#if @breadcrumbs}} - - {{/if}} - - <:badges> - {{#if this.version.isCommunity}} - - {{/if}} - - <:actions> - {{#if @action}} - - {{/if}} - - \ No newline at end of file diff --git a/ui/app/components/recovery/page/header.ts b/ui/app/components/recovery/page/header.ts deleted file mode 100644 index 277bf9f213..0000000000 --- a/ui/app/components/recovery/page/header.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright IBM Corp. 2016, 2025 - * SPDX-License-Identifier: BUSL-1.1 - */ - -import Component from '@glimmer/component'; -import { service } from '@ember/service'; -import type VersionService from 'vault/services/version'; - -interface Args { - title: string; - subtitle?: string; - action?: unknown; -} - -export default class Header extends Component { - @service declare readonly version: VersionService; -} diff --git a/ui/app/components/recovery/page/snapshots.hbs b/ui/app/components/recovery/page/snapshots.hbs index 5e51de4dca..751d44cc8c 100644 --- a/ui/app/components/recovery/page/snapshots.hbs +++ b/ui/app/components/recovery/page/snapshots.hbs @@ -3,11 +3,22 @@ SPDX-License-Identifier: BUSL-1.1 }} - + + <:breadcrumbs> + + + <:badges> + {{#if @model.showCommunityMessage}} + + {{/if}} + + <:description> + Restore specific secrets from cluster snapshots without impacting the availability of the active Vault cluster. + + Learn more + + + {{#if @model.snapshots.showRaftStorageMessage}} diff --git a/ui/app/components/recovery/page/snapshots/load.hbs b/ui/app/components/recovery/page/snapshots/load.hbs index f8d530c6f4..9fa82dcacc 100644 --- a/ui/app/components/recovery/page/snapshots/load.hbs +++ b/ui/app/components/recovery/page/snapshots/load.hbs @@ -3,7 +3,11 @@ SPDX-License-Identifier: BUSL-1.1 }} - + + <:breadcrumbs> + + + {{#if this.bannerError}}
diff --git a/ui/app/components/recovery/page/snapshots/snapshot-details.hbs b/ui/app/components/recovery/page/snapshots/snapshot-details.hbs index a713e94212..8ab08d0ed5 100644 --- a/ui/app/components/recovery/page/snapshots/snapshot-details.hbs +++ b/ui/app/components/recovery/page/snapshots/snapshot-details.hbs @@ -3,21 +3,29 @@ SPDX-License-Identifier: BUSL-1.1 }} - + + <:breadcrumbs> + + + <:description> + Restore specific secrets from cluster snapshots without impacting the availability of the active Vault cluster. + + Learn more + + + <:actions> + + + - + <:head as |H|> {{#each this.tableColumns as |col|}} diff --git a/ui/app/components/recovery/page/snapshots/snapshot-manage.hbs b/ui/app/components/recovery/page/snapshots/snapshot-manage.hbs index 8a0489b571..a9a76d4e6c 100644 --- a/ui/app/components/recovery/page/snapshots/snapshot-manage.hbs +++ b/ui/app/components/recovery/page/snapshots/snapshot-manage.hbs @@ -3,11 +3,17 @@ SPDX-License-Identifier: BUSL-1.1 }} - + + <:breadcrumbs> + + + <:description> + Restore specific secrets from cluster snapshots without impacting the availability of the active Vault cluster. + + Learn more + + + {{#let @model.snapshot as |snapshot|}} {{/let}} -
- Recover or read data {{#if this.recoveryData}} diff --git a/ui/app/components/seal-action.hbs b/ui/app/components/seal-action.hbs index 1910487459..2494358eca 100644 --- a/ui/app/components/seal-action.hbs +++ b/ui/app/components/seal-action.hbs @@ -3,28 +3,10 @@ SPDX-License-Identifier: BUSL-1.1 }} -
- {{#if this.error}} - - Error - - {{this.error}} - - - {{/if}} -

- Sealing a vault tells the Vault server to stop responding to any access operations until it is unsealed again. A sealed - vault throws away its root key to unlock the data, so it physically is blocked from responding to operations again until - the Vault is unsealed again with the "unseal" command or via the API. -

-
- -
- -
\ No newline at end of file + \ No newline at end of file diff --git a/ui/app/components/seal-action.js b/ui/app/components/seal-action.js deleted file mode 100644 index b59e81c989..0000000000 --- a/ui/app/components/seal-action.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Copyright IBM Corp. 2016, 2025 - * SPDX-License-Identifier: BUSL-1.1 - */ - -import { action } from '@ember/object'; -import Component from '@glimmer/component'; -import { tracked } from '@glimmer/tracking'; -import errorMessage from 'vault/utils/error-message'; - -export default class SealActionComponent extends Component { - @tracked error; - - @action - async handleSeal() { - try { - await this.args.onSeal(); - } catch (e) { - this.error = errorMessage(e, 'Seal attempt failed. Check Vault logs for details.'); - } - } -} diff --git a/ui/app/components/seal-action.ts b/ui/app/components/seal-action.ts new file mode 100644 index 0000000000..bdb2520ba1 --- /dev/null +++ b/ui/app/components/seal-action.ts @@ -0,0 +1,33 @@ +/** + * Copyright IBM Corp. 2016, 2025 + * SPDX-License-Identifier: BUSL-1.1 + */ + +import { action } from '@ember/object'; +import { service } from '@ember/service'; +import Component from '@glimmer/component'; + +import type ApiService from 'vault/services/api'; +import type FlashMessageService from 'vault/services/flash-messages'; + +interface Args { + onSeal: CallableFunction; +} + +export default class SealActionComponent extends Component { + @service declare readonly api: ApiService; + @service declare readonly flashMessages: FlashMessageService; + + @action + async handleSeal() { + try { + await this.args.onSeal(); + } catch (error) { + const message = await this.api.parseError(error, 'Check Vault logs for details.'); + + this.flashMessages.danger(message.message, { + title: 'Seal attempt failed', + }); + } + } +} diff --git a/ui/app/components/secret-engine/list.hbs b/ui/app/components/secret-engine/list.hbs index bc11e87381..7ec23e98d5 100644 --- a/ui/app/components/secret-engine/list.hbs +++ b/ui/app/components/secret-engine/list.hbs @@ -3,14 +3,17 @@ SPDX-License-Identifier: BUSL-1.1 }} - + <:breadcrumbs> + <:description> + View and manage your configured secrets engines in the current cluster, ranging from key value store (kv) to dynamic + database credentials and more. + + Learn more + + <:actions> {{#if this.showIntroButton}} { @service declare readonly api: ApiService; @service declare readonly flashMessages: FlashMessageService; - @service declare readonly namespace: NamespaceService; @service declare readonly router: RouterService; - @service declare readonly version: VersionService; @service declare readonly wizard: WizardService; @tracked engineTypeFilters: Array = []; diff --git a/ui/app/components/tools/hash.hbs b/ui/app/components/tools/hash.hbs index dcb484b7ad..469fdc01f9 100644 --- a/ui/app/components/tools/hash.hbs +++ b/ui/app/components/tools/hash.hbs @@ -3,14 +3,17 @@ SPDX-License-Identifier: BUSL-1.1 }} - + <:breadcrumbs> {{#if this.sum}} -
+
{{else}}
-
+