mirror of
https://github.com/bitwarden/browser
synced 2026-02-23 16:13:21 +00:00
Merge branch 'main' into PM-19741
This commit is contained in:
@@ -21,6 +21,8 @@ export const RedirectFocusDirection = {
|
|||||||
Next: "next",
|
Next: "next",
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum InlineMenuFillType {
|
export enum InlineMenuFillType {
|
||||||
AccountCreationUsername = 5,
|
AccountCreationUsername = 5,
|
||||||
PasswordGeneration = 6,
|
PasswordGeneration = 6,
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import {
|
|||||||
AssertCredentialResult,
|
AssertCredentialResult,
|
||||||
} from "@bitwarden/common/platform/abstractions/fido2/fido2-client.service.abstraction";
|
} from "@bitwarden/common/platform/abstractions/fido2/fido2-client.service.abstraction";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum MessageType {
|
export enum MessageType {
|
||||||
CredentialCreationRequest,
|
CredentialCreationRequest,
|
||||||
CredentialCreationResponse,
|
CredentialCreationResponse,
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ import { PopOutComponent } from "../../../platform/popup/components/pop-out.comp
|
|||||||
import { PopupHeaderComponent } from "../../../platform/popup/layout/popup-header.component";
|
import { PopupHeaderComponent } from "../../../platform/popup/layout/popup-header.component";
|
||||||
import { PopupPageComponent } from "../../../platform/popup/layout/popup-page.component";
|
import { PopupPageComponent } from "../../../platform/popup/layout/popup-page.component";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum SendState {
|
export enum SendState {
|
||||||
Empty,
|
Empty,
|
||||||
NoResults,
|
NoResults,
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import {
|
|||||||
import { I18nPipe } from "@bitwarden/ui-common";
|
import { I18nPipe } from "@bitwarden/ui-common";
|
||||||
import { DarkImageSourceDirective, VaultCarouselModule } from "@bitwarden/vault";
|
import { DarkImageSourceDirective, VaultCarouselModule } from "@bitwarden/vault";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum AtRiskCarouselDialogResult {
|
export enum AtRiskCarouselDialogResult {
|
||||||
Dismissed = "dismissed",
|
Dismissed = "dismissed",
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ export interface GeneratorDialogResult {
|
|||||||
generatedValue?: string;
|
generatedValue?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum GeneratorDialogAction {
|
export enum GeneratorDialogAction {
|
||||||
Selected = "selected",
|
Selected = "selected",
|
||||||
Canceled = "canceled",
|
Canceled = "canceled",
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ import { VaultPageService } from "./vault-page.service";
|
|||||||
|
|
||||||
import { AutofillVaultListItemsComponent, VaultListItemsContainerComponent } from ".";
|
import { AutofillVaultListItemsComponent, VaultListItemsContainerComponent } from ".";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
enum VaultState {
|
enum VaultState {
|
||||||
Empty,
|
Empty,
|
||||||
NoResults,
|
NoResults,
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ const DEFAULT_MESSAGE_TIMEOUT = 10 * 1000; // 10 seconds
|
|||||||
|
|
||||||
export type MessageHandler = (MessageCommon) => void;
|
export type MessageHandler = (MessageCommon) => void;
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum IPCConnectionState {
|
export enum IPCConnectionState {
|
||||||
Disconnected = "disconnected",
|
Disconnected = "disconnected",
|
||||||
Connecting = "connecting",
|
Connecting = "connecting",
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ import { SearchBarService } from "../../layout/search/search-bar.service";
|
|||||||
|
|
||||||
import { AddEditComponent } from "./add-edit.component";
|
import { AddEditComponent } from "./add-edit.component";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
enum Action {
|
enum Action {
|
||||||
None = "",
|
None = "",
|
||||||
Add = "add",
|
Add = "add",
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum SshAgentPromptType {
|
export enum SshAgentPromptType {
|
||||||
Always = "always",
|
Always = "always",
|
||||||
Never = "never",
|
Never = "never",
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum BiometricAction {
|
export enum BiometricAction {
|
||||||
Authenticate = "authenticate",
|
Authenticate = "authenticate",
|
||||||
GetStatus = "status",
|
GetStatus = "status",
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ export interface CredentialGeneratorDialogResult {
|
|||||||
generatedValue?: string;
|
generatedValue?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum CredentialGeneratorDialogAction {
|
export enum CredentialGeneratorDialogAction {
|
||||||
Selected = "selected",
|
Selected = "selected",
|
||||||
Canceled = "canceled",
|
Canceled = "canceled",
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ export interface BulkCollectionsDialogParams {
|
|||||||
collections: CollectionView[];
|
collections: CollectionView[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum BulkCollectionsDialogResult {
|
export enum BulkCollectionsDialogResult {
|
||||||
Saved = "saved",
|
Saved = "saved",
|
||||||
Canceled = "canceled",
|
Canceled = "canceled",
|
||||||
|
|||||||
@@ -132,6 +132,8 @@ import { VaultHeaderComponent } from "./vault-header/vault-header.component";
|
|||||||
const BroadcasterSubscriptionId = "OrgVaultComponent";
|
const BroadcasterSubscriptionId = "OrgVaultComponent";
|
||||||
const SearchTextDebounceInterval = 200;
|
const SearchTextDebounceInterval = 200;
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
enum AddAccessStatusType {
|
enum AddAccessStatusType {
|
||||||
All = 0,
|
All = 0,
|
||||||
AddAccess = 1,
|
AddAccess = 1,
|
||||||
|
|||||||
@@ -58,6 +58,8 @@ import { AddEditGroupDetail } from "./../core/views/add-edit-group-detail";
|
|||||||
/**
|
/**
|
||||||
* Indices for the available tabs in the dialog
|
* Indices for the available tabs in the dialog
|
||||||
*/
|
*/
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum GroupAddEditTabType {
|
export enum GroupAddEditTabType {
|
||||||
Info = 0,
|
Info = 0,
|
||||||
Members = 1,
|
Members = 1,
|
||||||
@@ -82,6 +84,8 @@ export interface GroupAddEditDialogParams {
|
|||||||
initialTab?: GroupAddEditTabType;
|
initialTab?: GroupAddEditTabType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum GroupAddEditDialogResultType {
|
export enum GroupAddEditDialogResultType {
|
||||||
Saved = "saved",
|
Saved = "saved",
|
||||||
Canceled = "canceled",
|
Canceled = "canceled",
|
||||||
|
|||||||
@@ -64,6 +64,8 @@ import { commaSeparatedEmails } from "./validators/comma-separated-emails.valida
|
|||||||
import { inputEmailLimitValidator } from "./validators/input-email-limit.validator";
|
import { inputEmailLimitValidator } from "./validators/input-email-limit.validator";
|
||||||
import { orgSeatLimitReachedValidator } from "./validators/org-seat-limit-reached.validator";
|
import { orgSeatLimitReachedValidator } from "./validators/org-seat-limit-reached.validator";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum MemberDialogTab {
|
export enum MemberDialogTab {
|
||||||
Role = 0,
|
Role = 0,
|
||||||
Groups = 1,
|
Groups = 1,
|
||||||
@@ -92,6 +94,8 @@ export interface EditMemberDialogParams extends CommonMemberDialogParams {
|
|||||||
|
|
||||||
export type MemberDialogParams = EditMemberDialogParams | AddMemberDialogParams;
|
export type MemberDialogParams = EditMemberDialogParams | AddMemberDialogParams;
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum MemberDialogResult {
|
export enum MemberDialogResult {
|
||||||
Saved = "saved",
|
Saved = "saved",
|
||||||
Canceled = "canceled",
|
Canceled = "canceled",
|
||||||
|
|||||||
@@ -50,6 +50,8 @@ export type ResetPasswordDialogData = {
|
|||||||
organizationId: string;
|
organizationId: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum ResetPasswordDialogResult {
|
export enum ResetPasswordDialogResult {
|
||||||
Ok = "ok",
|
Ok = "ok",
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ export class OrganizationUserResetPasswordService
|
|||||||
if (orgSymKey == null) {
|
if (orgSymKey == null) {
|
||||||
throw new Error("No org key found");
|
throw new Error("No org key found");
|
||||||
}
|
}
|
||||||
const decPrivateKey = await this.encryptService.decryptToBytes(
|
const decPrivateKey = await this.encryptService.unwrapDecapsulationKey(
|
||||||
new EncString(response.encryptedPrivateKey),
|
new EncString(response.encryptedPrivateKey),
|
||||||
orgSymKey,
|
orgSymKey,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ export type PolicyEditDialogData = {
|
|||||||
organizationId: string;
|
organizationId: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum PolicyEditDialogResult {
|
export enum PolicyEditDialogResult {
|
||||||
Saved = "saved",
|
Saved = "saved",
|
||||||
UpgradePlan = "upgrade-plan",
|
UpgradePlan = "upgrade-plan",
|
||||||
|
|||||||
@@ -71,6 +71,8 @@ export interface DeleteOrganizationDialogParams {
|
|||||||
requestType: "InvalidFamiliesForEnterprise" | "RegularDelete";
|
requestType: "InvalidFamiliesForEnterprise" | "RegularDelete";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum DeleteOrganizationDialogResult {
|
export enum DeleteOrganizationDialogResult {
|
||||||
Deleted = "deleted",
|
Deleted = "deleted",
|
||||||
Canceled = "canceled",
|
Canceled = "canceled",
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ import {
|
|||||||
Permission,
|
Permission,
|
||||||
} from "./access-selector.models";
|
} from "./access-selector.models";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum PermissionMode {
|
export enum PermissionMode {
|
||||||
/**
|
/**
|
||||||
* No permission controls or column present. No permission values are emitted.
|
* No permission controls or column present. No permission values are emitted.
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ import { GroupView } from "../../../core";
|
|||||||
/**
|
/**
|
||||||
* Permission options that replace/correspond with manage, readOnly, and hidePassword server fields.
|
* Permission options that replace/correspond with manage, readOnly, and hidePassword server fields.
|
||||||
*/
|
*/
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum CollectionPermission {
|
export enum CollectionPermission {
|
||||||
View = "view",
|
View = "view",
|
||||||
ViewExceptPass = "viewExceptPass",
|
ViewExceptPass = "viewExceptPass",
|
||||||
@@ -23,6 +25,8 @@ export enum CollectionPermission {
|
|||||||
Manage = "manage",
|
Manage = "manage",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum AccessItemType {
|
export enum AccessItemType {
|
||||||
Collection,
|
Collection,
|
||||||
Group,
|
Group,
|
||||||
|
|||||||
@@ -65,6 +65,8 @@ import {
|
|||||||
} from "../access-selector/access-selector.models";
|
} from "../access-selector/access-selector.models";
|
||||||
import { AccessSelectorModule } from "../access-selector/access-selector.module";
|
import { AccessSelectorModule } from "../access-selector/access-selector.module";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum CollectionDialogTabType {
|
export enum CollectionDialogTabType {
|
||||||
Info = 0,
|
Info = 0,
|
||||||
Access = 1,
|
Access = 1,
|
||||||
@@ -76,6 +78,8 @@ export enum CollectionDialogTabType {
|
|||||||
* @readonly
|
* @readonly
|
||||||
* @enum {string}
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
enum ButtonType {
|
enum ButtonType {
|
||||||
/** Displayed when the user has reached the maximum number of collections allowed for the organization. */
|
/** Displayed when the user has reached the maximum number of collections allowed for the organization. */
|
||||||
Upgrade = "upgrade",
|
Upgrade = "upgrade",
|
||||||
@@ -103,6 +107,8 @@ export interface CollectionDialogResult {
|
|||||||
collection: CollectionResponse | CollectionView;
|
collection: CollectionResponse | CollectionView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum CollectionDialogAction {
|
export enum CollectionDialogAction {
|
||||||
Saved = "saved",
|
Saved = "saved",
|
||||||
Canceled = "canceled",
|
Canceled = "canceled",
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum WebauthnLoginCredentialPrfStatus {
|
export enum WebauthnLoginCredentialPrfStatus {
|
||||||
Enabled = 0,
|
Enabled = 0,
|
||||||
Supported = 1,
|
Supported = 1,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum EmergencyAccessStatusType {
|
export enum EmergencyAccessStatusType {
|
||||||
Invited = 0,
|
Invited = 0,
|
||||||
Accepted = 1,
|
Accepted = 1,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum EmergencyAccessType {
|
export enum EmergencyAccessType {
|
||||||
View = 0,
|
View = 0,
|
||||||
Takeover = 1,
|
Takeover = 1,
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import { LogService } from "@bitwarden/common/platform/abstractions/log.service"
|
|||||||
import { DialogConfig, DialogRef, DIALOG_DATA, DialogService } from "@bitwarden/components";
|
import { DialogConfig, DialogRef, DIALOG_DATA, DialogService } from "@bitwarden/components";
|
||||||
import { KeyService } from "@bitwarden/key-management";
|
import { KeyService } from "@bitwarden/key-management";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum EmergencyAccessConfirmDialogResult {
|
export enum EmergencyAccessConfirmDialogResult {
|
||||||
Confirmed = "confirmed",
|
Confirmed = "confirmed",
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ export type EmergencyAccessAddEditDialogData = {
|
|||||||
readOnly: boolean;
|
readOnly: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum EmergencyAccessAddEditDialogResult {
|
export enum EmergencyAccessAddEditDialogResult {
|
||||||
Saved = "saved",
|
Saved = "saved",
|
||||||
Canceled = "canceled",
|
Canceled = "canceled",
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ import { KdfType, KdfConfigService, KeyService } from "@bitwarden/key-management
|
|||||||
|
|
||||||
import { EmergencyAccessService } from "../../../emergency-access";
|
import { EmergencyAccessService } from "../../../emergency-access";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum EmergencyAccessTakeoverResultType {
|
export enum EmergencyAccessTakeoverResultType {
|
||||||
Done = "done",
|
Done = "done",
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ import { PendingWebauthnLoginCredentialView } from "../../../core/views/pending-
|
|||||||
import { CreatePasskeyFailedIcon } from "./create-passkey-failed.icon";
|
import { CreatePasskeyFailedIcon } from "./create-passkey-failed.icon";
|
||||||
import { CreatePasskeyIcon } from "./create-passkey.icon";
|
import { CreatePasskeyIcon } from "./create-passkey.icon";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum CreateCredentialDialogResult {
|
export enum CreateCredentialDialogResult {
|
||||||
Success,
|
Success,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,8 +51,38 @@
|
|||||||
<h2 class="tw-mb-3 tw-text-base tw-font-semibold">{{ "paymentType" | i18n }}</h2>
|
<h2 class="tw-mb-3 tw-text-base tw-font-semibold">{{ "paymentType" | i18n }}</h2>
|
||||||
<app-payment [showAccountCredit]="false"></app-payment>
|
<app-payment [showAccountCredit]="false"></app-payment>
|
||||||
<app-manage-tax-information
|
<app-manage-tax-information
|
||||||
(taxInformationChanged)="changedCountry()"
|
(taxInformationChanged)="onTaxInformationChanged()"
|
||||||
></app-manage-tax-information>
|
></app-manage-tax-information>
|
||||||
|
|
||||||
|
@if (trialLength === 0) {
|
||||||
|
@let priceLabel =
|
||||||
|
subscriptionProduct === SubscriptionProduct.PasswordManager
|
||||||
|
? "passwordManagerPlanPrice"
|
||||||
|
: "secretsManagerPlanPrice";
|
||||||
|
|
||||||
|
<div id="price" class="tw-my-4">
|
||||||
|
<div class="tw-text-muted tw-text-base">
|
||||||
|
{{ priceLabel | i18n }}: {{ getPriceFor(formGroup.value.cadence) | currency: "USD $" }}
|
||||||
|
<div>
|
||||||
|
{{ "estimatedTax" | i18n }}:
|
||||||
|
@if (fetchingTaxAmount) {
|
||||||
|
<ng-container *ngTemplateOutlet="loadingSpinner" />
|
||||||
|
} @else {
|
||||||
|
{{ taxAmount | currency: "USD $" }}
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr class="tw-my-1 tw-grid tw-grid-cols-3 tw-ml-0" />
|
||||||
|
<p class="tw-text-lg">
|
||||||
|
<strong>{{ "total" | i18n }}: </strong>
|
||||||
|
@if (fetchingTaxAmount) {
|
||||||
|
<ng-container *ngTemplateOutlet="loadingSpinner" />
|
||||||
|
} @else {
|
||||||
|
{{ total | currency: "USD $" }}/{{ interval | i18n }}
|
||||||
|
}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-flex tw-space-x-2">
|
<div class="tw-flex tw-space-x-2">
|
||||||
<button type="submit" buttonType="primary" bitButton [loading]="form.loading">
|
<button type="submit" buttonType="primary" bitButton [loading]="form.loading">
|
||||||
@@ -62,3 +92,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<ng-template #loadingSpinner>
|
||||||
|
<i
|
||||||
|
class="bwi bwi-spinner bwi-spin tw-text-muted"
|
||||||
|
title="{{ 'loading' | i18n }}"
|
||||||
|
aria-hidden="true"
|
||||||
|
></i>
|
||||||
|
<span class="tw-sr-only">{{ "loading" | i18n }}</span>
|
||||||
|
</ng-template>
|
||||||
|
|||||||
@@ -1,7 +1,16 @@
|
|||||||
// FIXME: Update this file to be type safe and remove this and next line
|
// FIXME: Update this file to be type safe and remove this and next line
|
||||||
// @ts-strict-ignore
|
// @ts-strict-ignore
|
||||||
import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from "@angular/core";
|
import {
|
||||||
|
Component,
|
||||||
|
EventEmitter,
|
||||||
|
Input,
|
||||||
|
OnDestroy,
|
||||||
|
OnInit,
|
||||||
|
Output,
|
||||||
|
ViewChild,
|
||||||
|
} from "@angular/core";
|
||||||
import { FormBuilder, Validators } from "@angular/forms";
|
import { FormBuilder, Validators } from "@angular/forms";
|
||||||
|
import { from, Subject, switchMap, takeUntil } from "rxjs";
|
||||||
|
|
||||||
import { ManageTaxInformationComponent } from "@bitwarden/angular/billing/components";
|
import { ManageTaxInformationComponent } from "@bitwarden/angular/billing/components";
|
||||||
import { ApiService } from "@bitwarden/common/abstractions/api.service";
|
import { ApiService } from "@bitwarden/common/abstractions/api.service";
|
||||||
@@ -12,7 +21,14 @@ import {
|
|||||||
PaymentInformation,
|
PaymentInformation,
|
||||||
PlanInformation,
|
PlanInformation,
|
||||||
} from "@bitwarden/common/billing/abstractions/organization-billing.service";
|
} from "@bitwarden/common/billing/abstractions/organization-billing.service";
|
||||||
import { PaymentMethodType, PlanType, ProductTierType } from "@bitwarden/common/billing/enums";
|
import { TaxServiceAbstraction } from "@bitwarden/common/billing/abstractions/tax.service.abstraction";
|
||||||
|
import {
|
||||||
|
PaymentMethodType,
|
||||||
|
PlanType,
|
||||||
|
ProductTierType,
|
||||||
|
ProductType,
|
||||||
|
} from "@bitwarden/common/billing/enums";
|
||||||
|
import { PreviewTaxAmountForOrganizationTrialRequest } from "@bitwarden/common/billing/models/request/tax";
|
||||||
import { PlanResponse } from "@bitwarden/common/billing/models/response/plan.response";
|
import { PlanResponse } from "@bitwarden/common/billing/models/response/plan.response";
|
||||||
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
||||||
import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service";
|
import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service";
|
||||||
@@ -34,11 +50,15 @@ export interface OrganizationCreatedEvent {
|
|||||||
planDescription: string;
|
planDescription: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
enum SubscriptionCadence {
|
enum SubscriptionCadence {
|
||||||
Annual,
|
Annual,
|
||||||
Monthly,
|
Monthly,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum SubscriptionProduct {
|
export enum SubscriptionProduct {
|
||||||
PasswordManager,
|
PasswordManager,
|
||||||
SecretsManager,
|
SecretsManager,
|
||||||
@@ -50,7 +70,7 @@ export enum SubscriptionProduct {
|
|||||||
imports: [BillingSharedModule],
|
imports: [BillingSharedModule],
|
||||||
standalone: true,
|
standalone: true,
|
||||||
})
|
})
|
||||||
export class TrialBillingStepComponent implements OnInit {
|
export class TrialBillingStepComponent implements OnInit, OnDestroy {
|
||||||
@ViewChild(PaymentComponent) paymentComponent: PaymentComponent;
|
@ViewChild(PaymentComponent) paymentComponent: PaymentComponent;
|
||||||
@ViewChild(ManageTaxInformationComponent) taxInfoComponent: ManageTaxInformationComponent;
|
@ViewChild(ManageTaxInformationComponent) taxInfoComponent: ManageTaxInformationComponent;
|
||||||
@Input() organizationInfo: OrganizationInfo;
|
@Input() organizationInfo: OrganizationInfo;
|
||||||
@@ -60,6 +80,7 @@ export class TrialBillingStepComponent implements OnInit {
|
|||||||
@Output() organizationCreated = new EventEmitter<OrganizationCreatedEvent>();
|
@Output() organizationCreated = new EventEmitter<OrganizationCreatedEvent>();
|
||||||
|
|
||||||
loading = true;
|
loading = true;
|
||||||
|
fetchingTaxAmount = false;
|
||||||
|
|
||||||
annualCadence = SubscriptionCadence.Annual;
|
annualCadence = SubscriptionCadence.Annual;
|
||||||
monthlyCadence = SubscriptionCadence.Monthly;
|
monthlyCadence = SubscriptionCadence.Monthly;
|
||||||
@@ -73,6 +94,12 @@ export class TrialBillingStepComponent implements OnInit {
|
|||||||
annualPlan?: PlanResponse;
|
annualPlan?: PlanResponse;
|
||||||
monthlyPlan?: PlanResponse;
|
monthlyPlan?: PlanResponse;
|
||||||
|
|
||||||
|
taxAmount = 0;
|
||||||
|
|
||||||
|
private destroy$ = new Subject<void>();
|
||||||
|
|
||||||
|
protected readonly SubscriptionProduct = SubscriptionProduct;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private apiService: ApiService,
|
private apiService: ApiService,
|
||||||
private i18nService: I18nService,
|
private i18nService: I18nService,
|
||||||
@@ -80,6 +107,7 @@ export class TrialBillingStepComponent implements OnInit {
|
|||||||
private messagingService: MessagingService,
|
private messagingService: MessagingService,
|
||||||
private organizationBillingService: OrganizationBillingService,
|
private organizationBillingService: OrganizationBillingService,
|
||||||
private toastService: ToastService,
|
private toastService: ToastService,
|
||||||
|
private taxService: TaxServiceAbstraction,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
async ngOnInit(): Promise<void> {
|
async ngOnInit(): Promise<void> {
|
||||||
@@ -87,9 +115,26 @@ export class TrialBillingStepComponent implements OnInit {
|
|||||||
this.applicablePlans = plans.data.filter(this.isApplicable);
|
this.applicablePlans = plans.data.filter(this.isApplicable);
|
||||||
this.annualPlan = this.findPlanFor(SubscriptionCadence.Annual);
|
this.annualPlan = this.findPlanFor(SubscriptionCadence.Annual);
|
||||||
this.monthlyPlan = this.findPlanFor(SubscriptionCadence.Monthly);
|
this.monthlyPlan = this.findPlanFor(SubscriptionCadence.Monthly);
|
||||||
|
|
||||||
|
if (this.trialLength === 0) {
|
||||||
|
this.formGroup.controls.cadence.valueChanges
|
||||||
|
.pipe(
|
||||||
|
switchMap((cadence) => from(this.previewTaxAmount(cadence))),
|
||||||
|
takeUntil(this.destroy$),
|
||||||
|
)
|
||||||
|
.subscribe((taxAmount) => {
|
||||||
|
this.taxAmount = taxAmount;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ngOnDestroy() {
|
||||||
|
this.destroy$.next();
|
||||||
|
this.destroy$.complete();
|
||||||
|
}
|
||||||
|
|
||||||
async submit(): Promise<void> {
|
async submit(): Promise<void> {
|
||||||
if (!this.taxInfoComponent.validate()) {
|
if (!this.taxInfoComponent.validate()) {
|
||||||
return;
|
return;
|
||||||
@@ -115,7 +160,11 @@ export class TrialBillingStepComponent implements OnInit {
|
|||||||
this.messagingService.send("organizationCreated", { organizationId });
|
this.messagingService.send("organizationCreated", { organizationId });
|
||||||
}
|
}
|
||||||
|
|
||||||
protected changedCountry() {
|
async onTaxInformationChanged() {
|
||||||
|
if (this.trialLength === 0) {
|
||||||
|
this.taxAmount = await this.previewTaxAmount(this.formGroup.value.cadence);
|
||||||
|
}
|
||||||
|
|
||||||
this.paymentComponent.showBankAccount =
|
this.paymentComponent.showBankAccount =
|
||||||
this.taxInfoComponent.getTaxInformation().country === "US";
|
this.taxInfoComponent.getTaxInformation().country === "US";
|
||||||
if (
|
if (
|
||||||
@@ -170,6 +219,7 @@ export class TrialBillingStepComponent implements OnInit {
|
|||||||
const payment: PaymentInformation = {
|
const payment: PaymentInformation = {
|
||||||
paymentMethod,
|
paymentMethod,
|
||||||
billing: this.getBillingInformationFromTaxInfoComponent(),
|
billing: this.getBillingInformationFromTaxInfoComponent(),
|
||||||
|
skipTrial: this.trialLength === 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
const response = await this.organizationBillingService.purchaseSubscription({
|
const response = await this.organizationBillingService.purchaseSubscription({
|
||||||
@@ -250,4 +300,45 @@ export class TrialBillingStepComponent implements OnInit {
|
|||||||
const notDisabledOrLegacy = !plan.disabled && !plan.legacyYear;
|
const notDisabledOrLegacy = !plan.disabled && !plan.legacyYear;
|
||||||
return hasCorrectProductType && notDisabledOrLegacy;
|
return hasCorrectProductType && notDisabledOrLegacy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private previewTaxAmount = async (cadence: SubscriptionCadence): Promise<number> => {
|
||||||
|
this.fetchingTaxAmount = true;
|
||||||
|
|
||||||
|
if (!this.taxInfoComponent.validate()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
const plan = this.findPlanFor(cadence);
|
||||||
|
|
||||||
|
const productType =
|
||||||
|
this.subscriptionProduct === SubscriptionProduct.PasswordManager
|
||||||
|
? ProductType.PasswordManager
|
||||||
|
: ProductType.SecretsManager;
|
||||||
|
|
||||||
|
const taxInformation = this.taxInfoComponent.getTaxInformation();
|
||||||
|
|
||||||
|
const request: PreviewTaxAmountForOrganizationTrialRequest = {
|
||||||
|
planType: plan.type,
|
||||||
|
productType,
|
||||||
|
taxInformation: {
|
||||||
|
...taxInformation,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const response = await this.taxService.previewTaxAmountForOrganizationTrial(request);
|
||||||
|
this.fetchingTaxAmount = false;
|
||||||
|
return response.taxAmount;
|
||||||
|
};
|
||||||
|
|
||||||
|
get price() {
|
||||||
|
return this.getPriceFor(this.formGroup.value.cadence);
|
||||||
|
}
|
||||||
|
|
||||||
|
get total() {
|
||||||
|
return this.price + this.taxAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
get interval() {
|
||||||
|
return this.formGroup.value.cadence === SubscriptionCadence.Annual ? "year" : "month";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,11 +74,15 @@ type ChangePlanDialogParams = {
|
|||||||
productTierType: ProductTierType;
|
productTierType: ProductTierType;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum ChangePlanDialogResultType {
|
export enum ChangePlanDialogResultType {
|
||||||
Closed = "closed",
|
Closed = "closed",
|
||||||
Submitted = "submitted",
|
Submitted = "submitted",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum PlanCardState {
|
export enum PlanCardState {
|
||||||
Selected = "selected",
|
Selected = "selected",
|
||||||
NotSelected = "not_selected",
|
NotSelected = "not_selected",
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-conso
|
|||||||
import { FileDownloadService } from "@bitwarden/common/platform/abstractions/file-download/file-download.service";
|
import { FileDownloadService } from "@bitwarden/common/platform/abstractions/file-download/file-download.service";
|
||||||
import { DialogConfig, DIALOG_DATA, DialogRef, DialogService } from "@bitwarden/components";
|
import { DialogConfig, DIALOG_DATA, DialogRef, DialogService } from "@bitwarden/components";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum DownloadLicenseDialogResult {
|
export enum DownloadLicenseDialogResult {
|
||||||
Cancelled = "cancelled",
|
Cancelled = "cancelled",
|
||||||
Downloaded = "downloaded",
|
Downloaded = "downloaded",
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ import { DialogService, ToastService } from "@bitwarden/components";
|
|||||||
|
|
||||||
import { BillingSyncKeyComponent } from "./billing-sync-key.component";
|
import { BillingSyncKeyComponent } from "./billing-sync-key.component";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
enum LicenseOptions {
|
enum LicenseOptions {
|
||||||
SYNC = 0,
|
SYNC = 0,
|
||||||
UPLOAD = 1,
|
UPLOAD = 1,
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ export interface AddCreditDialogData {
|
|||||||
organizationId: string;
|
organizationId: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum AddCreditDialogResult {
|
export enum AddCreditDialogResult {
|
||||||
Added = "added",
|
Added = "added",
|
||||||
Cancelled = "cancelled",
|
Cancelled = "cancelled",
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ export interface AdjustPaymentDialogParams {
|
|||||||
providerId?: string;
|
providerId?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum AdjustPaymentDialogResultType {
|
export enum AdjustPaymentDialogResultType {
|
||||||
Closed = "closed",
|
Closed = "closed",
|
||||||
Submitted = "submitted",
|
Submitted = "submitted",
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ export interface AdjustStorageDialogParams {
|
|||||||
organizationId?: string;
|
organizationId?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum AdjustStorageDialogResultType {
|
export enum AdjustStorageDialogResultType {
|
||||||
Submitted = "submitted",
|
Submitted = "submitted",
|
||||||
Closed = "closed",
|
Closed = "closed",
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ type OrganizationOffboardingParams = {
|
|||||||
|
|
||||||
export type OffboardingSurveyDialogParams = UserOffboardingParams | OrganizationOffboardingParams;
|
export type OffboardingSurveyDialogParams = UserOffboardingParams | OrganizationOffboardingParams;
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum OffboardingSurveyDialogResultType {
|
export enum OffboardingSurveyDialogResultType {
|
||||||
Closed = "closed",
|
Closed = "closed",
|
||||||
Submitted = "submitted",
|
Submitted = "submitted",
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum UpdateLicenseDialogResult {
|
export enum UpdateLicenseDialogResult {
|
||||||
Updated = "updated",
|
Updated = "updated",
|
||||||
Cancelled = "cancelled",
|
Cancelled = "cancelled",
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import { ReportUnsecuredWebsites } from "./icons/report-unsecured-websites.icon"
|
|||||||
import { ReportWeakPasswords } from "./icons/report-weak-passwords.icon";
|
import { ReportWeakPasswords } from "./icons/report-weak-passwords.icon";
|
||||||
import { ReportEntry } from "./shared";
|
import { ReportEntry } from "./shared";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum ReportType {
|
export enum ReportType {
|
||||||
ExposedPasswords = "exposedPasswords",
|
ExposedPasswords = "exposedPasswords",
|
||||||
ReusedPasswords = "reusedPasswords",
|
ReusedPasswords = "reusedPasswords",
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum ReportVariant {
|
export enum ReportVariant {
|
||||||
Enabled = "Enabled",
|
Enabled = "Enabled",
|
||||||
RequiresPremium = "RequiresPremium",
|
RequiresPremium = "RequiresPremium",
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import { DangerZoneComponent } from "../auth/settings/account/danger-zone.compon
|
|||||||
import { DeauthorizeSessionsComponent } from "../auth/settings/account/deauthorize-sessions.component";
|
import { DeauthorizeSessionsComponent } from "../auth/settings/account/deauthorize-sessions.component";
|
||||||
import { DeleteAccountDialogComponent } from "../auth/settings/account/delete-account-dialog.component";
|
import { DeleteAccountDialogComponent } from "../auth/settings/account/delete-account-dialog.component";
|
||||||
import { ProfileComponent } from "../auth/settings/account/profile.component";
|
import { ProfileComponent } from "../auth/settings/account/profile.component";
|
||||||
|
import { SelectableAvatarComponent } from "../auth/settings/account/selectable-avatar.component";
|
||||||
import { EmergencyAccessConfirmComponent } from "../auth/settings/emergency-access/confirm/emergency-access-confirm.component";
|
import { EmergencyAccessConfirmComponent } from "../auth/settings/emergency-access/confirm/emergency-access-confirm.component";
|
||||||
import { EmergencyAccessAddEditComponent } from "../auth/settings/emergency-access/emergency-access-add-edit.component";
|
import { EmergencyAccessAddEditComponent } from "../auth/settings/emergency-access/emergency-access-add-edit.component";
|
||||||
import { EmergencyAccessComponent } from "../auth/settings/emergency-access/emergency-access.component";
|
import { EmergencyAccessComponent } from "../auth/settings/emergency-access/emergency-access.component";
|
||||||
@@ -39,7 +40,6 @@ import { VerifyRecoverDeleteComponent } from "../auth/verify-recover-delete.comp
|
|||||||
import { SponsoredFamiliesComponent } from "../billing/settings/sponsored-families.component";
|
import { SponsoredFamiliesComponent } from "../billing/settings/sponsored-families.component";
|
||||||
import { SponsoringOrgRowComponent } from "../billing/settings/sponsoring-org-row.component";
|
import { SponsoringOrgRowComponent } from "../billing/settings/sponsoring-org-row.component";
|
||||||
import { DynamicAvatarComponent } from "../components/dynamic-avatar.component";
|
import { DynamicAvatarComponent } from "../components/dynamic-avatar.component";
|
||||||
import { SelectableAvatarComponent } from "../components/selectable-avatar.component";
|
|
||||||
import { ExposedPasswordsReportComponent as OrgExposedPasswordsReportComponent } from "../dirt/reports/pages/organizations/exposed-passwords-report.component";
|
import { ExposedPasswordsReportComponent as OrgExposedPasswordsReportComponent } from "../dirt/reports/pages/organizations/exposed-passwords-report.component";
|
||||||
import { InactiveTwoFactorReportComponent as OrgInactiveTwoFactorReportComponent } from "../dirt/reports/pages/organizations/inactive-two-factor-report.component";
|
import { InactiveTwoFactorReportComponent as OrgInactiveTwoFactorReportComponent } from "../dirt/reports/pages/organizations/inactive-two-factor-report.component";
|
||||||
import { ReusedPasswordsReportComponent as OrgReusedPasswordsReportComponent } from "../dirt/reports/pages/organizations/reused-passwords-report.component";
|
import { ReusedPasswordsReportComponent as OrgReusedPasswordsReportComponent } from "../dirt/reports/pages/organizations/reused-passwords-report.component";
|
||||||
|
|||||||
@@ -95,6 +95,8 @@ export interface VaultItemDialogParams {
|
|||||||
restore?: (c: CipherView) => Promise<boolean>;
|
restore?: (c: CipherView) => Promise<boolean>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum VaultItemDialogResult {
|
export enum VaultItemDialogResult {
|
||||||
/**
|
/**
|
||||||
* A cipher was saved (created or updated).
|
* A cipher was saved (created or updated).
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ export interface WebVaultGeneratorDialogResult {
|
|||||||
generatedValue?: string;
|
generatedValue?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum WebVaultGeneratorDialogAction {
|
export enum WebVaultGeneratorDialogAction {
|
||||||
Selected = "selected",
|
Selected = "selected",
|
||||||
Canceled = "canceled",
|
Canceled = "canceled",
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ import { WebCipherFormGenerationService } from "../services/web-cipher-form-gene
|
|||||||
/**
|
/**
|
||||||
* The result of the AddEditCipherDialogV2 component.
|
* The result of the AddEditCipherDialogV2 component.
|
||||||
*/
|
*/
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum AddEditCipherDialogResult {
|
export enum AddEditCipherDialogResult {
|
||||||
Edited = "edited",
|
Edited = "edited",
|
||||||
Added = "added",
|
Added = "added",
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ export interface BulkDeleteDialogParams {
|
|||||||
unassignedCiphers?: string[];
|
unassignedCiphers?: string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum BulkDeleteDialogResult {
|
export enum BulkDeleteDialogResult {
|
||||||
Deleted = "deleted",
|
Deleted = "deleted",
|
||||||
Canceled = "canceled",
|
Canceled = "canceled",
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ export interface BulkMoveDialogParams {
|
|||||||
cipherIds?: string[];
|
cipherIds?: string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum BulkMoveDialogResult {
|
export enum BulkMoveDialogResult {
|
||||||
Moved = "moved",
|
Moved = "moved",
|
||||||
Canceled = "canceled",
|
Canceled = "canceled",
|
||||||
|
|||||||
@@ -113,6 +113,8 @@ export interface FolderAddEditDialogParams {
|
|||||||
folderId: string;
|
folderId: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum FolderAddEditDialogResult {
|
export enum FolderAddEditDialogResult {
|
||||||
Deleted = "deleted",
|
Deleted = "deleted",
|
||||||
Canceled = "canceled",
|
Canceled = "canceled",
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ import { UserId } from "@bitwarden/common/types/guid";
|
|||||||
import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction";
|
import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction";
|
||||||
import { PBKDF2KdfConfig, KdfConfigService, KdfType } from "@bitwarden/key-management";
|
import { PBKDF2KdfConfig, KdfConfigService, KdfType } from "@bitwarden/key-management";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum VisibleVaultBanner {
|
export enum VisibleVaultBanner {
|
||||||
KDFSettings = "kdf-settings",
|
KDFSettings = "kdf-settings",
|
||||||
OutdatedBrowser = "outdated-browser",
|
OutdatedBrowser = "outdated-browser",
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ export type VaultFilterType =
|
|||||||
| FolderFilter
|
| FolderFilter
|
||||||
| CollectionFilter;
|
| CollectionFilter;
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum VaultFilterLabel {
|
export enum VaultFilterLabel {
|
||||||
OrganizationFilter = "organizationFilter",
|
OrganizationFilter = "organizationFilter",
|
||||||
TypeFilter = "typeFilter",
|
TypeFilter = "typeFilter",
|
||||||
|
|||||||
@@ -54,6 +54,8 @@ export interface ViewCipherDialogParams {
|
|||||||
disableEdit?: boolean;
|
disableEdit?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum ViewCipherDialogResult {
|
export enum ViewCipherDialogResult {
|
||||||
Edited = "edited",
|
Edited = "edited",
|
||||||
Deleted = "deleted",
|
Deleted = "deleted",
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/pl
|
|||||||
import { Utils } from "@bitwarden/common/platform/misc/utils";
|
import { Utils } from "@bitwarden/common/platform/misc/utils";
|
||||||
import { VaultMessages } from "@bitwarden/common/vault/enums/vault-messages.enum";
|
import { VaultMessages } from "@bitwarden/common/vault/enums/vault-messages.enum";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum BrowserPromptState {
|
export enum BrowserPromptState {
|
||||||
Loading = "loading",
|
Loading = "loading",
|
||||||
Error = "error",
|
Error = "error",
|
||||||
|
|||||||
@@ -149,6 +149,8 @@ export interface PasswordHealthReportApplicationsRequest {
|
|||||||
url: string;
|
url: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum DrawerType {
|
export enum DrawerType {
|
||||||
None = 0,
|
None = 0,
|
||||||
AppAtRiskMembers = 1,
|
AppAtRiskMembers = 1,
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ describe("RiskInsightsReportService", () => {
|
|||||||
let testCase = testCaseResults[0];
|
let testCase = testCaseResults[0];
|
||||||
expect(testCase).toBeTruthy();
|
expect(testCase).toBeTruthy();
|
||||||
expect(testCase.cipherMembers).toHaveLength(2);
|
expect(testCase.cipherMembers).toHaveLength(2);
|
||||||
expect(testCase.trimmedUris).toHaveLength(3);
|
expect(testCase.trimmedUris).toHaveLength(2);
|
||||||
expect(testCase.weakPasswordDetail).toBeTruthy();
|
expect(testCase.weakPasswordDetail).toBeTruthy();
|
||||||
expect(testCase.exposedPasswordDetail).toBeTruthy();
|
expect(testCase.exposedPasswordDetail).toBeTruthy();
|
||||||
expect(testCase.reusedPasswordCount).toEqual(2);
|
expect(testCase.reusedPasswordCount).toEqual(2);
|
||||||
@@ -69,7 +69,7 @@ describe("RiskInsightsReportService", () => {
|
|||||||
it("should generate the raw data + uri report correctly", async () => {
|
it("should generate the raw data + uri report correctly", async () => {
|
||||||
const result = await firstValueFrom(service.generateRawDataUriReport$("orgId"));
|
const result = await firstValueFrom(service.generateRawDataUriReport$("orgId"));
|
||||||
|
|
||||||
expect(result).toHaveLength(9);
|
expect(result).toHaveLength(8);
|
||||||
|
|
||||||
// Two ciphers that have google.com as their uri. There should be 2 results
|
// Two ciphers that have google.com as their uri. There should be 2 results
|
||||||
const googleResults = result.filter((x) => x.trimmedUri === "google.com");
|
const googleResults = result.filter((x) => x.trimmedUri === "google.com");
|
||||||
@@ -88,7 +88,7 @@ describe("RiskInsightsReportService", () => {
|
|||||||
it("should generate applications health report data correctly", async () => {
|
it("should generate applications health report data correctly", async () => {
|
||||||
const result = await firstValueFrom(service.generateApplicationsReport$("orgId"));
|
const result = await firstValueFrom(service.generateApplicationsReport$("orgId"));
|
||||||
|
|
||||||
expect(result).toHaveLength(6);
|
expect(result).toHaveLength(5);
|
||||||
|
|
||||||
// Two ciphers have google.com associated with them. The first cipher
|
// Two ciphers have google.com associated with them. The first cipher
|
||||||
// has 2 members and the second has 4. However, the 2 members in the first
|
// has 2 members and the second has 4. However, the 2 members in the first
|
||||||
@@ -132,7 +132,7 @@ describe("RiskInsightsReportService", () => {
|
|||||||
|
|
||||||
expect(reportSummary.totalMemberCount).toEqual(7);
|
expect(reportSummary.totalMemberCount).toEqual(7);
|
||||||
expect(reportSummary.totalAtRiskMemberCount).toEqual(6);
|
expect(reportSummary.totalAtRiskMemberCount).toEqual(6);
|
||||||
expect(reportSummary.totalApplicationCount).toEqual(6);
|
expect(reportSummary.totalApplicationCount).toEqual(5);
|
||||||
expect(reportSummary.totalAtRiskApplicationCount).toEqual(5);
|
expect(reportSummary.totalAtRiskApplicationCount).toEqual(4);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -428,7 +428,7 @@ export class RiskInsightsReportService {
|
|||||||
const cipherUris: string[] = [];
|
const cipherUris: string[] = [];
|
||||||
const uris = cipher.login?.uris ?? [];
|
const uris = cipher.login?.uris ?? [];
|
||||||
uris.map((u: { uri: string }) => {
|
uris.map((u: { uri: string }) => {
|
||||||
const uri = Utils.getHostname(u.uri).replace("www.", "");
|
const uri = Utils.getDomain(u.uri);
|
||||||
if (!cipherUris.includes(uri)) {
|
if (!cipherUris.includes(uri)) {
|
||||||
cipherUris.push(uri);
|
cipherUris.push(uri);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ export type AddEditMemberDialogParams = {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum AddEditMemberDialogResultType {
|
export enum AddEditMemberDialogResultType {
|
||||||
Closed = "closed",
|
Closed = "closed",
|
||||||
Deleted = "deleted",
|
Deleted = "deleted",
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ export class WebProviderService {
|
|||||||
|
|
||||||
const [publicKey, encryptedPrivateKey] = await this.keyService.makeKeyPair(organizationKey);
|
const [publicKey, encryptedPrivateKey] = await this.keyService.makeKeyPair(organizationKey);
|
||||||
|
|
||||||
const encryptedCollectionName = await this.encryptService.encrypt(
|
const encryptedCollectionName = await this.encryptService.encryptString(
|
||||||
this.i18nService.t("defaultCollection"),
|
this.i18nService.t("defaultCollection"),
|
||||||
organizationKey,
|
organizationKey,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ export type AddExistingOrganizationDialogParams = {
|
|||||||
provider: Provider;
|
provider: Provider;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum AddExistingOrganizationDialogResultType {
|
export enum AddExistingOrganizationDialogResultType {
|
||||||
Closed = "closed",
|
Closed = "closed",
|
||||||
Submitted = "submitted",
|
Submitted = "submitted",
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ type CreateClientDialogParams = {
|
|||||||
plans: PlanResponse[];
|
plans: PlanResponse[];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum CreateClientDialogResultType {
|
export enum CreateClientDialogResultType {
|
||||||
Closed = "closed",
|
Closed = "closed",
|
||||||
Submitted = "submitted",
|
Submitted = "submitted",
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ type ManageClientNameDialogParams = {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum ManageClientNameDialogResultType {
|
export enum ManageClientNameDialogResultType {
|
||||||
Closed = "closed",
|
Closed = "closed",
|
||||||
Submitted = "submitted",
|
Submitted = "submitted",
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ type ManageClientSubscriptionDialogParams = {
|
|||||||
provider: Provider;
|
provider: Provider;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum ManageClientSubscriptionDialogResultType {
|
export enum ManageClientSubscriptionDialogResultType {
|
||||||
Closed = "closed",
|
Closed = "closed",
|
||||||
Submitted = "submitted",
|
Submitted = "submitted",
|
||||||
|
|||||||
@@ -37,6 +37,8 @@ import { PasswordHealthMembersURIComponent } from "./password-health-members-uri
|
|||||||
import { PasswordHealthMembersComponent } from "./password-health-members.component";
|
import { PasswordHealthMembersComponent } from "./password-health-members.component";
|
||||||
import { PasswordHealthComponent } from "./password-health.component";
|
import { PasswordHealthComponent } from "./password-health.component";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum RiskInsightsTabType {
|
export enum RiskInsightsTabType {
|
||||||
AllApps = 0,
|
AllApps = 0,
|
||||||
CriticalApps = 1,
|
CriticalApps = 1,
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ import { DialogRef, DIALOG_DATA, BitValidators, ToastService } from "@bitwarden/
|
|||||||
import { ProjectView } from "../../models/view/project.view";
|
import { ProjectView } from "../../models/view/project.view";
|
||||||
import { ProjectService } from "../../projects/project.service";
|
import { ProjectService } from "../../projects/project.service";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum OperationType {
|
export enum OperationType {
|
||||||
Add,
|
Add,
|
||||||
Edit,
|
Edit,
|
||||||
|
|||||||
@@ -44,11 +44,15 @@ import { SecretService } from "../secret.service";
|
|||||||
|
|
||||||
import { SecretDeleteDialogComponent, SecretDeleteOperation } from "./secret-delete.component";
|
import { SecretDeleteDialogComponent, SecretDeleteOperation } from "./secret-delete.component";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum OperationType {
|
export enum OperationType {
|
||||||
Add,
|
Add,
|
||||||
Edit,
|
Edit,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum SecretDialogTabType {
|
export enum SecretDialogTabType {
|
||||||
NameValuePair = 0,
|
NameValuePair = 0,
|
||||||
People = 1,
|
People = 1,
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import { DialogRef, DIALOG_DATA, BitValidators, ToastService } from "@bitwarden/
|
|||||||
import { ServiceAccountView } from "../../models/view/service-account.view";
|
import { ServiceAccountView } from "../../models/view/service-account.view";
|
||||||
import { ServiceAccountService } from "../service-account.service";
|
import { ServiceAccountService } from "../service-account.service";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum OperationType {
|
export enum OperationType {
|
||||||
Add,
|
Add,
|
||||||
Edit,
|
Edit,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum ApItemEnum {
|
export enum ApItemEnum {
|
||||||
User,
|
User,
|
||||||
Group,
|
Group,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum ApPermissionEnum {
|
export enum ApPermissionEnum {
|
||||||
CanRead = "canRead",
|
CanRead = "canRead",
|
||||||
CanReadWrite = "canReadWrite",
|
CanReadWrite = "canReadWrite",
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ export interface BulkConfirmationStatus {
|
|||||||
description: string;
|
description: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum BulkConfirmationResult {
|
export enum BulkConfirmationResult {
|
||||||
Continue,
|
Continue,
|
||||||
Cancel,
|
Cancel,
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ export default tseslint.config(
|
|||||||
"@angular-eslint/use-lifecycle-interface": "error",
|
"@angular-eslint/use-lifecycle-interface": "error",
|
||||||
"@angular-eslint/use-pipe-transform-interface": 0,
|
"@angular-eslint/use-pipe-transform-interface": 0,
|
||||||
"@bitwarden/platform/required-using": "error",
|
"@bitwarden/platform/required-using": "error",
|
||||||
|
"@bitwarden/platform/no-enums": "error",
|
||||||
"@typescript-eslint/explicit-member-accessibility": ["error", { accessibility: "no-public" }],
|
"@typescript-eslint/explicit-member-accessibility": ["error", { accessibility: "no-public" }],
|
||||||
"@typescript-eslint/no-explicit-any": "off", // TODO: This should be re-enabled
|
"@typescript-eslint/no-explicit-any": "off", // TODO: This should be re-enabled
|
||||||
"@typescript-eslint/no-floating-promises": "error",
|
"@typescript-eslint/no-floating-promises": "error",
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ export class DefaultCollectionAdminService implements CollectionAdminService {
|
|||||||
const promises = collections.map(async (c) => {
|
const promises = collections.map(async (c) => {
|
||||||
const view = new CollectionAdminView();
|
const view = new CollectionAdminView();
|
||||||
view.id = c.id;
|
view.id = c.id;
|
||||||
view.name = await this.encryptService.decryptToUtf8(new EncString(c.name), orgKey);
|
view.name = await this.encryptService.decryptString(new EncString(c.name), orgKey);
|
||||||
view.externalId = c.externalId;
|
view.externalId = c.externalId;
|
||||||
view.organizationId = c.organizationId;
|
view.organizationId = c.organizationId;
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ export class DefaultCollectionAdminService implements CollectionAdminService {
|
|||||||
}
|
}
|
||||||
const collection = new CollectionRequest();
|
const collection = new CollectionRequest();
|
||||||
collection.externalId = model.externalId;
|
collection.externalId = model.externalId;
|
||||||
collection.name = (await this.encryptService.encrypt(model.name, key)).encryptedString;
|
collection.name = (await this.encryptService.encryptString(model.name, key)).encryptedString;
|
||||||
collection.groups = model.groups.map(
|
collection.groups = model.groups.map(
|
||||||
(group) =>
|
(group) =>
|
||||||
new SelectionReadOnlyRequest(group.id, group.readOnly, group.hidePasswords, group.manage),
|
new SelectionReadOnlyRequest(group.id, group.readOnly, group.hidePasswords, group.manage),
|
||||||
|
|||||||
@@ -120,9 +120,12 @@ const mockStateProvider = () => {
|
|||||||
const mockCryptoService = () => {
|
const mockCryptoService = () => {
|
||||||
const keyService = mock<KeyService>();
|
const keyService = mock<KeyService>();
|
||||||
const encryptService = mock<EncryptService>();
|
const encryptService = mock<EncryptService>();
|
||||||
encryptService.decryptToUtf8
|
encryptService.decryptString
|
||||||
.calledWith(expect.any(EncString), expect.anything())
|
.calledWith(expect.any(EncString), expect.anything())
|
||||||
.mockResolvedValue("DECRYPTED_STRING");
|
.mockResolvedValue("DECRYPTED_STRING");
|
||||||
|
encryptService.decryptToUtf8
|
||||||
|
.calledWith(expect.any(EncString), expect.anything(), expect.anything())
|
||||||
|
.mockResolvedValue("DECRYPTED_STRING");
|
||||||
|
|
||||||
(window as any).bitwardenContainerService = new ContainerService(keyService, encryptService);
|
(window as any).bitwardenContainerService = new ContainerService(keyService, encryptService);
|
||||||
|
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ export class DefaultCollectionService implements CollectionService {
|
|||||||
collection.organizationId = model.organizationId;
|
collection.organizationId = model.organizationId;
|
||||||
collection.readOnly = model.readOnly;
|
collection.readOnly = model.readOnly;
|
||||||
collection.externalId = model.externalId;
|
collection.externalId = model.externalId;
|
||||||
collection.name = await this.encryptService.encrypt(model.name, key);
|
collection.name = await this.encryptService.encryptString(model.name, key);
|
||||||
return collection;
|
return collection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,6 +46,11 @@ describe("DefaultvNextCollectionService", () => {
|
|||||||
keyService.orgKeys$.mockReturnValue(cryptoKeys);
|
keyService.orgKeys$.mockReturnValue(cryptoKeys);
|
||||||
|
|
||||||
// Set up mock decryption
|
// Set up mock decryption
|
||||||
|
encryptService.decryptString
|
||||||
|
.calledWith(expect.any(EncString), expect.any(SymmetricCryptoKey))
|
||||||
|
.mockImplementation((encString, key) =>
|
||||||
|
Promise.resolve(encString.data.replace("ENC_", "DEC_")),
|
||||||
|
);
|
||||||
encryptService.decryptToUtf8
|
encryptService.decryptToUtf8
|
||||||
.calledWith(expect.any(EncString), expect.any(SymmetricCryptoKey), expect.any(String))
|
.calledWith(expect.any(EncString), expect.any(SymmetricCryptoKey), expect.any(String))
|
||||||
.mockImplementation((encString, key) =>
|
.mockImplementation((encString, key) =>
|
||||||
@@ -103,6 +108,7 @@ describe("DefaultvNextCollectionService", () => {
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
// Assert that the correct org keys were used for each encrypted string
|
// Assert that the correct org keys were used for each encrypted string
|
||||||
|
// This should be replaced with decryptString when the platform PR (https://github.com/bitwarden/clients/pull/14544) is merged
|
||||||
expect(encryptService.decryptToUtf8).toHaveBeenCalledWith(
|
expect(encryptService.decryptToUtf8).toHaveBeenCalledWith(
|
||||||
expect.objectContaining(new EncString(collection1.name)),
|
expect.objectContaining(new EncString(collection1.name)),
|
||||||
orgKey1,
|
orgKey1,
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ export class DefaultvNextCollectionService implements vNextCollectionService {
|
|||||||
collection.organizationId = model.organizationId;
|
collection.organizationId = model.organizationId;
|
||||||
collection.readOnly = model.readOnly;
|
collection.readOnly = model.readOnly;
|
||||||
collection.externalId = model.externalId;
|
collection.externalId = model.externalId;
|
||||||
collection.name = await this.encryptService.encrypt(model.name, key);
|
collection.name = await this.encryptService.encryptString(model.name, key);
|
||||||
return collection;
|
return collection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ export type AddAccountCreditDialogParams = {
|
|||||||
providerId?: string;
|
providerId?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum AddAccountCreditDialogResultType {
|
export enum AddAccountCreditDialogResultType {
|
||||||
Closed = "closed",
|
Closed = "closed",
|
||||||
Submitted = "submitted",
|
Submitted = "submitted",
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ import { SendService } from "@bitwarden/common/tools/send/services/send.service.
|
|||||||
import { DialogService, ToastService } from "@bitwarden/components";
|
import { DialogService, ToastService } from "@bitwarden/components";
|
||||||
|
|
||||||
// Value = hours
|
// Value = hours
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
enum DatePreset {
|
enum DatePreset {
|
||||||
OneHour = 1,
|
OneHour = 1,
|
||||||
OneDay = 24,
|
OneDay = 24,
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ import { PasswordInputResult } from "./password-input-result";
|
|||||||
/**
|
/**
|
||||||
* Determines which form input elements will be displayed in the UI.
|
* Determines which form input elements will be displayed in the UI.
|
||||||
*/
|
*/
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum InputPasswordFlow {
|
export enum InputPasswordFlow {
|
||||||
/**
|
/**
|
||||||
* - Input: New password
|
* - Input: New password
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ import { AnonLayoutWrapperDataService } from "../anon-layout/anon-layout-wrapper
|
|||||||
|
|
||||||
import { LoginDecryptionOptionsService } from "./login-decryption-options.service";
|
import { LoginDecryptionOptionsService } from "./login-decryption-options.service";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
enum State {
|
enum State {
|
||||||
NewUser,
|
NewUser,
|
||||||
ExistingUserUntrustedDevice,
|
ExistingUserUntrustedDevice,
|
||||||
|
|||||||
@@ -40,6 +40,8 @@ import { PasswordGenerationServiceAbstraction } from "@bitwarden/generator-legac
|
|||||||
import { AuthRequestApiService } from "../../common/abstractions/auth-request-api.service";
|
import { AuthRequestApiService } from "../../common/abstractions/auth-request-api.service";
|
||||||
import { LoginViaAuthRequestCacheService } from "../../common/services/auth-request/default-login-via-auth-request-cache.service";
|
import { LoginViaAuthRequestCacheService } from "../../common/services/auth-request/default-login-via-auth-request-cache.service";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
enum Flow {
|
enum Flow {
|
||||||
StandardAuthRequest, // when user clicks "Login with device" from /login or "Approve from your other device" from /login-initiated
|
StandardAuthRequest, // when user clicks "Login with device" from /login or "Approve from your other device" from /login-initiated
|
||||||
AdminAuthRequest, // when user clicks "Request admin approval" from /login-initiated
|
AdminAuthRequest, // when user clicks "Request admin approval" from /login-initiated
|
||||||
|
|||||||
@@ -46,6 +46,8 @@ import { LoginComponentService, PasswordPolicies } from "./login-component.servi
|
|||||||
|
|
||||||
const BroadcasterSubscriptionId = "LoginComponent";
|
const BroadcasterSubscriptionId = "LoginComponent";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum LoginUiState {
|
export enum LoginUiState {
|
||||||
EMAIL_ENTRY = "EmailEntry",
|
EMAIL_ENTRY = "EmailEntry",
|
||||||
MASTER_PASSWORD_ENTRY = "MasterPasswordEntry",
|
MASTER_PASSWORD_ENTRY = "MasterPasswordEntry",
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ import { RegistrationUserAddIcon } from "../../icons";
|
|||||||
import { RegistrationCheckEmailIcon } from "../../icons/registration-check-email.icon";
|
import { RegistrationCheckEmailIcon } from "../../icons/registration-check-email.icon";
|
||||||
import { RegistrationEnvSelectorComponent } from "../registration-env-selector/registration-env-selector.component";
|
import { RegistrationEnvSelectorComponent } from "../registration-env-selector/registration-env-selector.component";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum RegistrationStartState {
|
export enum RegistrationStartState {
|
||||||
USER_DATA_ENTRY = "UserDataEntry",
|
USER_DATA_ENTRY = "UserDataEntry",
|
||||||
CHECK_EMAIL = "CheckEmail",
|
CHECK_EMAIL = "CheckEmail",
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
import { TwoFactorProviderType } from "@bitwarden/common/auth/enums/two-factor-provider-type";
|
import { TwoFactorProviderType } from "@bitwarden/common/auth/enums/two-factor-provider-type";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum LegacyKeyMigrationAction {
|
export enum LegacyKeyMigrationAction {
|
||||||
PREVENT_LOGIN_AND_SHOW_REQUIRE_MIGRATION_WARNING,
|
PREVENT_LOGIN_AND_SHOW_REQUIRE_MIGRATION_WARNING,
|
||||||
NAVIGATE_TO_MIGRATION_COMPONENT,
|
NAVIGATE_TO_MIGRATION_COMPONENT,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum DuoLaunchAction {
|
export enum DuoLaunchAction {
|
||||||
DIRECT_LAUNCH,
|
DIRECT_LAUNCH,
|
||||||
SINGLE_ACTION_POPOUT,
|
SINGLE_ACTION_POPOUT,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum ActiveClientVerificationOption {
|
export enum ActiveClientVerificationOption {
|
||||||
MasterPassword = "masterPassword",
|
MasterPassword = "masterPassword",
|
||||||
Pin = "pin",
|
Pin = "pin",
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
import { AbstractControl, FormGroup, ValidationErrors, ValidatorFn } from "@angular/forms";
|
import { AbstractControl, FormGroup, ValidationErrors, ValidatorFn } from "@angular/forms";
|
||||||
|
|
||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum ValidationGoal {
|
export enum ValidationGoal {
|
||||||
InputsShouldMatch,
|
InputsShouldMatch,
|
||||||
InputsShouldNotMatch,
|
InputsShouldNotMatch,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum OrganizationApiKeyType {
|
export enum OrganizationApiKeyType {
|
||||||
Default = 0,
|
Default = 0,
|
||||||
BillingSync = 1,
|
BillingSync = 1,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum OrganizationConnectionType {
|
export enum OrganizationConnectionType {
|
||||||
CloudBillingSync = 1,
|
CloudBillingSync = 1,
|
||||||
Scim = 2,
|
Scim = 2,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum OrganizationUserStatusType {
|
export enum OrganizationUserStatusType {
|
||||||
Invited = 0,
|
Invited = 0,
|
||||||
Accepted = 1,
|
Accepted = 1,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum OrganizationUserType {
|
export enum OrganizationUserType {
|
||||||
Owner = 0,
|
Owner = 0,
|
||||||
Admin = 1,
|
Admin = 1,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum PolicyType {
|
export enum PolicyType {
|
||||||
TwoFactorAuthentication = 0, // Requires users to have 2fa enabled
|
TwoFactorAuthentication = 0, // Requires users to have 2fa enabled
|
||||||
MasterPassword = 1, // Sets minimum requirements for master password complexity
|
MasterPassword = 1, // Sets minimum requirements for master password complexity
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum ProviderStatusType {
|
export enum ProviderStatusType {
|
||||||
Pending = 0,
|
Pending = 0,
|
||||||
Created = 1,
|
Created = 1,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum ProviderType {
|
export enum ProviderType {
|
||||||
Msp = 0,
|
Msp = 0,
|
||||||
Reseller = 1,
|
Reseller = 1,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum ProviderUserStatusType {
|
export enum ProviderUserStatusType {
|
||||||
Invited = 0,
|
Invited = 0,
|
||||||
Accepted = 1,
|
Accepted = 1,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum ProviderUserType {
|
export enum ProviderUserType {
|
||||||
ProviderAdmin = 0,
|
ProviderAdmin = 0,
|
||||||
ServiceUser = 1,
|
ServiceUser = 1,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum ScimProviderType {
|
export enum ScimProviderType {
|
||||||
Default = 0,
|
Default = 0,
|
||||||
AzureAd = 1,
|
AzureAd = 1,
|
||||||
|
|||||||
@@ -56,14 +56,14 @@ export class ProviderEncryptedOrganizationKey implements BaseEncryptedOrganizati
|
|||||||
) {}
|
) {}
|
||||||
|
|
||||||
async decrypt(encryptService: EncryptService, providerKeys: Record<string, SymmetricCryptoKey>) {
|
async decrypt(encryptService: EncryptService, providerKeys: Record<string, SymmetricCryptoKey>) {
|
||||||
const decValue = await encryptService.decryptToBytes(
|
const decValue = await encryptService.unwrapSymmetricKey(
|
||||||
new EncString(this.key),
|
new EncString(this.key),
|
||||||
providerKeys[this.providerId],
|
providerKeys[this.providerId],
|
||||||
);
|
);
|
||||||
if (decValue == null) {
|
if (decValue == null) {
|
||||||
throw new Error("Failed to decrypt organization key");
|
throw new Error("Failed to decrypt organization key");
|
||||||
}
|
}
|
||||||
return new SymmetricCryptoKey(decValue) as OrgKey;
|
return decValue as OrgKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
get encryptedOrganizationKey() {
|
get encryptedOrganizationKey() {
|
||||||
|
|||||||
@@ -6,4 +6,5 @@ import { OrganizationNoPaymentMethodCreateRequest } from "../../../billing/model
|
|||||||
export class OrganizationCreateRequest extends OrganizationNoPaymentMethodCreateRequest {
|
export class OrganizationCreateRequest extends OrganizationNoPaymentMethodCreateRequest {
|
||||||
paymentMethodType: PaymentMethodType;
|
paymentMethodType: PaymentMethodType;
|
||||||
paymentToken: string;
|
paymentToken: string;
|
||||||
|
skipTrial?: boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum AuthRequestType {
|
export enum AuthRequestType {
|
||||||
AuthenticateAndUnlock = 0,
|
AuthenticateAndUnlock = 0,
|
||||||
Unlock = 1,
|
Unlock = 1,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum AuthenticationStatus {
|
export enum AuthenticationStatus {
|
||||||
LoggedOut = 0,
|
LoggedOut = 0,
|
||||||
Locked = 1,
|
Locked = 1,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// FIXME: update to use a const object instead of a typescript enum
|
||||||
|
// eslint-disable-next-line @bitwarden/platform/no-enums
|
||||||
export enum AuthenticationType {
|
export enum AuthenticationType {
|
||||||
Password = 0,
|
Password = 0,
|
||||||
Sso = 1,
|
Sso = 1,
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user