diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts
index b0f5d7f3dab..4e310354699 100644
--- a/apps/browser/src/background/main.background.ts
+++ b/apps/browser/src/background/main.background.ts
@@ -9,7 +9,7 @@ import { SettingsService as SettingsServiceAbstraction } from "@bitwarden/common
import { TotpService as TotpServiceAbstraction } from "@bitwarden/common/abstractions/totp.service";
import { VaultTimeoutService as VaultTimeoutServiceAbstraction } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeout.service";
import { VaultTimeoutSettingsService as VaultTimeoutSettingsServiceAbstraction } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeoutSettings.service";
-import { InternalOrganizationService as InternalOrganizationServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction";
+import { InternalOrganizationServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction";
import { PolicyApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy-api.service.abstraction";
import { InternalPolicyService as InternalPolicyServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction";
import { ProviderService as ProviderServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/provider.service";
diff --git a/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.html b/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.html
index 78841dc74fe..4508b6cd070 100644
--- a/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.html
+++ b/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.html
@@ -87,13 +87,32 @@
{{ "passwordManager" | i18n }} - {{ "freeOrganization" | i18n }} |
{{ "free" | i18n }} |
-
+
| {{ "secretsManager" | i18n }} - {{ "freeOrganization" | i18n }} |
{{ "free" | i18n }} |
+
+ |
+ {{ "secretsManager" | i18n }} -
+ {{ "beta" | i18n }}
+ ({{ "annually" | i18n }}) @
+ {{ 0 | currency : "$" }}
+ {{
+ "betaEnding" | i18n | uppercase
+ }}
+ |
+ {{ 0 | currency : "$" }} /{{ "year" | i18n }} |
+
+
+ {{ smBetaEndedDesc }}
+
diff --git a/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.ts b/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.ts
index df58f31bcd1..f03fb72faf2 100644
--- a/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.ts
+++ b/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.ts
@@ -1,3 +1,4 @@
+import { DatePipe } from "@angular/common";
import { Component, OnDestroy, OnInit } from "@angular/core";
import { ActivatedRoute } from "@angular/router";
import { concatMap, Subject, takeUntil } from "rxjs";
@@ -17,6 +18,7 @@ import { ConfigServiceAbstraction } from "@bitwarden/common/platform/abstraction
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
+import { Utils } from "@bitwarden/common/platform/misc/utils";
import {
BillingSyncApiKeyComponent,
@@ -45,6 +47,9 @@ export class OrganizationSubscriptionCloudComponent implements OnInit, OnDestroy
firstLoaded = false;
loading: boolean;
+ private readonly _smBetaEndingDate = new Date(2023, 7, 25);
+ private readonly _smGracePeriodEndingDate = new Date(2023, 9, 24);
+
private destroy$ = new Subject();
constructor(
@@ -57,7 +62,8 @@ export class OrganizationSubscriptionCloudComponent implements OnInit, OnDestroy
private organizationApiService: OrganizationApiServiceAbstraction,
private route: ActivatedRoute,
private dialogService: DialogServiceAbstraction,
- private configService: ConfigServiceAbstraction
+ private configService: ConfigServiceAbstraction,
+ private datePipe: DatePipe
) {}
async ngOnInit() {
@@ -122,6 +128,7 @@ export class OrganizationSubscriptionCloudComponent implements OnInit, OnDestroy
this.userOrg.useSecretsManager &&
this.subscription != null &&
this.sub.secretsManagerPlan?.hasAdditionalSeatsOption &&
+ !this.sub.secretsManagerBeta &&
!this.subscription.cancelled &&
!this.subscriptionMarkedForCancel;
@@ -256,6 +263,14 @@ export class OrganizationSubscriptionCloudComponent implements OnInit, OnDestroy
);
}
+ get smBetaEndedDesc() {
+ return this.i18nService.translate(
+ "smBetaEndedDesc",
+ this.datePipe.transform(this._smBetaEndingDate),
+ Utils.daysRemaining(this._smGracePeriodEndingDate).toString()
+ );
+ }
+
cancel = async () => {
if (this.loading) {
return;
diff --git a/apps/web/src/app/billing/organizations/secrets-manager/sm-adjust-subscription.component.html b/apps/web/src/app/billing/organizations/secrets-manager/sm-adjust-subscription.component.html
index be882cf66b9..6aece8fe897 100644
--- a/apps/web/src/app/billing/organizations/secrets-manager/sm-adjust-subscription.component.html
+++ b/apps/web/src/app/billing/organizations/secrets-manager/sm-adjust-subscription.component.html
@@ -5,7 +5,7 @@
{{ "total" | i18n }}:
{{ formGroup.value.seatCount || 0 }} × {{ options.seatPrice | currency : "$" }} =
- {{ seatTotal | currency : "$" }} / {{ options.interval | i18n }}
+ {{ seatTotalCost | currency : "$" }} / {{ options.interval | i18n }}
@@ -28,7 +28,7 @@
{{ "maxSeatCost" | i18n }}:
{{ formGroup.value.maxAutoscaleSeats || 0 }} ×
- {{ options.seatPrice | currency : "$" }} = {{ maxSeatTotal | currency : "$" }} /
+ {{ options.seatPrice | currency : "$" }} = {{ maxSeatTotalCost | currency : "$" }} /
{{ options.interval | i18n }}
@@ -44,16 +44,14 @@
/>
- {{
- "additionalServiceAccountsDesc"
- | i18n : options.baseServiceAccountCount : (monthlyServiceAccountPrice | currency : "$")
- }}
+ {{ "includedServiceAccounts" | i18n : options.baseServiceAccountCount }}
+ {{ "addAdditionalServiceAccounts" | i18n : (monthlyServiceAccountPrice | currency : "$") }}
{{ "total" | i18n }}:
{{ formGroup.value.additionalServiceAccounts || 0 }} ×
{{ options.additionalServiceAccountPrice | currency : "$" }} =
- {{ serviceAccountTotal | currency : "$" }} / {{ options.interval | i18n }}
+ {{ serviceAccountTotalCost | currency : "$" }} / {{ options.interval | i18n }}
@@ -80,10 +78,13 @@
[min]="formGroup.value.additionalServiceAccounts"
/>
+
+ {{ "includedServiceAccounts" | i18n : options.baseServiceAccountCount }}
+
{{ "maxServiceAccountCost" | i18n }}:
- {{ formGroup.value.maxAutoscaleServiceAccounts || 0 }} ×
+ {{ maxAdditionalServiceAccounts }} ×
{{ options.additionalServiceAccountPrice | currency : "$" }} =
- {{ maxServiceAccountTotal | currency : "$" }} / {{ options.interval | i18n }}
+ {{ maxServiceAccountTotalCost | currency : "$" }} / {{ options.interval | i18n }}