mirror of
https://github.com/bitwarden/browser
synced 2025-12-11 05:43:41 +00:00
[PM-23789][PM-237090][PM-23791][PM-23792] - [Web][Desktop][Browser] - Do not import cards if policy is enabled (#15740)
* restrict item types in import * add comment * fix spec * fix dep * clean up logic
This commit is contained in:
@@ -1070,6 +1070,7 @@ export default class MainBackground {
|
|||||||
this.pinService,
|
this.pinService,
|
||||||
this.accountService,
|
this.accountService,
|
||||||
this.sdkService,
|
this.sdkService,
|
||||||
|
this.restrictedItemTypesService,
|
||||||
);
|
);
|
||||||
|
|
||||||
this.individualVaultExportService = new IndividualVaultExportService(
|
this.individualVaultExportService = new IndividualVaultExportService(
|
||||||
|
|||||||
@@ -821,6 +821,7 @@ export class ServiceContainer {
|
|||||||
this.pinService,
|
this.pinService,
|
||||||
this.accountService,
|
this.accountService,
|
||||||
this.sdkService,
|
this.sdkService,
|
||||||
|
this.restrictedItemTypesService,
|
||||||
);
|
);
|
||||||
|
|
||||||
this.individualExportService = new IndividualVaultExportService(
|
this.individualExportService = new IndividualVaultExportService(
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ const safeProviders: SafeProvider[] = [
|
|||||||
PinServiceAbstraction,
|
PinServiceAbstraction,
|
||||||
AccountService,
|
AccountService,
|
||||||
SdkService,
|
SdkService,
|
||||||
|
RestrictedItemTypesService,
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.servi
|
|||||||
import { FolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction";
|
import { FolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction";
|
||||||
import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
|
import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
|
||||||
import { FolderView } from "@bitwarden/common/vault/models/view/folder.view";
|
import { FolderView } from "@bitwarden/common/vault/models/view/folder.view";
|
||||||
|
import { RestrictedItemTypesService } from "@bitwarden/common/vault/services/restricted-item-types.service";
|
||||||
import { KeyService } from "@bitwarden/key-management";
|
import { KeyService } from "@bitwarden/key-management";
|
||||||
|
|
||||||
import { BitwardenPasswordProtectedImporter } from "../importers/bitwarden/bitwarden-password-protected-importer";
|
import { BitwardenPasswordProtectedImporter } from "../importers/bitwarden/bitwarden-password-protected-importer";
|
||||||
@@ -34,6 +35,7 @@ describe("ImportService", () => {
|
|||||||
let pinService: MockProxy<PinServiceAbstraction>;
|
let pinService: MockProxy<PinServiceAbstraction>;
|
||||||
let accountService: MockProxy<AccountService>;
|
let accountService: MockProxy<AccountService>;
|
||||||
let sdkService: MockSdkService;
|
let sdkService: MockSdkService;
|
||||||
|
let restrictedItemTypesService: MockProxy<RestrictedItemTypesService>;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cipherService = mock<CipherService>();
|
cipherService = mock<CipherService>();
|
||||||
@@ -45,6 +47,7 @@ describe("ImportService", () => {
|
|||||||
encryptService = mock<EncryptService>();
|
encryptService = mock<EncryptService>();
|
||||||
pinService = mock<PinServiceAbstraction>();
|
pinService = mock<PinServiceAbstraction>();
|
||||||
sdkService = new MockSdkService();
|
sdkService = new MockSdkService();
|
||||||
|
restrictedItemTypesService = mock<RestrictedItemTypesService>();
|
||||||
|
|
||||||
importService = new ImportService(
|
importService = new ImportService(
|
||||||
cipherService,
|
cipherService,
|
||||||
@@ -57,6 +60,7 @@ describe("ImportService", () => {
|
|||||||
pinService,
|
pinService,
|
||||||
accountService,
|
accountService,
|
||||||
sdkService,
|
sdkService,
|
||||||
|
restrictedItemTypesService,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import { CipherRequest } from "@bitwarden/common/vault/models/request/cipher.req
|
|||||||
import { FolderWithIdRequest } from "@bitwarden/common/vault/models/request/folder-with-id.request";
|
import { FolderWithIdRequest } from "@bitwarden/common/vault/models/request/folder-with-id.request";
|
||||||
import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
|
import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
|
||||||
import { FolderView } from "@bitwarden/common/vault/models/view/folder.view";
|
import { FolderView } from "@bitwarden/common/vault/models/view/folder.view";
|
||||||
|
import { RestrictedItemTypesService } from "@bitwarden/common/vault/services/restricted-item-types.service";
|
||||||
import { KeyService } from "@bitwarden/key-management";
|
import { KeyService } from "@bitwarden/key-management";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@@ -119,6 +120,7 @@ export class ImportService implements ImportServiceAbstraction {
|
|||||||
private pinService: PinServiceAbstraction,
|
private pinService: PinServiceAbstraction,
|
||||||
private accountService: AccountService,
|
private accountService: AccountService,
|
||||||
private sdkService: SdkService,
|
private sdkService: SdkService,
|
||||||
|
private restrictedItemTypesService: RestrictedItemTypesService,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
getImportOptions(): ImportOption[] {
|
getImportOptions(): ImportOption[] {
|
||||||
@@ -166,6 +168,17 @@ export class ImportService implements ImportServiceAbstraction {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const restrictedItemTypes = await firstValueFrom(
|
||||||
|
this.restrictedItemTypesService.restricted$.pipe(
|
||||||
|
map((restrictedItemTypes) => restrictedItemTypes.map((r) => r.cipherType)),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Filter out restricted item types from the import result
|
||||||
|
importResult.ciphers = importResult.ciphers.filter(
|
||||||
|
(cipher) => !restrictedItemTypes.includes(cipher.type),
|
||||||
|
);
|
||||||
|
|
||||||
if (organizationId && !selectedImportTarget && !canAccessImportExport) {
|
if (organizationId && !selectedImportTarget && !canAccessImportExport) {
|
||||||
const hasUnassignedCollections =
|
const hasUnassignedCollections =
|
||||||
importResult.collectionRelationships.length < importResult.ciphers.length;
|
importResult.collectionRelationships.length < importResult.ciphers.length;
|
||||||
|
|||||||
Reference in New Issue
Block a user