bitwarden-browser/apps/web/src/app/billing/organizations/organization-subscription-s...

135 lines
4.4 KiB
HTML

<app-header></app-header>
<bit-container>
<ng-container *ngIf="!firstLoaded && loading">
<i class="bwi bwi-spinner bwi-spin text-muted" title="{{ 'loading' | i18n }}"></i>
<span class="sr-only">{{ "loading" | i18n }}</span>
</ng-container>
<app-org-subscription-hidden
*ngIf="firstLoaded && !userOrg.canViewSubscription"
[providerName]="userOrg.providerName"
></app-org-subscription-hidden>
<ng-container *ngIf="subscription && firstLoaded">
<dl>
<dt>{{ "billingPlan" | i18n }}</dt>
<dd>{{ subscription.planName }}</dd>
<ng-container *ngIf="billingSyncSetUp">
<dt>{{ "lastLicenseSync" | i18n }}</dt>
<dd>
{{ lastLicenseSync != null ? (lastLicenseSync | date: "medium") : ("never" | i18n) }}
</dd>
</ng-container>
<dt>
<span [ngClass]="{ 'tw-text-danger': showAsExpired }">{{
"subscriptionExpiration" | i18n
}}</span>
<a
href="https://bitwarden.com/help/licensing-on-premise/#update-organization-license"
target="_blank"
[appA11yTitle]="'licensePaidFeaturesHelp' | i18n"
rel="noreferrer"
>
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
<span class="sr-only">{{ "licensePaidFeaturesHelp" | i18n }}</span>
</a>
</dt>
<dd *ngIf="subscription.hasExpiration" [ngClass]="{ 'tw-text-danger': showAsExpired }">
{{
(subscription.hasSeparateGracePeriod
? subscription.expirationWithoutGracePeriod
: subscription.expirationWithGracePeriod
) | date: "mediumDate"
}}
<div
*ngIf="subscription.hasSeparateGracePeriod && !subscription.isInTrial"
class="tw-text-muted"
>
{{
"selfHostGracePeriodHelp"
| i18n: (subscription.expirationWithGracePeriod | date: "mediumDate")
}}
</div>
</dd>
<dd *ngIf="!subscription.hasExpiration">{{ "neverExpires" | i18n }}</dd>
</dl>
<a
bitButton
buttonType="secondary"
href="{{ this.cloudWebVaultUrl }}"
target="_blank"
rel="noreferrer"
>
{{ "launchCloudSubscription" | i18n }}
</a>
<form [formGroup]="form">
<bit-radio-group formControlName="updateMethod">
<h2 class="mt-5">
{{ "licenseAndBillingManagement" | i18n }}
</h2>
<bit-radio-button
id="automatic-sync"
[value]="licenseOptions.SYNC"
[disabled]="disableLicenseSyncControl"
class="tw-block"
>
<bit-label
>{{ "automaticSync" | i18n }}
<a
href="https://bitwarden.com/help/families-for-enterprise-self-hosted/"
target="_blank"
rel="noreferrer"
>
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
<span class="sr-only">{{ "billingSyncHelp" | i18n }}</span>
</a>
</bit-label>
<bit-hint>
{{ "billingSyncDesc" | i18n }}
</bit-hint>
</bit-radio-button>
<ng-container *ngIf="updateMethod === licenseOptions.SYNC">
<button
bitButton
buttonType="secondary"
type="button"
(click)="manageBillingSyncSelfHosted()"
>
{{ "manageBillingSync" | i18n }}
</button>
<button
bitButton
buttonType="primary"
type="button"
[bitAction]="syncLicense"
[disabled]="!billingSyncEnabled"
>
{{ "syncLicense" | i18n }}
</button>
</ng-container>
<bit-radio-button
id="manual-upload"
[value]="licenseOptions.UPLOAD"
class="tw-mt-6 tw-block"
>
<bit-label>{{ "manualUpload" | i18n }}</bit-label>
<bit-hint>
{{ "manualUploadDesc" | i18n }}
</bit-hint>
</bit-radio-button>
<ng-container *ngIf="updateMethod === licenseOptions.UPLOAD">
<h3 class="tw-font-semibold">{{ "uploadLicense" | i18n }}</h3>
<app-update-license
[organizationId]="organizationId"
[showCancel]="false"
(onUpdated)="licenseUploaded()"
></app-update-license>
</ng-container>
</bit-radio-group>
</form>
</ng-container>
</bit-container>