1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-12-22 16:29:09 +01:00

[AC-1435] Copy updates for Single Organization policy prerequisite for Account Recovery policy (#5774)

* [AC-1435] Update copy/formatting on account recovery policy dialog

* [AC-1435] Cleanup account recovery dialog component

* [AC-1435] Update AccountRecovery policy description

* [AC-1435] Update Tde option description to include notice for Single Org policy

* fix: remove extra hyphen from help link, refs AC-1435

---------

Co-authored-by: Vincent Salucci <vincesalucci21@gmail.com>
This commit is contained in:
Shane Melton 2023-07-18 08:00:43 -07:00 committed by GitHub
parent 7aad24727d
commit 9d8f52ef6a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 75 additions and 91 deletions

View File

@ -1,40 +1,23 @@
<app-callout type="info" *ngIf="showKeyConnectorInfo"> <bit-callout type="info" *ngIf="showKeyConnectorInfo">
{{ "keyConnectorPolicyRestriction" | i18n }} {{ "keyConnectorPolicyRestriction" | i18n }}
</app-callout> </bit-callout>
<app-callout type="warning"> <bit-callout type="success" [title]="'prerequisite' | i18n" icon="bwi-lightbulb">
{{ "resetPasswordPolicyWarning" | i18n }} {{ "accountRecoverySingleOrgRequirementDesc" | i18n }}
</app-callout> </bit-callout>
<div class="form-group"> <bit-callout type="warning">
<div class="form-check"> {{ "accountRecoveryPolicyWarning" | i18n }}
<input </bit-callout>
class="form-check-input"
type="checkbox"
id="enabled"
[formControl]="enabled"
name="Enabled"
/>
<label class="form-check-label" for="enabled">{{ "turnOn" | i18n }}</label>
</div>
</div>
<div [formGroup]="data"> <bit-form-control class="!tw-mb-1">
<h3 class="mt-4">{{ "resetPasswordPolicyAutoEnroll" | i18n }}</h3> <input type="checkbox" bitCheckbox [formControl]="enabled" id="enabled" />
<p>{{ "resetPasswordPolicyAutoEnrollDescription" | i18n }}</p> <bit-label>{{ "turnOn" | i18n }}</bit-label>
<app-callout type="warning"> </bit-form-control>
{{ "resetPasswordPolicyAutoEnrollWarning" | i18n }}
</app-callout> <ng-container [formGroup]="data">
<div class="form-check"> <bit-form-control class="!tw-mb-1">
<input <input type="checkbox" bitCheckbox formControlName="autoEnrollEnabled" id="autoEnrollEnabled" />
class="form-check-input" <bit-label>{{ "resetPasswordPolicyAutoEnrollCheckbox" | i18n }}</bit-label>
type="checkbox" </bit-form-control>
id="autoEnrollEnabled" </ng-container>
name="AutoEnrollEnabled"
formControlName="autoEnrollEnabled"
/>
<label class="form-check-label" for="autoEnrollEnabled">
{{ "resetPasswordPolicyAutoEnrollCheckbox" | i18n }}
</label>
</div>
</div>

View File

@ -1,5 +1,5 @@
import { Component } from "@angular/core"; import { Component } from "@angular/core";
import { UntypedFormBuilder } from "@angular/forms"; import { FormBuilder } from "@angular/forms";
import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction";
import { PolicyType } from "@bitwarden/common/admin-console/enums"; import { PolicyType } from "@bitwarden/common/admin-console/enums";
@ -9,7 +9,7 @@ import { BasePolicy, BasePolicyComponent } from "./base-policy.component";
export class ResetPasswordPolicy extends BasePolicy { export class ResetPasswordPolicy extends BasePolicy {
name = "accountRecoveryPolicy"; name = "accountRecoveryPolicy";
description = "accountRecoveryPolicyDescription"; description = "accountRecoveryPolicyDesc";
type = PolicyType.ResetPassword; type = PolicyType.ResetPassword;
component = ResetPasswordPolicyComponent; component = ResetPasswordPolicyComponent;
@ -26,14 +26,9 @@ export class ResetPasswordPolicyComponent extends BasePolicyComponent {
data = this.formBuilder.group({ data = this.formBuilder.group({
autoEnrollEnabled: false, autoEnrollEnabled: false,
}); });
defaultTypes: { name: string; value: string }[];
showKeyConnectorInfo = false; showKeyConnectorInfo = false;
constructor( constructor(private formBuilder: FormBuilder, private organizationService: OrganizationService) {
private formBuilder: UntypedFormBuilder,
private organizationService: OrganizationService
) {
super(); super();
} }

View File

@ -404,8 +404,7 @@
"viewItem": { "viewItem": {
"message": "View item" "message": "View item"
}, },
"new": "new": {
{
"message": "New", "message": "New",
"description": "for adding new items" "description": "for adding new items"
}, },
@ -4595,21 +4594,18 @@
"accountRecoveryPolicy": { "accountRecoveryPolicy": {
"message": "Account recovery administration" "message": "Account recovery administration"
}, },
"accountRecoveryPolicyDescription": { "accountRecoveryPolicyDesc": {
"message": "Recover member accounts when master password or trusted devices are forgotten or lost. The recovery processes is based on the account encryption method." "message": "Based on the encryption method, recover accounts when master passwords or trusted devices are forgotten or lost."
}, },
"resetPasswordPolicyWarning": { "accountRecoveryPolicyWarning": {
"message": "Members in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." "message": "Existing accounts with master passwords will require members to self-enroll before administrators can recover their accounts. Automatic enrollment will turn on account recovery for new members."
},
"accountRecoverySingleOrgRequirementDesc": {
"message": "The single organization Enterprise policy must be turned on before activating this policy."
}, },
"resetPasswordPolicyAutoEnroll": { "resetPasswordPolicyAutoEnroll": {
"message": "Automatic enrollment" "message": "Automatic enrollment"
}, },
"resetPasswordPolicyAutoEnrollDescription": {
"message": "All members will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw."
},
"resetPasswordPolicyAutoEnrollWarning": {
"message": "Members already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password."
},
"resetPasswordPolicyAutoEnrollCheckbox": { "resetPasswordPolicyAutoEnrollCheckbox": {
"message": "Require new members to be enrolled automatically" "message": "Require new members to be enrolled automatically"
}, },
@ -5225,8 +5221,8 @@
"message": "Use the", "message": "Use the",
"description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Use the require single-sign-on authentication policy to require all members to log in with SSO.'" "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Use the require single-sign-on authentication policy to require all members to log in with SSO.'"
}, },
"ssoPolicyHelpLink": { "ssoPolicyHelpAnchor": {
"message": "require single-sign-on authentication policy", "message": "require single sign-on authentication policy",
"description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Use the require single-sign-on authentication policy to require all members to log in with SSO.'" "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Use the require single-sign-on authentication policy to require all members to log in with SSO.'"
}, },
"ssoPolicyHelpEnd": { "ssoPolicyHelpEnd": {
@ -5855,10 +5851,10 @@
"message": "Delete secrets", "message": "Delete secrets",
"description": "The action to delete multiple secrets from the system." "description": "The action to delete multiple secrets from the system."
}, },
"hardDeleteSecret":{ "hardDeleteSecret": {
"message": "Permanently delete secret" "message": "Permanently delete secret"
}, },
"hardDeleteSecrets":{ "hardDeleteSecrets": {
"message": "Permanently delete secrets" "message": "Permanently delete secrets"
}, },
"secretProjectAssociationDescription": { "secretProjectAssociationDescription": {
@ -5937,7 +5933,7 @@
"message": "To get started, add a new secret or import secrets.", "message": "To get started, add a new secret or import secrets.",
"description": "Message to encourage the user to start adding secrets." "description": "Message to encourage the user to start adding secrets."
}, },
"secretsTrashNoItemsMessage":{ "secretsTrashNoItemsMessage": {
"message": "There are no secrets in the trash." "message": "There are no secrets in the trash."
}, },
"serviceAccountsNoItemsMessage": { "serviceAccountsNoItemsMessage": {
@ -5973,10 +5969,10 @@
} }
} }
}, },
"deleteServiceAccountsDialogMessage":{ "deleteServiceAccountsDialogMessage": {
"message": "Deleting service accounts is permanent and irreversible." "message": "Deleting service accounts is permanent and irreversible."
}, },
"deleteServiceAccountsConfirmMessage":{ "deleteServiceAccountsConfirmMessage": {
"message": "Delete $COUNT$ service accounts", "message": "Delete $COUNT$ service accounts",
"placeholders": { "placeholders": {
"count": { "count": {
@ -5985,19 +5981,19 @@
} }
} }
}, },
"deleteServiceAccountToast":{ "deleteServiceAccountToast": {
"message": "Service account deleted" "message": "Service account deleted"
}, },
"deleteServiceAccountsToast":{ "deleteServiceAccountsToast": {
"message": "Service accounts deleted" "message": "Service accounts deleted"
}, },
"searchServiceAccounts": { "searchServiceAccounts": {
"message": "Search service accounts", "message": "Search service accounts",
"description": "Placeholder text for searching service accounts." "description": "Placeholder text for searching service accounts."
}, },
"editServiceAccount":{ "editServiceAccount": {
"message":"Edit service account", "message": "Edit service account",
"description" : "Title for editing a service account." "description": "Title for editing a service account."
}, },
"addProject": { "addProject": {
"message": "Add project", "message": "Add project",
@ -6037,8 +6033,8 @@
"hardDeleteSecretsConfirmation": { "hardDeleteSecretsConfirmation": {
"message": "Are you sure you want to permanently delete these secrets?" "message": "Are you sure you want to permanently delete these secrets?"
}, },
"hardDeletesSuccessToast":{ "hardDeletesSuccessToast": {
"message":"Secrets permanently deleted" "message": "Secrets permanently deleted"
}, },
"smAccess": { "smAccess": {
"message": "Access", "message": "Access",
@ -6140,8 +6136,8 @@
"message": "Secret sent to trash", "message": "Secret sent to trash",
"description": "Notification to be displayed when a secret is successfully sent to the trash." "description": "Notification to be displayed when a secret is successfully sent to the trash."
}, },
"hardDeleteSuccessToast":{ "hardDeleteSuccessToast": {
"message":"Secret permanently deleted" "message": "Secret permanently deleted"
}, },
"accessTokens": { "accessTokens": {
"message": "Access tokens", "message": "Access tokens",
@ -6832,19 +6828,27 @@
"trustedDeviceEncryption": { "trustedDeviceEncryption": {
"message": "Trusted device encryption" "message": "Trusted device encryption"
}, },
"memberDecryptionTdeDescriptionStart": { "memberDecryptionTdeDescriptionPartOne": {
"message": "Once authenticated, members will decrypt vault data using a key stored on their device. The", "message": "Once authenticated, members will decrypt vault data using a key stored on their device. The",
"description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Once authenticated, members will decrypt vault data using a key stored on their device. The account recovery administration policy with automatic enrollment will turn on when this option is used.'" "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Once authenticated, members will decrypt vault data using a key stored on their device. The single organization policy and account recovery administration policy with automatic enrollment will turn on when this option is used.'"
}, },
"memberDecryptionTdeDescriptionLink": { "memberDecryptionTdeDescriptionLinkOne": {
"message": "account recovery administration policy", "message": "single organization",
"description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Once authenticated, members will decrypt vault data using a key stored on their device. The account recovery administration policy with automatic enrollment will turn on when this option is used.'" "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Once authenticated, members will decrypt vault data using a key stored on their device. The single organization policy and account recovery administration policy with automatic enrollment will turn on when this option is used.'"
}, },
"memberDecryptionTdeDescriptionEnd": { "memberDecryptionTdeDescriptionPartTwo": {
"message": "with automatic enrollment will turn on when this option is used.", "message": "policy and ",
"description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Once authenticated, members will decrypt vault data using a key stored on their device. The master password reset policy with automatic enrollment will turn on when this option is used.'" "description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Once authenticated, members will decrypt vault data using a key stored on their device. The single organization policy and account recovery administration policy with automatic enrollment will turn on when this option is used.'"
}, },
"notFound":{ "memberDecryptionTdeDescriptionLinkTwo": {
"message": "account recovery administration",
"description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Once authenticated, members will decrypt vault data using a key stored on their device. The single organization policy and account recovery administration policy with automatic enrollment will turn on when this option is used.'"
},
"memberDecryptionTdeDescriptionPartThree": {
"message": "policy with automatic enrollment will turn on when this option is used.",
"description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'Once authenticated, members will decrypt vault data using a key stored on their device. The single organization policy and account recovery administration policy with automatic enrollment will turn on when this option is used.'"
},
"notFound": {
"message": "$RESOURCE$ not found", "message": "$RESOURCE$ not found",
"placeholders": { "placeholders": {
"resource": { "resource": {

View File

@ -14,7 +14,7 @@
<form [formGroup]="ssoConfigForm" [bitSubmit]="submit" *ngIf="!loading"> <form [formGroup]="ssoConfigForm" [bitSubmit]="submit" *ngIf="!loading">
<p> <p>
{{ "ssoPolicyHelpStart" | i18n }} {{ "ssoPolicyHelpStart" | i18n }}
<a routerLink="../policies">{{ "ssoPolicyHelpLink" | i18n }}</a> <a routerLink="../policies">{{ "ssoPolicyHelpAnchor" | i18n }}</a>
{{ "ssoPolicyHelpEnd" | i18n }} {{ "ssoPolicyHelpEnd" | i18n }}
<br /> <br />
</p> </p>
@ -81,9 +81,11 @@
{{ "trustedDeviceEncryption" | i18n }} {{ "trustedDeviceEncryption" | i18n }}
</bit-label> </bit-label>
<bit-hint> <bit-hint>
{{ "memberDecryptionTdeDescriptionStart" | i18n }} {{ "memberDecryptionTdeDescriptionPartOne" | i18n }}
<a routerLink="../policies">{{ "memberDecryptionTdeDescriptionLink" | i18n }}</a> <a routerLink="../policies">{{ "memberDecryptionTdeDescriptionLinkOne" | i18n }}</a>
{{ "memberDecryptionTdeDescriptionEnd" | i18n }} {{ "memberDecryptionTdeDescriptionPartTwo" | i18n }}
<a routerLink="../policies">{{ "memberDecryptionTdeDescriptionLinkTwo" | i18n }}</a>
{{ "memberDecryptionTdeDescriptionPartThree" | i18n }}
</bit-hint> </bit-hint>
</bit-radio-button> </bit-radio-button>
</bit-radio-group> </bit-radio-group>