1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-10-08 05:47:50 +02:00

[PM-12740] Move CollectionAdminService to AC Team (#11269)

This commit is contained in:
Thomas Rittson 2024-10-02 08:07:13 +10:00 committed by GitHub
parent 8b034cda7d
commit 363acf58f9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
41 changed files with 113 additions and 81 deletions

View File

@ -1,9 +1,8 @@
import { CollectionAccessSelectionView } from "@bitwarden/admin-console/common";
import { View } from "@bitwarden/common/src/models/view/view"; import { View } from "@bitwarden/common/src/models/view/view";
import { GroupDetailsResponse, GroupResponse } from "../services/group/responses/group.response"; import { GroupDetailsResponse, GroupResponse } from "../services/group/responses/group.response";
import { CollectionAccessSelectionView } from "./collection-access-selection.view";
export class GroupView implements View { export class GroupView implements View {
id: string; id: string;
organizationId: string; organizationId: string;

View File

@ -1,4 +1,3 @@
export * from "./collection-access-selection.view";
export * from "./group.view"; export * from "./group.view";
export * from "./organization-user.view"; export * from "./organization-user.view";
export * from "./organization-user-admin-view"; export * from "./organization-user-admin-view";

View File

@ -1,11 +1,10 @@
import { CollectionAccessSelectionView } from "@bitwarden/admin-console/common";
import { import {
OrganizationUserStatusType, OrganizationUserStatusType,
OrganizationUserType, OrganizationUserType,
} from "@bitwarden/common/admin-console/enums"; } from "@bitwarden/common/admin-console/enums";
import { PermissionsApi } from "@bitwarden/common/admin-console/models/api/permissions.api"; import { PermissionsApi } from "@bitwarden/common/admin-console/models/api/permissions.api";
import { CollectionAccessSelectionView } from "./collection-access-selection.view";
export class OrganizationUserAdminView { export class OrganizationUserAdminView {
id: string; id: string;
userId: string; userId: string;

View File

@ -1,12 +1,13 @@
import { OrganizationUserUserDetailsResponse } from "@bitwarden/admin-console/common"; import {
OrganizationUserUserDetailsResponse,
CollectionAccessSelectionView,
} from "@bitwarden/admin-console/common";
import { import {
OrganizationUserStatusType, OrganizationUserStatusType,
OrganizationUserType, OrganizationUserType,
} from "@bitwarden/common/admin-console/enums"; } from "@bitwarden/common/admin-console/enums";
import { PermissionsApi } from "@bitwarden/common/admin-console/models/api/permissions.api"; import { PermissionsApi } from "@bitwarden/common/admin-console/models/api/permissions.api";
import { CollectionAccessSelectionView } from "./collection-access-selection.view";
export class OrganizationUserView { export class OrganizationUserView {
id: string; id: string;
userId: string; userId: string;

View File

@ -14,7 +14,11 @@ import {
takeUntil, takeUntil,
} from "rxjs"; } from "rxjs";
import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import {
CollectionAdminService,
CollectionAdminView,
OrganizationUserApiService,
} from "@bitwarden/admin-console/common";
import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service";
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 { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
@ -26,8 +30,6 @@ import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/pl
import { UserId } from "@bitwarden/common/types/guid"; import { UserId } from "@bitwarden/common/types/guid";
import { DialogService, ToastService } from "@bitwarden/components"; import { DialogService, ToastService } from "@bitwarden/components";
import { CollectionAdminService } from "../../../vault/core/collection-admin.service";
import { CollectionAdminView } from "../../../vault/core/views/collection-admin.view";
import { InternalGroupService as GroupService, GroupView } from "../core"; import { InternalGroupService as GroupService, GroupView } from "../core";
import { import {
AccessItemType, AccessItemType,

View File

@ -13,7 +13,12 @@ import {
takeUntil, takeUntil,
} from "rxjs"; } from "rxjs";
import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import {
CollectionAccessSelectionView,
CollectionAdminService,
CollectionAdminView,
OrganizationUserApiService,
} from "@bitwarden/admin-console/common";
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 { import {
OrganizationUserStatusType, OrganizationUserStatusType,
@ -24,14 +29,10 @@ import { Organization } from "@bitwarden/common/admin-console/models/domain/orga
import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
import { ProductTierType } from "@bitwarden/common/billing/enums"; import { ProductTierType } from "@bitwarden/common/billing/enums";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view"; import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view";
import { DialogService, ToastService } from "@bitwarden/components"; import { DialogService, ToastService } from "@bitwarden/components";
import { CollectionAdminService } from "../../../../../vault/core/collection-admin.service";
import { CollectionAdminView } from "../../../../../vault/core/views/collection-admin.view";
import { import {
CollectionAccessSelectionView,
GroupService, GroupService,
GroupView, GroupView,
OrganizationUserAdminView, OrganizationUserAdminView,
@ -133,7 +134,6 @@ export class MemberDialogComponent implements OnDestroy {
@Inject(DIALOG_DATA) protected params: MemberDialogParams, @Inject(DIALOG_DATA) protected params: MemberDialogParams,
private dialogRef: DialogRef<MemberDialogResult>, private dialogRef: DialogRef<MemberDialogResult>,
private i18nService: I18nService, private i18nService: I18nService,
private platformUtilsService: PlatformUtilsService,
private formBuilder: FormBuilder, private formBuilder: FormBuilder,
// TODO: We should really look into consolidating naming conventions for these services // TODO: We should really look into consolidating naming conventions for these services
private collectionAdminService: CollectionAdminService, private collectionAdminService: CollectionAdminService,

View File

@ -2,6 +2,7 @@ import { Component, OnInit } from "@angular/core";
import { ActivatedRoute, Router } from "@angular/router"; import { ActivatedRoute, Router } from "@angular/router";
import { firstValueFrom } from "rxjs"; import { firstValueFrom } from "rxjs";
import { CollectionAdminService } from "@bitwarden/admin-console/common";
import { import {
canAccessVaultTab, canAccessVaultTab,
OrganizationService, OrganizationService,
@ -11,7 +12,6 @@ import { ImportComponent } from "@bitwarden/importer/ui";
import { LooseComponentsModule, SharedModule } from "../../../shared"; import { LooseComponentsModule, SharedModule } from "../../../shared";
import { ImportCollectionAdminService } from "../../../tools/import/import-collection-admin.service"; import { ImportCollectionAdminService } from "../../../tools/import/import-collection-admin.service";
import { CollectionAdminService } from "../../../vault/core/collection-admin.service";
@Component({ @Component({
templateUrl: "org-import.component.html", templateUrl: "org-import.component.html",

View File

@ -1,11 +1,14 @@
import { OrganizationUserUserDetailsResponse } from "@bitwarden/admin-console/common"; import {
CollectionAccessSelectionView,
OrganizationUserUserDetailsResponse,
} from "@bitwarden/admin-console/common";
import { import {
OrganizationUserStatusType, OrganizationUserStatusType,
OrganizationUserType, OrganizationUserType,
} from "@bitwarden/common/admin-console/enums"; } from "@bitwarden/common/admin-console/enums";
import { SelectItemView } from "@bitwarden/components"; import { SelectItemView } from "@bitwarden/components";
import { CollectionAccessSelectionView, GroupView } from "../../../core"; 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.

View File

@ -1,7 +1,11 @@
import { CommonModule } from "@angular/common"; import { CommonModule } from "@angular/common";
import { APP_INITIALIZER, NgModule, Optional, SkipSelf } from "@angular/core"; import { APP_INITIALIZER, NgModule, Optional, SkipSelf } from "@angular/core";
import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import {
CollectionAdminService,
DefaultCollectionAdminService,
OrganizationUserApiService,
} from "@bitwarden/admin-console/common";
import { SafeProvider, safeProvider } from "@bitwarden/angular/platform/utils/safe-provider"; import { SafeProvider, safeProvider } from "@bitwarden/angular/platform/utils/safe-provider";
import { import {
CLIENT_TYPE, CLIENT_TYPE,
@ -60,6 +64,7 @@ import {
ThemeStateService, ThemeStateService,
} from "@bitwarden/common/platform/theming/theme-state.service"; } from "@bitwarden/common/platform/theming/theme-state.service";
import { VaultTimeout, VaultTimeoutStringType } from "@bitwarden/common/types/vault-timeout.type"; import { VaultTimeout, VaultTimeoutStringType } from "@bitwarden/common/types/vault-timeout.type";
import { CollectionService } from "@bitwarden/common/vault/abstractions/collection.service";
import { BiometricsService } from "@bitwarden/key-management"; import { BiometricsService } from "@bitwarden/key-management";
import { PolicyListService } from "../admin-console/core/policy-list.service"; import { PolicyListService } from "../admin-console/core/policy-list.service";
@ -75,7 +80,6 @@ import { WebBiometricsService } from "../key-management/web-biometric.service";
import { WebEnvironmentService } from "../platform/web-environment.service"; import { WebEnvironmentService } from "../platform/web-environment.service";
import { WebMigrationRunner } from "../platform/web-migration-runner"; import { WebMigrationRunner } from "../platform/web-migration-runner";
import { WebStorageServiceProvider } from "../platform/web-storage-service.provider"; import { WebStorageServiceProvider } from "../platform/web-storage-service.provider";
import { CollectionAdminService } from "../vault/core/collection-admin.service";
import { EventService } from "./event.service"; import { EventService } from "./event.service";
import { InitService } from "./init.service"; import { InitService } from "./init.service";
@ -149,7 +153,6 @@ const safeProviders: SafeProvider[] = [
useClass: WebFileDownloadService, useClass: WebFileDownloadService,
useAngularDecorators: true, useAngularDecorators: true,
}), }),
safeProvider(CollectionAdminService),
safeProvider({ safeProvider({
provide: WindowStorageService, provide: WindowStorageService,
useFactory: () => new WindowStorageService(window.localStorage), useFactory: () => new WindowStorageService(window.localStorage),
@ -227,6 +230,11 @@ const safeProviders: SafeProvider[] = [
useClass: DefaultAppIdService, useClass: DefaultAppIdService,
deps: [OBSERVABLE_DISK_LOCAL_STORAGE, LogService], deps: [OBSERVABLE_DISK_LOCAL_STORAGE, LogService],
}), }),
safeProvider({
provide: CollectionAdminService,
useClass: DefaultCollectionAdminService,
deps: [ApiService, CryptoServiceAbstraction, EncryptService, CollectionService],
}),
]; ];
@NgModule({ @NgModule({

View File

@ -1,8 +1,8 @@
import { Injectable } from "@angular/core"; import { Injectable } from "@angular/core";
import { CollectionAdminService, CollectionAdminView } from "@bitwarden/admin-console/common";
import { ImportCollectionServiceAbstraction } from "../../../../../../libs/importer/src/services/import-collection.service.abstraction"; import { ImportCollectionServiceAbstraction } from "../../../../../../libs/importer/src/services/import-collection.service.abstraction";
import { CollectionAdminService } from "../../vault/core/collection-admin.service";
import { CollectionAdminView } from "../../vault/core/views/collection-admin.view";
@Injectable() @Injectable()
export class ImportCollectionAdminService implements ImportCollectionServiceAbstraction { export class ImportCollectionAdminService implements ImportCollectionServiceAbstraction {

View File

@ -14,6 +14,9 @@ import {
import { first } from "rxjs/operators"; import { first } from "rxjs/operators";
import { import {
CollectionAccessSelectionView,
CollectionAdminService,
CollectionAdminView,
OrganizationUserApiService, OrganizationUserApiService,
OrganizationUserUserMiniResponse, OrganizationUserUserMiniResponse,
} from "@bitwarden/admin-console/common"; } from "@bitwarden/admin-console/common";
@ -26,11 +29,7 @@ import { CollectionResponse } from "@bitwarden/common/vault/models/response/coll
import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view"; import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view";
import { BitValidators, DialogService } from "@bitwarden/components"; import { BitValidators, DialogService } from "@bitwarden/components";
import { import { GroupService, GroupView } from "../../../admin-console/organizations/core";
CollectionAccessSelectionView,
GroupService,
GroupView,
} from "../../../admin-console/organizations/core";
import { PermissionMode } from "../../../admin-console/organizations/shared/components/access-selector/access-selector.component"; import { PermissionMode } from "../../../admin-console/organizations/shared/components/access-selector/access-selector.component";
import { import {
AccessItemType, AccessItemType,
@ -40,8 +39,6 @@ import {
convertToPermission, convertToPermission,
convertToSelectionView, convertToSelectionView,
} from "../../../admin-console/organizations/shared/components/access-selector/access-selector.models"; } from "../../../admin-console/organizations/shared/components/access-selector/access-selector.models";
import { CollectionAdminService } from "../../core/collection-admin.service";
import { CollectionAdminView } from "../../core/views/collection-admin.view";
export enum CollectionDialogTabType { export enum CollectionDialogTabType {
Info = 0, Info = 0,

View File

@ -1,12 +1,11 @@
import { Component, EventEmitter, Input, Output } from "@angular/core"; import { Component, EventEmitter, Input, Output } from "@angular/core";
import { CollectionAdminView, Unassigned } from "@bitwarden/admin-console/common";
import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view"; import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view";
import { GroupView } from "../../../admin-console/organizations/core"; import { GroupView } from "../../../admin-console/organizations/core";
import { CollectionAdminView } from "../../core/views/collection-admin.view";
import { Unassigned } from "../../individual-vault/vault-filter/shared/models/routed-vault-filter.model";
import { import {
convertToPermission, convertToPermission,

View File

@ -1,13 +1,13 @@
import { SelectionModel } from "@angular/cdk/collections"; import { SelectionModel } from "@angular/cdk/collections";
import { Component, EventEmitter, Input, Output } from "@angular/core"; import { Component, EventEmitter, Input, Output } from "@angular/core";
import { Unassigned } from "@bitwarden/admin-console/common";
import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view"; import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view";
import { TableDataSource } from "@bitwarden/components"; import { TableDataSource } from "@bitwarden/components";
import { GroupView } from "../../../admin-console/organizations/core"; import { GroupView } from "../../../admin-console/organizations/core";
import { Unassigned } from "../../individual-vault/vault-filter/shared/models/routed-vault-filter.model";
import { VaultItem } from "./vault-item"; import { VaultItem } from "./vault-item";
import { VaultItemEvent } from "./vault-item-event"; import { VaultItemEvent } from "./vault-item-event";

View File

@ -3,6 +3,11 @@ import { RouterModule } from "@angular/router";
import { applicationConfig, Meta, moduleMetadata, StoryObj } from "@storybook/angular"; import { applicationConfig, Meta, moduleMetadata, StoryObj } from "@storybook/angular";
import { BehaviorSubject, of } from "rxjs"; import { BehaviorSubject, of } from "rxjs";
import {
CollectionAccessSelectionView,
CollectionAdminView,
Unassigned,
} from "@bitwarden/admin-console/common";
import { OrganizationUserType } from "@bitwarden/common/admin-console/enums"; import { OrganizationUserType } from "@bitwarden/common/admin-console/enums";
import { PermissionsApi } from "@bitwarden/common/admin-console/models/api/permissions.api"; import { PermissionsApi } from "@bitwarden/common/admin-console/models/api/permissions.api";
import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
@ -19,13 +24,8 @@ import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
import { LoginUriView } from "@bitwarden/common/vault/models/view/login-uri.view"; import { LoginUriView } from "@bitwarden/common/vault/models/view/login-uri.view";
import { LoginView } from "@bitwarden/common/vault/models/view/login.view"; import { LoginView } from "@bitwarden/common/vault/models/view/login.view";
import { import { GroupView } from "../../../admin-console/organizations/core";
CollectionAccessSelectionView,
GroupView,
} from "../../../admin-console/organizations/core";
import { PreloadedEnglishI18nModule } from "../../../core/tests"; import { PreloadedEnglishI18nModule } from "../../../core/tests";
import { CollectionAdminView } from "../../core/views/collection-admin.view";
import { Unassigned } from "../../individual-vault/vault-filter/shared/models/routed-vault-filter.model";
import { VaultItemsComponent } from "./vault-items.component"; import { VaultItemsComponent } from "./vault-items.component";
import { VaultItemsModule } from "./vault-items.module"; import { VaultItemsModule } from "./vault-items.module";

View File

@ -1,13 +1,12 @@
import { Component, Input, OnChanges } from "@angular/core"; import { Component, Input, OnChanges } from "@angular/core";
import { firstValueFrom } from "rxjs"; import { firstValueFrom } from "rxjs";
import { Unassigned } from "@bitwarden/admin-console/common";
import { AvatarService } from "@bitwarden/common/auth/abstractions/avatar.service"; import { AvatarService } from "@bitwarden/common/auth/abstractions/avatar.service";
import { TokenService } from "@bitwarden/common/auth/abstractions/token.service"; import { TokenService } from "@bitwarden/common/auth/abstractions/token.service";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
import { Utils } from "@bitwarden/common/platform/misc/utils"; import { Utils } from "@bitwarden/common/platform/misc/utils";
import { Unassigned } from "../vault-filter/shared/models/routed-vault-filter.model";
@Component({ @Component({
selector: "app-org-badge", selector: "app-org-badge",
templateUrl: "organization-name-badge.component.html", templateUrl: "organization-name-badge.component.html",

View File

@ -1,11 +1,11 @@
import { Observable } from "rxjs"; import { Observable } from "rxjs";
import { CollectionAdminView } from "@bitwarden/admin-console/common";
import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
import { CollectionView } from "@bitwarden/common/src/vault/models/view/collection.view"; import { CollectionView } from "@bitwarden/common/src/vault/models/view/collection.view";
import { FolderView } from "@bitwarden/common/src/vault/models/view/folder.view"; import { FolderView } from "@bitwarden/common/src/vault/models/view/folder.view";
import { TreeNode } from "@bitwarden/common/vault/models/domain/tree-node"; import { TreeNode } from "@bitwarden/common/vault/models/domain/tree-node";
import { CollectionAdminView } from "../../../../core/views/collection-admin.view";
import { import {
CipherTypeFilter, CipherTypeFilter,
CollectionFilter, CollectionFilter,

View File

@ -2,15 +2,12 @@ import { Injectable } from "@angular/core";
import { Router } from "@angular/router"; import { Router } from "@angular/router";
import { combineLatest, map, Observable } from "rxjs"; import { combineLatest, map, Observable } from "rxjs";
import { Unassigned } from "@bitwarden/admin-console/common";
import { TreeNode } from "@bitwarden/common/vault/models/domain/tree-node"; import { TreeNode } from "@bitwarden/common/vault/models/domain/tree-node";
import { ServiceUtils } from "@bitwarden/common/vault/service-utils"; import { ServiceUtils } from "@bitwarden/common/vault/service-utils";
import { RoutedVaultFilterBridge } from "../shared/models/routed-vault-filter-bridge.model"; import { RoutedVaultFilterBridge } from "../shared/models/routed-vault-filter-bridge.model";
import { import { RoutedVaultFilterModel, All } from "../shared/models/routed-vault-filter.model";
RoutedVaultFilterModel,
Unassigned,
All,
} from "../shared/models/routed-vault-filter.model";
import { VaultFilter } from "../shared/models/vault-filter.model"; import { VaultFilter } from "../shared/models/vault-filter.model";
import { import {
CipherTypeFilter, CipherTypeFilter,

View File

@ -10,6 +10,7 @@ import {
switchMap, switchMap,
} from "rxjs"; } from "rxjs";
import { CollectionAdminView } from "@bitwarden/admin-console/common";
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 { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction";
import { PolicyType } from "@bitwarden/common/admin-console/enums"; import { PolicyType } from "@bitwarden/common/admin-console/enums";
@ -26,7 +27,6 @@ import { FolderView } from "@bitwarden/common/vault/models/view/folder.view";
import { ServiceUtils } from "@bitwarden/common/vault/service-utils"; import { ServiceUtils } from "@bitwarden/common/vault/service-utils";
import { COLLAPSED_GROUPINGS } from "@bitwarden/common/vault/services/key-state/collapsed-groupings.state"; import { COLLAPSED_GROUPINGS } from "@bitwarden/common/vault/services/key-state/collapsed-groupings.state";
import { CollectionAdminView } from "../../../core/views/collection-admin.view";
import { import {
CipherTypeFilter, CipherTypeFilter,
CollectionFilter, CollectionFilter,

View File

@ -1,8 +1,9 @@
import { Unassigned } from "@bitwarden/admin-console/common";
import { CipherType } from "@bitwarden/common/vault/enums"; import { CipherType } from "@bitwarden/common/vault/enums";
import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
import { createFilterFunction } from "./filter-function"; import { createFilterFunction } from "./filter-function";
import { Unassigned, All } from "./routed-vault-filter.model"; import { All } from "./routed-vault-filter.model";
describe("createFilter", () => { describe("createFilter", () => {
describe("given a generic cipher", () => { describe("given a generic cipher", () => {

View File

@ -1,7 +1,8 @@
import { Unassigned } from "@bitwarden/admin-console/common";
import { CipherType } from "@bitwarden/common/vault/enums"; import { CipherType } from "@bitwarden/common/vault/enums";
import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
import { All, RoutedVaultFilterModel, Unassigned } from "./routed-vault-filter.model"; import { All, RoutedVaultFilterModel } from "./routed-vault-filter.model";
export type FilterFunction = (cipher: CipherView) => boolean; export type FilterFunction = (cipher: CipherView) => boolean;

View File

@ -1,3 +1,4 @@
import { Unassigned } from "@bitwarden/admin-console/common";
import { CipherType } from "@bitwarden/common/vault/enums"; import { CipherType } from "@bitwarden/common/vault/enums";
import { TreeNode } from "@bitwarden/common/vault/models/domain/tree-node"; import { TreeNode } from "@bitwarden/common/vault/models/domain/tree-node";
@ -8,7 +9,6 @@ import {
isRoutedVaultFilterItemType, isRoutedVaultFilterItemType,
RoutedVaultFilterItemType, RoutedVaultFilterItemType,
RoutedVaultFilterModel, RoutedVaultFilterModel,
Unassigned,
} from "./routed-vault-filter.model"; } from "./routed-vault-filter.model";
import { VaultFilter, VaultFilterFunction } from "./vault-filter.model"; import { VaultFilter, VaultFilterFunction } from "./vault-filter.model";
import { import {

View File

@ -1,5 +1,3 @@
export const Unassigned = "unassigned";
export const All = "all"; export const All = "all";
// TODO: Remove `All` when moving to vertical navigation. // TODO: Remove `All` when moving to vertical navigation.

View File

@ -1,10 +1,9 @@
import { CollectionAdminView } from "@bitwarden/admin-console/common";
import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
import { FolderView } from "@bitwarden/common/src/vault/models/view/folder.view"; import { FolderView } from "@bitwarden/common/src/vault/models/view/folder.view";
import { CipherType } from "@bitwarden/common/vault/enums"; import { CipherType } from "@bitwarden/common/vault/enums";
import { ITreeNodeObject } from "@bitwarden/common/vault/models/domain/tree-node"; import { ITreeNodeObject } from "@bitwarden/common/vault/models/domain/tree-node";
import { CollectionAdminView } from "../../../../core/views/collection-admin.view";
export type CipherStatus = "all" | "favorites" | "trash" | CipherType; export type CipherStatus = "all" | "favorites" | "trash" | CipherType;
export type CipherTypeFilter = ITreeNodeObject & { type: CipherStatus; icon: string }; export type CipherTypeFilter = ITreeNodeObject & { type: CipherStatus; icon: string };

View File

@ -9,6 +9,7 @@ import {
} from "@angular/core"; } from "@angular/core";
import { firstValueFrom } from "rxjs"; import { firstValueFrom } from "rxjs";
import { Unassigned } from "@bitwarden/admin-console/common";
import { JslibModule } from "@bitwarden/angular/jslib.module"; import { JslibModule } from "@bitwarden/angular/jslib.module";
import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum";
@ -26,7 +27,6 @@ import { PipesModule } from "../pipes/pipes.module";
import { import {
All, All,
RoutedVaultFilterModel, RoutedVaultFilterModel,
Unassigned,
} from "../vault-filter/shared/models/routed-vault-filter.model"; } from "../vault-filter/shared/models/routed-vault-filter.model";
@Component({ @Component({

View File

@ -28,6 +28,7 @@ import {
tap, tap,
} from "rxjs/operators"; } from "rxjs/operators";
import { Unassigned } from "@bitwarden/admin-console/common";
import { SearchPipe } from "@bitwarden/angular/pipes/search.pipe"; import { SearchPipe } from "@bitwarden/angular/pipes/search.pipe";
import { ModalService } from "@bitwarden/angular/services/modal.service"; import { ModalService } from "@bitwarden/angular/services/modal.service";
import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service";
@ -118,7 +119,6 @@ import { createFilterFunction } from "./vault-filter/shared/models/filter-functi
import { import {
All, All,
RoutedVaultFilterModel, RoutedVaultFilterModel,
Unassigned,
} from "./vault-filter/shared/models/routed-vault-filter.model"; } from "./vault-filter/shared/models/routed-vault-filter.model";
import { VaultFilter } from "./vault-filter/shared/models/vault-filter.model"; import { VaultFilter } from "./vault-filter/shared/models/vault-filter.model";
import { FolderFilter, OrganizationFilter } from "./vault-filter/shared/models/vault-filter.type"; import { FolderFilter, OrganizationFilter } from "./vault-filter/shared/models/vault-filter.type";

View File

@ -3,7 +3,10 @@ import { Component, Inject, OnDestroy } from "@angular/core";
import { FormBuilder } from "@angular/forms"; import { FormBuilder } from "@angular/forms";
import { combineLatest, of, Subject, switchMap, takeUntil } from "rxjs"; import { combineLatest, of, Subject, switchMap, takeUntil } from "rxjs";
import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import {
CollectionAdminService,
OrganizationUserApiService,
} from "@bitwarden/admin-console/common";
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 { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
@ -23,7 +26,6 @@ import {
PermissionMode, PermissionMode,
} from "../../../admin-console/organizations/shared/components/access-selector"; } from "../../../admin-console/organizations/shared/components/access-selector";
import { SharedModule } from "../../../shared"; import { SharedModule } from "../../../shared";
import { CollectionAdminService } from "../../core/collection-admin.service";
export interface BulkCollectionsDialogParams { export interface BulkCollectionsDialogParams {
organizationId: string; organizationId: string;

View File

@ -1,6 +1,7 @@
import { Injectable, OnDestroy } from "@angular/core"; import { Injectable, OnDestroy } from "@angular/core";
import { map, Observable, ReplaySubject, Subject } from "rxjs"; import { map, Observable, ReplaySubject, Subject } from "rxjs";
import { CollectionAdminView } from "@bitwarden/admin-console/common";
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 { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
@ -10,7 +11,6 @@ import { CollectionService } from "@bitwarden/common/vault/abstractions/collecti
import { FolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction"; import { FolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction";
import { TreeNode } from "@bitwarden/common/vault/models/domain/tree-node"; import { TreeNode } from "@bitwarden/common/vault/models/domain/tree-node";
import { CollectionAdminView } from "../../../vault/core/views/collection-admin.view";
import { VaultFilterService as BaseVaultFilterService } from "../../individual-vault/vault-filter/services/vault-filter.service"; import { VaultFilterService as BaseVaultFilterService } from "../../individual-vault/vault-filter/services/vault-filter.service";
import { CollectionFilter } from "../../individual-vault/vault-filter/shared/models/vault-filter.type"; import { CollectionFilter } from "../../individual-vault/vault-filter/shared/models/vault-filter.type";

View File

@ -3,6 +3,11 @@ import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core";
import { Router } from "@angular/router"; import { Router } from "@angular/router";
import { firstValueFrom } from "rxjs"; import { firstValueFrom } from "rxjs";
import {
CollectionAdminService,
CollectionAdminView,
Unassigned,
} from "@bitwarden/admin-console/common";
import { JslibModule } from "@bitwarden/angular/jslib.module"; import { JslibModule } from "@bitwarden/angular/jslib.module";
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 { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
@ -22,13 +27,10 @@ import {
import { HeaderModule } from "../../../layouts/header/header.module"; import { HeaderModule } from "../../../layouts/header/header.module";
import { SharedModule } from "../../../shared"; import { SharedModule } from "../../../shared";
import { CollectionAdminView } from "../../../vault/core/views/collection-admin.view";
import { CollectionDialogTabType } from "../../components/collection-dialog"; import { CollectionDialogTabType } from "../../components/collection-dialog";
import { CollectionAdminService } from "../../core/collection-admin.service";
import { import {
All, All,
RoutedVaultFilterModel, RoutedVaultFilterModel,
Unassigned,
} from "../../individual-vault/vault-filter/shared/models/routed-vault-filter.model"; } from "../../individual-vault/vault-filter/shared/models/routed-vault-filter.model";
@Component({ @Component({

View File

@ -30,6 +30,11 @@ import {
withLatestFrom, withLatestFrom,
} from "rxjs/operators"; } from "rxjs/operators";
import {
CollectionAdminService,
CollectionAdminView,
Unassigned,
} from "@bitwarden/admin-console/common";
import { SearchPipe } from "@bitwarden/angular/pipes/search.pipe"; import { SearchPipe } from "@bitwarden/angular/pipes/search.pipe";
import { ModalService } from "@bitwarden/angular/services/modal.service"; import { ModalService } from "@bitwarden/angular/services/modal.service";
import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service";
@ -72,8 +77,6 @@ import {
} from "../components/collection-dialog"; } from "../components/collection-dialog";
import { VaultItemEvent } from "../components/vault-items/vault-item-event"; import { VaultItemEvent } from "../components/vault-items/vault-item-event";
import { VaultItemsModule } from "../components/vault-items/vault-items.module"; import { VaultItemsModule } from "../components/vault-items/vault-items.module";
import { CollectionAdminService } from "../core/collection-admin.service";
import { CollectionAdminView } from "../core/views/collection-admin.view";
import { import {
BulkDeleteDialogResult, BulkDeleteDialogResult,
openBulkDeleteDialog, openBulkDeleteDialog,
@ -85,7 +88,6 @@ import { createFilterFunction } from "../individual-vault/vault-filter/shared/mo
import { import {
All, All,
RoutedVaultFilterModel, RoutedVaultFilterModel,
Unassigned,
} from "../individual-vault/vault-filter/shared/models/routed-vault-filter.model"; } from "../individual-vault/vault-filter/shared/models/routed-vault-filter.model";
import { import {
openViewCipherDialog, openViewCipherDialog,

View File

@ -1,3 +1,4 @@
import { CollectionAdminView } from "@bitwarden/admin-console/common";
import { TreeNode } from "@bitwarden/common/vault/models/domain/tree-node"; import { TreeNode } from "@bitwarden/common/vault/models/domain/tree-node";
import { import {
CollectionView, CollectionView,
@ -5,8 +6,6 @@ import {
} from "@bitwarden/common/vault/models/view/collection.view"; } from "@bitwarden/common/vault/models/view/collection.view";
import { ServiceUtils } from "@bitwarden/common/vault/service-utils"; import { ServiceUtils } from "@bitwarden/common/vault/service-utils";
import { CollectionAdminView } from "../../vault/core/views/collection-admin.view";
export function getNestedCollectionTree( export function getNestedCollectionTree(
collections: CollectionAdminView[], collections: CollectionAdminView[],
): TreeNode<CollectionAdminView>[]; ): TreeNode<CollectionAdminView>[];

View File

@ -1,9 +1,9 @@
import { Injectable } from "@angular/core"; import { Injectable } from "@angular/core";
import { CollectionAccessSelectionView } from "@bitwarden/admin-console/common";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
import { EncString } from "@bitwarden/common/platform/models/domain/enc-string"; import { EncString } from "@bitwarden/common/platform/models/domain/enc-string";
import { OrganizationId } from "@bitwarden/common/types/guid"; import { OrganizationId } from "@bitwarden/common/types/guid";
import { CollectionAccessSelectionView } from "@bitwarden/web-vault/app/admin-console/organizations/core/views";
import { import {
getPermissionList, getPermissionList,
convertToPermission, convertToPermission,

View File

@ -0,0 +1,16 @@
import { CollectionDetailsResponse } from "@bitwarden/common/vault/models/response/collection.response";
import { CollectionAccessSelectionView, CollectionAdminView } from "../models";
export abstract class CollectionAdminService {
getAll: (organizationId: string) => Promise<CollectionAdminView[]>;
get: (organizationId: string, collectionId: string) => Promise<CollectionAdminView | undefined>;
save: (collection: CollectionAdminView) => Promise<CollectionDetailsResponse>;
delete: (organizationId: string, collectionId: string) => Promise<void>;
bulkAssignAccess: (
organizationId: string,
collectionIds: string[],
users: CollectionAccessSelectionView[],
groups: CollectionAccessSelectionView[],
) => Promise<void>;
}

View File

@ -0,0 +1 @@
export * from "./collection-admin.service";

View File

@ -0,0 +1,3 @@
export * from "./abstractions";
export * from "./models";
export * from "./services";

View File

@ -2,8 +2,9 @@ import { Organization } from "@bitwarden/common/admin-console/models/domain/orga
import { CollectionAccessDetailsResponse } from "@bitwarden/common/src/vault/models/response/collection.response"; import { CollectionAccessDetailsResponse } from "@bitwarden/common/src/vault/models/response/collection.response";
import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view"; import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view";
import { CollectionAccessSelectionView } from "../../../admin-console/organizations/core/views/collection-access-selection.view"; import { CollectionAccessSelectionView } from "../models";
import { Unassigned } from "../../individual-vault/vault-filter/shared/models/routed-vault-filter.model";
export const Unassigned = "unassigned";
export class CollectionAdminView extends CollectionView { export class CollectionAdminView extends CollectionView {
groups: CollectionAccessSelectionView[] = []; groups: CollectionAccessSelectionView[] = [];

View File

@ -0,0 +1,3 @@
export * from "./bulk-collection-access.request";
export * from "./collection-access-selection.view";
export * from "./collection-admin.view";

View File

@ -1,5 +1,3 @@
import { Injectable } from "@angular/core";
import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service";
import { SelectionReadOnlyRequest } from "@bitwarden/common/admin-console/models/request/selection-read-only.request"; import { SelectionReadOnlyRequest } from "@bitwarden/common/admin-console/models/request/selection-read-only.request";
import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service"; import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service";
@ -14,13 +12,14 @@ import {
CollectionResponse, CollectionResponse,
} from "@bitwarden/common/vault/models/response/collection.response"; } from "@bitwarden/common/vault/models/response/collection.response";
import { CollectionAccessSelectionView } from "../../admin-console/organizations/core"; import { CollectionAdminService } from "../abstractions";
import {
BulkCollectionAccessRequest,
CollectionAccessSelectionView,
CollectionAdminView,
} from "../models";
import { BulkCollectionAccessRequest } from "./bulk-collection-access.request"; export class DefaultCollectionAdminService implements CollectionAdminService {
import { CollectionAdminView } from "./views/collection-admin.view";
@Injectable()
export class CollectionAdminService {
constructor( constructor(
private apiService: ApiService, private apiService: ApiService,
private cryptoService: CryptoService, private cryptoService: CryptoService,

View File

@ -0,0 +1 @@
export * from "./default-collection-admin.service";

View File

@ -1 +1,2 @@
export * from "./organization-user"; export * from "./organization-user";
export * from "./collections";