diff --git a/apps/browser/tsconfig.json b/apps/browser/tsconfig.json index b44d994f4e7..a6119a2e0a7 100644 --- a/apps/browser/tsconfig.json +++ b/apps/browser/tsconfig.json @@ -12,7 +12,7 @@ "baseUrl": ".", "lib": ["ES2021.String"], "paths": { - "@bitwarden/admin-console": ["../../libs/admin-console/src"], + "@bitwarden/admin-console/common": ["../../libs/admin-console/src/common"], "@bitwarden/angular/*": ["../../libs/angular/src/*"], "@bitwarden/auth/common": ["../../libs/auth/src/common"], "@bitwarden/auth/angular": ["../../libs/auth/src/angular"], diff --git a/apps/cli/src/admin-console/commands/confirm.command.ts b/apps/cli/src/admin-console/commands/confirm.command.ts index c6d9e4bd574..066cca48f13 100644 --- a/apps/cli/src/admin-console/commands/confirm.command.ts +++ b/apps/cli/src/admin-console/commands/confirm.command.ts @@ -1,6 +1,8 @@ +import { + OrganizationUserApiService, + OrganizationUserConfirmRequest, +} from "@bitwarden/admin-console/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; -import { OrganizationUserConfirmRequest } from "@bitwarden/common/admin-console/abstractions/organization-user/requests"; import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service"; import { Utils } from "@bitwarden/common/platform/misc/utils"; @@ -10,7 +12,7 @@ export class ConfirmCommand { constructor( private apiService: ApiService, private cryptoService: CryptoService, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, ) {} async run(object: string, id: string, cmdOptions: Record): Promise { @@ -42,7 +44,7 @@ export class ConfirmCommand { if (orgKey == null) { throw new Error("No encryption key for this organization."); } - const orgUser = await this.organizationUserService.getOrganizationUser( + const orgUser = await this.organizationUserApiService.getOrganizationUser( options.organizationId, id, ); @@ -54,7 +56,7 @@ export class ConfirmCommand { const key = await this.cryptoService.rsaEncrypt(orgKey.key, publicKey); const req = new OrganizationUserConfirmRequest(); req.key = key.encryptedString; - await this.organizationUserService.postOrganizationUserConfirm( + await this.organizationUserApiService.postOrganizationUserConfirm( options.organizationId, id, req, diff --git a/apps/cli/src/commands/list.command.ts b/apps/cli/src/commands/list.command.ts index 88574635e1c..692a5c9bab3 100644 --- a/apps/cli/src/commands/list.command.ts +++ b/apps/cli/src/commands/list.command.ts @@ -1,10 +1,10 @@ import { firstValueFrom } from "rxjs"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { EventCollectionService } from "@bitwarden/common/abstractions/event/event-collection.service"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { EventType } from "@bitwarden/common/enums"; import { ListResponse as ApiListResponse } from "@bitwarden/common/models/response/list.response"; import { Utils } from "@bitwarden/common/platform/misc/utils"; @@ -35,7 +35,7 @@ export class ListCommand { private collectionService: CollectionService, private organizationService: OrganizationService, private searchService: SearchService, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, private apiService: ApiService, private eventCollectionService: EventCollectionService, ) {} @@ -211,7 +211,7 @@ export class ListCommand { } try { - const response = await this.organizationUserService.getAllUsers(options.organizationId); + const response = await this.organizationUserApiService.getAllUsers(options.organizationId); const res = new ListResponse( response.data.map((r) => { const u = new OrganizationUserResponse(); diff --git a/apps/cli/src/oss-serve-configurator.ts b/apps/cli/src/oss-serve-configurator.ts index 6e0fa1c43c3..d7ef9ac871d 100644 --- a/apps/cli/src/oss-serve-configurator.ts +++ b/apps/cli/src/oss-serve-configurator.ts @@ -71,7 +71,7 @@ export class OssServeConfigurator { this.serviceContainer.collectionService, this.serviceContainer.organizationService, this.serviceContainer.searchService, - this.serviceContainer.organizationUserService, + this.serviceContainer.organizationUserApiService, this.serviceContainer.apiService, this.serviceContainer.eventCollectionService, ); @@ -114,7 +114,7 @@ export class OssServeConfigurator { this.confirmCommand = new ConfirmCommand( this.serviceContainer.apiService, this.serviceContainer.cryptoService, - this.serviceContainer.organizationUserService, + this.serviceContainer.organizationUserApiService, ); this.restoreCommand = new RestoreCommand(this.serviceContainer.cipherService); this.shareCommand = new ShareCommand( diff --git a/apps/cli/src/service-container/service-container.ts b/apps/cli/src/service-container/service-container.ts index c3fd55fa8b2..fb77e41a4b6 100644 --- a/apps/cli/src/service-container/service-container.ts +++ b/apps/cli/src/service-container/service-container.ts @@ -4,6 +4,10 @@ import * as path from "path"; import * as jsdom from "jsdom"; import { firstValueFrom } from "rxjs"; +import { + OrganizationUserApiService, + DefaultOrganizationUserApiService, +} from "@bitwarden/admin-console/common"; import { InternalUserDecryptionOptionsServiceAbstraction, AuthRequestService, @@ -16,12 +20,10 @@ import { import { EventCollectionService as EventCollectionServiceAbstraction } from "@bitwarden/common/abstractions/event/event-collection.service"; import { EventUploadService as EventUploadServiceAbstraction } from "@bitwarden/common/abstractions/event/event-upload.service"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { PolicyApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy-api.service.abstraction"; import { ProviderApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/provider/provider-api.service.abstraction"; import { OrganizationApiService } from "@bitwarden/common/admin-console/services/organization/organization-api.service"; import { OrganizationService } from "@bitwarden/common/admin-console/services/organization/organization.service"; -import { OrganizationUserServiceImplementation } from "@bitwarden/common/admin-console/services/organization-user/organization-user.service.implementation"; import { PolicyApiService } from "@bitwarden/common/admin-console/services/policy/policy-api.service"; import { PolicyService } from "@bitwarden/common/admin-console/services/policy/policy.service"; import { ProviderApiService } from "@bitwarden/common/admin-console/services/provider/provider-api.service"; @@ -184,7 +186,7 @@ export class ServiceContainer { environmentService: EnvironmentService; cipherService: CipherService; folderService: InternalFolderService; - organizationUserService: OrganizationUserService; + organizationUserApiService: OrganizationUserApiService; collectionService: CollectionService; vaultTimeoutService: VaultTimeoutService; masterPasswordService: InternalMasterPasswordServiceAbstraction; @@ -492,7 +494,7 @@ export class ServiceContainer { this.providerService = new ProviderService(this.stateProvider); - this.organizationUserService = new OrganizationUserServiceImplementation(this.apiService); + this.organizationUserApiService = new DefaultOrganizationUserApiService(this.apiService); this.policyApiService = new PolicyApiService(this.policyService, this.apiService); diff --git a/apps/cli/src/vault.program.ts b/apps/cli/src/vault.program.ts index 9cf30086166..2dad9a7c68a 100644 --- a/apps/cli/src/vault.program.ts +++ b/apps/cli/src/vault.program.ts @@ -108,7 +108,7 @@ export class VaultProgram extends BaseProgram { this.serviceContainer.collectionService, this.serviceContainer.organizationService, this.serviceContainer.searchService, - this.serviceContainer.organizationUserService, + this.serviceContainer.organizationUserApiService, this.serviceContainer.apiService, this.serviceContainer.eventCollectionService, ); @@ -412,7 +412,7 @@ export class VaultProgram extends BaseProgram { const command = new ConfirmCommand( this.serviceContainer.apiService, this.serviceContainer.cryptoService, - this.serviceContainer.organizationUserService, + this.serviceContainer.organizationUserApiService, ); const response = await command.run(object, id, cmd); this.processResponse(response); diff --git a/apps/cli/tsconfig.json b/apps/cli/tsconfig.json index 0a34b05496f..d84dcdaf675 100644 --- a/apps/cli/tsconfig.json +++ b/apps/cli/tsconfig.json @@ -13,6 +13,7 @@ "baseUrl": ".", "paths": { "@bitwarden/common/spec": ["../../libs/common/spec"], + "@bitwarden/admin-console/common": ["../../libs/admin-console/src/common"], "@bitwarden/auth/common": ["../../libs/auth/src/common"], "@bitwarden/auth/angular": ["../../libs/auth/src/angular"], "@bitwarden/common/*": ["../../libs/common/src/*"], diff --git a/apps/desktop/src/app/services/services.module.ts b/apps/desktop/src/app/services/services.module.ts index be110be138b..d4b51ca1c7e 100644 --- a/apps/desktop/src/app/services/services.module.ts +++ b/apps/desktop/src/app/services/services.module.ts @@ -1,6 +1,7 @@ import { APP_INITIALIZER, NgModule } from "@angular/core"; import { Subject, merge } from "rxjs"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import { SafeProvider, safeProvider } from "@bitwarden/angular/platform/utils/safe-provider"; import { SECURE_STORAGE, @@ -26,7 +27,6 @@ import { import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vault-timeout/vault-timeout-settings.service"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { PolicyService as PolicyServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { AccountService as AccountServiceAbstraction } from "@bitwarden/common/auth/abstractions/account.service"; import { AuthService as AuthServiceAbstraction } from "@bitwarden/common/auth/abstractions/auth.service"; @@ -285,7 +285,7 @@ const safeProviders: SafeProvider[] = [ KdfConfigService, InternalMasterPasswordServiceAbstraction, OrganizationApiServiceAbstraction, - OrganizationUserService, + OrganizationUserApiService, InternalUserDecryptionOptionsServiceAbstraction, ], }), diff --git a/apps/desktop/src/auth/set-password.component.ts b/apps/desktop/src/auth/set-password.component.ts index 28f1f69a598..21bc7e8db14 100644 --- a/apps/desktop/src/auth/set-password.component.ts +++ b/apps/desktop/src/auth/set-password.component.ts @@ -1,11 +1,11 @@ import { Component, NgZone, OnDestroy, OnInit } from "@angular/core"; import { ActivatedRoute, Router } from "@angular/router"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import { SetPasswordComponent as BaseSetPasswordComponent } from "@bitwarden/angular/auth/components/set-password.component"; import { InternalUserDecryptionOptionsServiceAbstraction } from "@bitwarden/auth/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { PolicyApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy-api.service.abstraction"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; @@ -50,7 +50,7 @@ export class SetPasswordComponent extends BaseSetPasswordComponent implements On private ngZone: NgZone, stateService: StateService, organizationApiService: OrganizationApiServiceAbstraction, - organizationUserService: OrganizationUserService, + organizationUserApiService: OrganizationUserApiService, userDecryptionOptionsService: InternalUserDecryptionOptionsServiceAbstraction, ssoLoginService: SsoLoginServiceAbstraction, dialogService: DialogService, @@ -74,7 +74,7 @@ export class SetPasswordComponent extends BaseSetPasswordComponent implements On route, stateService, organizationApiService, - organizationUserService, + organizationUserApiService, userDecryptionOptionsService, ssoLoginService, dialogService, diff --git a/apps/desktop/tsconfig.json b/apps/desktop/tsconfig.json index 5ffdb3c2076..19f7b8bf70f 100644 --- a/apps/desktop/tsconfig.json +++ b/apps/desktop/tsconfig.json @@ -10,7 +10,7 @@ "types": [], "baseUrl": ".", "paths": { - "@bitwarden/admin-console": ["../../libs/admin-console/src"], + "@bitwarden/admin-console/common": ["../../libs/admin-console/src/common"], "@bitwarden/angular/*": ["../../libs/angular/src/*"], "@bitwarden/auth/common": ["../../libs/auth/src/common"], "@bitwarden/auth/angular": ["../../libs/auth/src/angular"], diff --git a/apps/web/src/app/admin-console/organizations/core/services/user-admin.service.ts b/apps/web/src/app/admin-console/organizations/core/services/user-admin.service.ts index 52a522c89da..9741758e1e0 100644 --- a/apps/web/src/app/admin-console/organizations/core/services/user-admin.service.ts +++ b/apps/web/src/app/admin-console/organizations/core/services/user-admin.service.ts @@ -1,11 +1,11 @@ import { Injectable } from "@angular/core"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { + OrganizationUserApiService, OrganizationUserInviteRequest, OrganizationUserUpdateRequest, -} from "@bitwarden/common/admin-console/abstractions/organization-user/requests"; -import { OrganizationUserDetailsResponse } from "@bitwarden/common/admin-console/abstractions/organization-user/responses"; + OrganizationUserDetailsResponse, +} from "@bitwarden/admin-console/common"; import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { CoreOrganizationModule } from "../core-organization.module"; @@ -15,14 +15,14 @@ import { OrganizationUserAdminView } from "../views/organization-user-admin-view export class UserAdminService { constructor( private configService: ConfigService, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, ) {} async get( organizationId: string, organizationUserId: string, ): Promise { - const userResponse = await this.organizationUserService.getOrganizationUser( + const userResponse = await this.organizationUserApiService.getOrganizationUser( organizationId, organizationUserId, { @@ -47,7 +47,11 @@ export class UserAdminService { request.groups = user.groups; request.accessSecretsManager = user.accessSecretsManager; - await this.organizationUserService.putOrganizationUser(user.organizationId, user.id, request); + await this.organizationUserApiService.putOrganizationUser( + user.organizationId, + user.id, + request, + ); } async invite(emails: string[], user: OrganizationUserAdminView): Promise { @@ -59,7 +63,7 @@ export class UserAdminService { request.groups = user.groups; request.accessSecretsManager = user.accessSecretsManager; - await this.organizationUserService.postOrganizationUserInvite(user.organizationId, request); + await this.organizationUserApiService.postOrganizationUserInvite(user.organizationId, request); } private async decryptMany( diff --git a/apps/web/src/app/admin-console/organizations/core/views/organization-user.view.ts b/apps/web/src/app/admin-console/organizations/core/views/organization-user.view.ts index 86d1f4ded6b..8988f41487c 100644 --- a/apps/web/src/app/admin-console/organizations/core/views/organization-user.view.ts +++ b/apps/web/src/app/admin-console/organizations/core/views/organization-user.view.ts @@ -1,4 +1,4 @@ -import { OrganizationUserUserDetailsResponse } from "@bitwarden/common/admin-console/abstractions/organization-user/responses"; +import { OrganizationUserUserDetailsResponse } from "@bitwarden/admin-console/common"; import { OrganizationUserStatusType, OrganizationUserType, diff --git a/apps/web/src/app/admin-console/organizations/manage/entity-events.component.ts b/apps/web/src/app/admin-console/organizations/manage/entity-events.component.ts index c9af2c8b5de..79ada2b7a53 100644 --- a/apps/web/src/app/admin-console/organizations/manage/entity-events.component.ts +++ b/apps/web/src/app/admin-console/organizations/manage/entity-events.component.ts @@ -2,9 +2,9 @@ import { DIALOG_DATA, DialogConfig } from "@angular/cdk/dialog"; import { Component, Inject, OnInit } from "@angular/core"; import { FormBuilder } from "@angular/forms"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import { UserNamePipe } from "@bitwarden/angular/pipes/user-name.pipe"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { EventResponse } from "@bitwarden/common/models/response/event.response"; import { ListResponse } from "@bitwarden/common/models/response/list.response"; import { EventView } from "@bitwarden/common/models/view/event.view"; @@ -60,7 +60,7 @@ export class EntityEventsComponent implements OnInit { private platformUtilsService: PlatformUtilsService, private userNamePipe: UserNamePipe, private logService: LogService, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, private formBuilder: FormBuilder, private validationService: ValidationService, private toastService: ToastService, @@ -78,7 +78,9 @@ export class EntityEventsComponent implements OnInit { async load() { try { if (this.showUser) { - const response = await this.organizationUserService.getAllUsers(this.params.organizationId); + const response = await this.organizationUserApiService.getAllUsers( + this.params.organizationId, + ); response.data.forEach((u) => { const name = this.userNamePipe.transform(u); this.orgUsersIdMap.set(u.id, { name: name, email: u.email }); diff --git a/apps/web/src/app/admin-console/organizations/manage/events.component.ts b/apps/web/src/app/admin-console/organizations/manage/events.component.ts index 0b7e3d42295..574335125e6 100644 --- a/apps/web/src/app/admin-console/organizations/manage/events.component.ts +++ b/apps/web/src/app/admin-console/organizations/manage/events.component.ts @@ -2,10 +2,10 @@ import { Component, OnDestroy, OnInit } from "@angular/core"; import { ActivatedRoute, Router } from "@angular/router"; import { concatMap, Subject, takeUntil } from "rxjs"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import { UserNamePipe } from "@bitwarden/angular/pipes/user-name.pipe"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { ProviderService } from "@bitwarden/common/admin-console/abstractions/provider.service"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { EventSystemUser } from "@bitwarden/common/enums"; @@ -49,7 +49,7 @@ export class EventsComponent extends BaseEventsComponent implements OnInit, OnDe logService: LogService, private userNamePipe: UserNamePipe, private organizationService: OrganizationService, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, private providerService: ProviderService, fileDownloadService: FileDownloadService, toastService: ToastService, @@ -83,7 +83,7 @@ export class EventsComponent extends BaseEventsComponent implements OnInit, OnDe } async load() { - const response = await this.organizationUserService.getAllUsers(this.organizationId); + const response = await this.organizationUserApiService.getAllUsers(this.organizationId); response.data.forEach((u) => { const name = this.userNamePipe.transform(u); this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email }); diff --git a/apps/web/src/app/admin-console/organizations/manage/group-add-edit.component.ts b/apps/web/src/app/admin-console/organizations/manage/group-add-edit.component.ts index 82fa85476f2..36489e0ab1d 100644 --- a/apps/web/src/app/admin-console/organizations/manage/group-add-edit.component.ts +++ b/apps/web/src/app/admin-console/organizations/manage/group-add-edit.component.ts @@ -14,9 +14,9 @@ import { takeUntil, } from "rxjs"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { ErrorResponse } from "@bitwarden/common/models/response/error.response"; @@ -131,7 +131,7 @@ export class GroupAddEditComponent implements OnInit, OnDestroy { ); private get orgMembers$(): Observable> { - return from(this.organizationUserService.getAllUsers(this.organizationId)).pipe( + return from(this.organizationUserApiService.getAllUsers(this.organizationId)).pipe( map((response) => response.data.map((m) => ({ id: m.id, @@ -202,7 +202,7 @@ export class GroupAddEditComponent implements OnInit, OnDestroy { @Inject(DIALOG_DATA) private params: GroupAddEditDialogParams, private dialogRef: DialogRef, private apiService: ApiService, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, private groupService: GroupService, private i18nService: I18nService, private platformUtilsService: PlatformUtilsService, diff --git a/apps/web/src/app/admin-console/organizations/members/components/bulk/base-bulk-confirm.component.ts b/apps/web/src/app/admin-console/organizations/members/components/bulk/base-bulk-confirm.component.ts index 8d634c38e05..5a5da935a66 100644 --- a/apps/web/src/app/admin-console/organizations/members/components/bulk/base-bulk-confirm.component.ts +++ b/apps/web/src/app/admin-console/organizations/members/components/bulk/base-bulk-confirm.component.ts @@ -3,7 +3,7 @@ import { Directive, OnInit } from "@angular/core"; import { OrganizationUserBulkPublicKeyResponse, OrganizationUserBulkResponse, -} from "@bitwarden/common/admin-console/abstractions/organization-user/responses"; +} from "@bitwarden/admin-console/common"; import { ProviderUserBulkPublicKeyResponse } from "@bitwarden/common/admin-console/models/response/provider/provider-user-bulk-public-key.response"; import { ProviderUserBulkResponse } from "@bitwarden/common/admin-console/models/response/provider/provider-user-bulk.response"; import { ListResponse } from "@bitwarden/common/models/response/list.response"; diff --git a/apps/web/src/app/admin-console/organizations/members/components/bulk/base-bulk-remove.component.ts b/apps/web/src/app/admin-console/organizations/members/components/bulk/base-bulk-remove.component.ts index 6c736346604..80514e85995 100644 --- a/apps/web/src/app/admin-console/organizations/members/components/bulk/base-bulk-remove.component.ts +++ b/apps/web/src/app/admin-console/organizations/members/components/bulk/base-bulk-remove.component.ts @@ -1,6 +1,6 @@ import { Directive } from "@angular/core"; -import { OrganizationUserBulkResponse } from "@bitwarden/common/admin-console/abstractions/organization-user/responses"; +import { OrganizationUserBulkResponse } from "@bitwarden/admin-console/common"; import { ProviderUserBulkResponse } from "@bitwarden/common/admin-console/models/response/provider/provider-user-bulk.response"; import { ListResponse } from "@bitwarden/common/models/response/list.response"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; diff --git a/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-confirm.component.ts b/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-confirm.component.ts index d94edd55f85..14653169338 100644 --- a/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-confirm.component.ts +++ b/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-confirm.component.ts @@ -1,9 +1,11 @@ import { DIALOG_DATA, DialogConfig } from "@angular/cdk/dialog"; import { Component, Inject, OnInit } from "@angular/core"; +import { + OrganizationUserApiService, + OrganizationUserBulkConfirmRequest, +} from "@bitwarden/admin-console/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; -import { OrganizationUserBulkConfirmRequest } from "@bitwarden/common/admin-console/abstractions/organization-user/requests"; import { OrganizationUserStatusType } from "@bitwarden/common/admin-console/enums"; import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; @@ -40,7 +42,7 @@ export class BulkConfirmComponent implements OnInit { @Inject(DIALOG_DATA) protected data: BulkConfirmDialogData, protected cryptoService: CryptoService, protected apiService: ApiService, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, private i18nService: I18nService, ) { this.organizationId = data.organizationId; @@ -104,7 +106,7 @@ export class BulkConfirmComponent implements OnInit { } protected async getPublicKeys() { - return await this.organizationUserService.postOrganizationUsersPublicKey( + return await this.organizationUserApiService.postOrganizationUsersPublicKey( this.organizationId, this.filteredUsers.map((user) => user.id), ); @@ -116,7 +118,7 @@ export class BulkConfirmComponent implements OnInit { protected async postConfirmRequest(userIdsWithKeys: any[]) { const request = new OrganizationUserBulkConfirmRequest(userIdsWithKeys); - return await this.organizationUserService.postOrganizationUserBulkConfirm( + return await this.organizationUserApiService.postOrganizationUserBulkConfirm( this.organizationId, request, ); diff --git a/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-enable-sm-dialog.component.ts b/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-enable-sm-dialog.component.ts index de12d4f26d7..4b7b41a5c8c 100644 --- a/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-enable-sm-dialog.component.ts +++ b/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-enable-sm-dialog.component.ts @@ -1,7 +1,7 @@ import { DialogRef, DIALOG_DATA } from "@angular/cdk/dialog"; import { Component, Inject, OnInit } from "@angular/core"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { DialogService, TableDataSource, ToastService } from "@bitwarden/components"; @@ -21,7 +21,7 @@ export class BulkEnableSecretsManagerDialogComponent implements OnInit { constructor( public dialogRef: DialogRef, @Inject(DIALOG_DATA) private data: BulkEnableSecretsManagerDialogData, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, private platformUtilsService: PlatformUtilsService, private i18nService: I18nService, private toastService: ToastService, @@ -32,7 +32,7 @@ export class BulkEnableSecretsManagerDialogComponent implements OnInit { } submit = async () => { - await this.organizationUserService.putOrganizationUserBulkEnableSecretsManager( + await this.organizationUserApiService.putOrganizationUserBulkEnableSecretsManager( this.data.orgId, this.dataSource.data.map((u) => u.id), ); diff --git a/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-remove.component.ts b/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-remove.component.ts index 60d1aec41c6..74939238fcc 100644 --- a/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-remove.component.ts +++ b/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-remove.component.ts @@ -1,8 +1,8 @@ import { DIALOG_DATA, DialogConfig } from "@angular/cdk/dialog"; import { Component, Inject } from "@angular/core"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { OrganizationUserStatusType } from "@bitwarden/common/admin-console/enums"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { DialogService } from "@bitwarden/components"; @@ -33,7 +33,7 @@ export class BulkRemoveComponent { @Inject(DIALOG_DATA) protected data: BulkRemoveDialogData, protected apiService: ApiService, protected i18nService: I18nService, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, ) { this.organizationId = data.organizationId; this.users = data.users; @@ -60,7 +60,7 @@ export class BulkRemoveComponent { }; protected async removeUsers() { - return await this.organizationUserService.removeManyOrganizationUsers( + return await this.organizationUserApiService.removeManyOrganizationUsers( this.organizationId, this.users.map((user) => user.id), ); diff --git a/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-restore-revoke.component.ts b/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-restore-revoke.component.ts index a2ab93dd0e1..0ac413eb820 100644 --- a/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-restore-revoke.component.ts +++ b/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-restore-revoke.component.ts @@ -1,7 +1,7 @@ import { DIALOG_DATA } from "@angular/cdk/dialog"; import { Component, Inject } from "@angular/core"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import { OrganizationUserStatusType } from "@bitwarden/common/admin-console/enums"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { DialogService } from "@bitwarden/components"; @@ -32,7 +32,7 @@ export class BulkRestoreRevokeComponent { constructor( protected i18nService: I18nService, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, @Inject(DIALOG_DATA) protected data: BulkRestoreDialogParams, ) { this.isRevoking = data.isRevoking; @@ -66,12 +66,12 @@ export class BulkRestoreRevokeComponent { protected async performBulkUserAction() { const userIds = this.users.map((user) => user.id); if (this.isRevoking) { - return await this.organizationUserService.revokeManyOrganizationUsers( + return await this.organizationUserApiService.revokeManyOrganizationUsers( this.organizationId, userIds, ); } else { - return await this.organizationUserService.restoreManyOrganizationUsers( + return await this.organizationUserApiService.restoreManyOrganizationUsers( this.organizationId, userIds, ); diff --git a/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-status.component.ts b/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-status.component.ts index dba6319b273..7bcae82cfd8 100644 --- a/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-status.component.ts +++ b/apps/web/src/app/admin-console/organizations/members/components/bulk/bulk-status.component.ts @@ -1,7 +1,7 @@ import { DIALOG_DATA, DialogConfig } from "@angular/cdk/dialog"; import { Component, Inject, OnInit } from "@angular/core"; -import { OrganizationUserBulkResponse } from "@bitwarden/common/admin-console/abstractions/organization-user/responses"; +import { OrganizationUserBulkResponse } from "@bitwarden/admin-console/common"; import { OrganizationUserStatusType, ProviderUserStatusType, diff --git a/apps/web/src/app/admin-console/organizations/members/components/member-dialog/member-dialog.component.ts b/apps/web/src/app/admin-console/organizations/members/components/member-dialog/member-dialog.component.ts index d39e7784b8d..fb11ad21c4c 100644 --- a/apps/web/src/app/admin-console/organizations/members/components/member-dialog/member-dialog.component.ts +++ b/apps/web/src/app/admin-console/organizations/members/components/member-dialog/member-dialog.component.ts @@ -13,8 +13,8 @@ import { takeUntil, } from "rxjs"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { OrganizationUserStatusType, OrganizationUserType, @@ -139,7 +139,7 @@ export class MemberDialogComponent implements OnDestroy { private collectionAdminService: CollectionAdminService, private groupService: GroupService, private userService: UserAdminService, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, private dialogService: DialogService, private accountService: AccountService, organizationService: OrganizationService, @@ -491,7 +491,7 @@ export class MemberDialogComponent implements OnDestroy { } } - await this.organizationUserService.removeOrganizationUser( + await this.organizationUserApiService.removeOrganizationUser( this.params.organizationId, this.params.organizationUserId, ); @@ -528,7 +528,7 @@ export class MemberDialogComponent implements OnDestroy { } } - await this.organizationUserService.revokeOrganizationUser( + await this.organizationUserApiService.revokeOrganizationUser( this.params.organizationId, this.params.organizationUserId, ); @@ -547,7 +547,7 @@ export class MemberDialogComponent implements OnDestroy { return; } - await this.organizationUserService.restoreOrganizationUser( + await this.organizationUserApiService.restoreOrganizationUser( this.params.organizationId, this.params.organizationUserId, ); diff --git a/apps/web/src/app/admin-console/organizations/members/members.component.ts b/apps/web/src/app/admin-console/organizations/members/members.component.ts index c1bc970d5df..f4a5e738477 100644 --- a/apps/web/src/app/admin-console/organizations/members/members.component.ts +++ b/apps/web/src/app/admin-console/organizations/members/members.component.ts @@ -13,15 +13,17 @@ import { switchMap, } from "rxjs"; +import { + OrganizationUserApiService, + OrganizationUserConfirmRequest, + OrganizationUserUserDetailsResponse, +} from "@bitwarden/admin-console/common"; import { UserNamePipe } from "@bitwarden/angular/pipes/user-name.pipe"; import { ModalService } from "@bitwarden/angular/services/modal.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { OrganizationManagementPreferencesService } from "@bitwarden/common/admin-console/abstractions/organization-management-preferences/organization-management-preferences.service"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; -import { OrganizationUserConfirmRequest } from "@bitwarden/common/admin-console/abstractions/organization-user/requests"; -import { OrganizationUserUserDetailsResponse } from "@bitwarden/common/admin-console/abstractions/organization-user/responses"; import { PolicyApiServiceAbstraction as PolicyApiService } from "@bitwarden/common/admin-console/abstractions/policy/policy-api.service.abstraction"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { @@ -116,7 +118,7 @@ export class MembersComponent extends BaseMembersComponent private syncService: SyncService, private organizationService: OrganizationService, private organizationApiService: OrganizationApiServiceAbstraction, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, private router: Router, private groupService: GroupService, private collectionService: CollectionService, @@ -213,7 +215,7 @@ export class MembersComponent extends BaseMembersComponent let collectionsPromise: Promise>; // We don't need both groups and collections for the table, so only load one - const userPromise = this.organizationUserService.getAllUsers(this.organization.id, { + const userPromise = this.organizationUserApiService.getAllUsers(this.organization.id, { includeGroups: this.organization.useGroups, includeCollections: !this.organization.useGroups, }); @@ -270,19 +272,19 @@ export class MembersComponent extends BaseMembersComponent } removeUser(id: string): Promise { - return this.organizationUserService.removeOrganizationUser(this.organization.id, id); + return this.organizationUserApiService.removeOrganizationUser(this.organization.id, id); } revokeUser(id: string): Promise { - return this.organizationUserService.revokeOrganizationUser(this.organization.id, id); + return this.organizationUserApiService.revokeOrganizationUser(this.organization.id, id); } restoreUser(id: string): Promise { - return this.organizationUserService.restoreOrganizationUser(this.organization.id, id); + return this.organizationUserApiService.restoreOrganizationUser(this.organization.id, id); } reinviteUser(id: string): Promise { - return this.organizationUserService.postOrganizationUserReinvite(this.organization.id, id); + return this.organizationUserApiService.postOrganizationUserReinvite(this.organization.id, id); } async confirmUser(user: OrganizationUserView, publicKey: Uint8Array): Promise { @@ -290,7 +292,7 @@ export class MembersComponent extends BaseMembersComponent const key = await this.cryptoService.rsaEncrypt(orgKey.key, publicKey); const request = new OrganizationUserConfirmRequest(); request.key = key.encryptedString; - await this.organizationUserService.postOrganizationUserConfirm( + await this.organizationUserApiService.postOrganizationUserConfirm( this.organization.id, user.id, request, @@ -585,7 +587,7 @@ export class MembersComponent extends BaseMembersComponent } try { - const response = this.organizationUserService.postManyOrganizationUserReinvite( + const response = this.organizationUserApiService.postManyOrganizationUserReinvite( this.organization.id, filteredUsers.map((user) => user.id), ); diff --git a/apps/web/src/app/admin-console/organizations/members/services/organization-user-reset-password/organization-user-reset-password.service.spec.ts b/apps/web/src/app/admin-console/organizations/members/services/organization-user-reset-password/organization-user-reset-password.service.spec.ts index 637373b9367..b94cb4e926b 100644 --- a/apps/web/src/app/admin-console/organizations/members/services/organization-user-reset-password/organization-user-reset-password.service.spec.ts +++ b/apps/web/src/app/admin-console/organizations/members/services/organization-user-reset-password/organization-user-reset-password.service.spec.ts @@ -1,8 +1,10 @@ import { mock, MockProxy } from "jest-mock-extended"; +import { + OrganizationUserApiService, + OrganizationUserResetPasswordDetailsResponse, +} from "@bitwarden/admin-console/common"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; -import { OrganizationUserResetPasswordDetailsResponse } from "@bitwarden/common/admin-console/abstractions/organization-user/responses"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { OrganizationKeysResponse } from "@bitwarden/common/admin-console/models/response/organization-keys.response"; import { OrganizationApiService } from "@bitwarden/common/admin-console/services/organization/organization-api.service"; @@ -24,7 +26,7 @@ describe("OrganizationUserResetPasswordService", () => { let cryptoService: MockProxy; let encryptService: MockProxy; let organizationService: MockProxy; - let organizationUserService: MockProxy; + let organizationUserApiService: MockProxy; let organizationApiService: MockProxy; let i18nService: MockProxy; @@ -32,7 +34,7 @@ describe("OrganizationUserResetPasswordService", () => { cryptoService = mock(); encryptService = mock(); organizationService = mock(); - organizationUserService = mock(); + organizationUserApiService = mock(); organizationApiService = mock(); i18nService = mock(); @@ -40,7 +42,7 @@ describe("OrganizationUserResetPasswordService", () => { cryptoService, encryptService, organizationService, - organizationUserService, + organizationUserApiService, organizationApiService, i18nService, ); @@ -112,7 +114,7 @@ describe("OrganizationUserResetPasswordService", () => { const mockOrgId = "test-org-id"; beforeEach(() => { - organizationUserService.getOrganizationUserResetPasswordDetails.mockResolvedValue( + organizationUserApiService.getOrganizationUserResetPasswordDetails.mockResolvedValue( new OrganizationUserResetPasswordDetailsResponse({ kdf: KdfType.PBKDF2_SHA256, kdfIterations: 5000, @@ -140,11 +142,11 @@ describe("OrganizationUserResetPasswordService", () => { it("should reset the user's master password", async () => { await sut.resetMasterPassword(mockNewMP, mockEmail, mockOrgUserId, mockOrgId); - expect(organizationUserService.putOrganizationUserResetPassword).toHaveBeenCalled(); + expect(organizationUserApiService.putOrganizationUserResetPassword).toHaveBeenCalled(); }); it("should throw an error if the user details are null", async () => { - organizationUserService.getOrganizationUserResetPasswordDetails.mockResolvedValue(null); + organizationUserApiService.getOrganizationUserResetPasswordDetails.mockResolvedValue(null); await expect( sut.resetMasterPassword(mockNewMP, mockEmail, mockOrgUserId, mockOrgId), ).rejects.toThrow(); diff --git a/apps/web/src/app/admin-console/organizations/members/services/organization-user-reset-password/organization-user-reset-password.service.ts b/apps/web/src/app/admin-console/organizations/members/services/organization-user-reset-password/organization-user-reset-password.service.ts index 860fa6abc49..b3107f2b93a 100644 --- a/apps/web/src/app/admin-console/organizations/members/services/organization-user-reset-password/organization-user-reset-password.service.ts +++ b/apps/web/src/app/admin-console/organizations/members/services/organization-user-reset-password/organization-user-reset-password.service.ts @@ -1,13 +1,13 @@ import { Injectable } from "@angular/core"; +import { + OrganizationUserApiService, + OrganizationUserResetPasswordRequest, + OrganizationUserResetPasswordWithIdRequest, +} from "@bitwarden/admin-console/common"; import { UserKeyRotationDataProvider } from "@bitwarden/auth/common"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; -import { - OrganizationUserResetPasswordRequest, - OrganizationUserResetPasswordWithIdRequest, -} from "@bitwarden/common/admin-console/abstractions/organization-user/requests"; import { Argon2KdfConfig, KdfConfig, @@ -33,7 +33,7 @@ export class OrganizationUserResetPasswordService private cryptoService: CryptoService, private encryptService: EncryptService, private organizationService: OrganizationService, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, private organizationApiService: OrganizationApiServiceAbstraction, private i18nService: I18nService, ) {} @@ -76,7 +76,7 @@ export class OrganizationUserResetPasswordService orgUserId: string, orgId: string, ): Promise { - const response = await this.organizationUserService.getOrganizationUserResetPasswordDetails( + const response = await this.organizationUserApiService.getOrganizationUserResetPasswordDetails( orgId, orgUserId, ); @@ -128,7 +128,11 @@ export class OrganizationUserResetPasswordService request.newMasterPasswordHash = newMasterKeyHash; // Change user's password - await this.organizationUserService.putOrganizationUserResetPassword(orgId, orgUserId, request); + await this.organizationUserApiService.putOrganizationUserResetPassword( + orgId, + orgUserId, + request, + ); } /** diff --git a/apps/web/src/app/admin-console/organizations/shared/components/access-selector/access-selector.models.ts b/apps/web/src/app/admin-console/organizations/shared/components/access-selector/access-selector.models.ts index d0d05004c4c..429b62ed0cc 100644 --- a/apps/web/src/app/admin-console/organizations/shared/components/access-selector/access-selector.models.ts +++ b/apps/web/src/app/admin-console/organizations/shared/components/access-selector/access-selector.models.ts @@ -1,4 +1,4 @@ -import { OrganizationUserUserDetailsResponse } from "@bitwarden/common/admin-console/abstractions/organization-user/responses"; +import { OrganizationUserUserDetailsResponse } from "@bitwarden/admin-console/common"; import { OrganizationUserStatusType, OrganizationUserType, diff --git a/apps/web/src/app/admin-console/organizations/users/enroll-master-password-reset.component.ts b/apps/web/src/app/admin-console/organizations/users/enroll-master-password-reset.component.ts index bbd344e289e..17e608df3ee 100644 --- a/apps/web/src/app/admin-console/organizations/users/enroll-master-password-reset.component.ts +++ b/apps/web/src/app/admin-console/organizations/users/enroll-master-password-reset.component.ts @@ -1,6 +1,8 @@ +import { + OrganizationUserApiService, + OrganizationUserResetPasswordEnrollmentRequest, +} from "@bitwarden/admin-console/common"; import { UserVerificationDialogComponent } from "@bitwarden/auth/angular"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; -import { OrganizationUserResetPasswordEnrollmentRequest } from "@bitwarden/common/admin-console/abstractions/organization-user/requests"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { UserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction"; import { VerificationWithSecret } from "@bitwarden/common/auth/types/verification"; @@ -23,7 +25,7 @@ export class EnrollMasterPasswordReset { dialogService: DialogService, data: EnrollMasterPasswordResetData, resetPasswordService: OrganizationUserResetPasswordService, - organizationUserService: OrganizationUserService, + organizationUserApiService: OrganizationUserApiService, platformUtilsService: PlatformUtilsService, i18nService: I18nService, syncService: SyncService, @@ -50,7 +52,7 @@ export class EnrollMasterPasswordReset { // Process the enrollment request, which is an endpoint that is // gated by a server-side check of the master password hash - await organizationUserService.putOrganizationUserResetPasswordEnrollment( + await organizationUserApiService.putOrganizationUserResetPasswordEnrollment( data.organization.id, data.organization.userId, request, diff --git a/apps/web/src/app/auth/key-rotation/request/update-key.request.ts b/apps/web/src/app/auth/key-rotation/request/update-key.request.ts index 9ea40c88e6e..0988ed54a99 100644 --- a/apps/web/src/app/auth/key-rotation/request/update-key.request.ts +++ b/apps/web/src/app/auth/key-rotation/request/update-key.request.ts @@ -1,4 +1,4 @@ -import { OrganizationUserResetPasswordWithIdRequest } from "@bitwarden/common/admin-console/abstractions/organization-user/requests"; +import { OrganizationUserResetPasswordWithIdRequest } from "@bitwarden/admin-console/common"; import { WebauthnRotateCredentialRequest } from "@bitwarden/common/auth/models/request/webauthn-rotate-credential.request"; import { SendWithIdRequest } from "@bitwarden/common/src/tools/send/models/request/send-with-id.request"; import { CipherWithIdRequest } from "@bitwarden/common/src/vault/models/request/cipher-with-id.request"; diff --git a/apps/web/src/app/auth/key-rotation/user-key-rotation.service.spec.ts b/apps/web/src/app/auth/key-rotation/user-key-rotation.service.spec.ts index a9727532051..2c803a627f3 100644 --- a/apps/web/src/app/auth/key-rotation/user-key-rotation.service.spec.ts +++ b/apps/web/src/app/auth/key-rotation/user-key-rotation.service.spec.ts @@ -1,7 +1,7 @@ import { mock, MockProxy } from "jest-mock-extended"; import { BehaviorSubject } from "rxjs"; -import { OrganizationUserResetPasswordWithIdRequest } from "@bitwarden/common/admin-console/abstractions/organization-user/requests"; +import { OrganizationUserResetPasswordWithIdRequest } from "@bitwarden/admin-console/common"; import { DeviceTrustServiceAbstraction } from "@bitwarden/common/auth/abstractions/device-trust.service.abstraction"; import { UserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction"; import { WebauthnRotateCredentialRequest } from "@bitwarden/common/auth/models/request/webauthn-rotate-credential.request"; diff --git a/apps/web/src/app/auth/organization-invite/accept-organization.service.spec.ts b/apps/web/src/app/auth/organization-invite/accept-organization.service.spec.ts index 97a17a5997f..13b704b5466 100644 --- a/apps/web/src/app/auth/organization-invite/accept-organization.service.spec.ts +++ b/apps/web/src/app/auth/organization-invite/accept-organization.service.spec.ts @@ -1,9 +1,9 @@ import { FakeGlobalStateProvider } from "@bitwarden/common/../spec/fake-state-provider"; import { MockProxy, mock } from "jest-mock-extended"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { PolicyApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy-api.service.abstraction"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { PolicyType } from "@bitwarden/common/admin-console/enums"; @@ -35,7 +35,7 @@ describe("AcceptOrganizationInviteService", () => { let policyService: MockProxy; let logService: MockProxy; let organizationApiService: MockProxy; - let organizationUserService: MockProxy; + let organizationUserApiService: MockProxy; let i18nService: MockProxy; let globalStateProvider: FakeGlobalStateProvider; let globalState: FakeGlobalState; @@ -49,7 +49,7 @@ describe("AcceptOrganizationInviteService", () => { policyService = mock(); logService = mock(); organizationApiService = mock(); - organizationUserService = mock(); + organizationUserApiService = mock(); i18nService = mock(); globalStateProvider = new FakeGlobalStateProvider(); globalState = globalStateProvider.getFake(ORGANIZATION_INVITE); @@ -63,7 +63,7 @@ describe("AcceptOrganizationInviteService", () => { policyService, logService, organizationApiService, - organizationUserService, + organizationUserApiService, i18nService, globalStateProvider, ); @@ -85,10 +85,10 @@ describe("AcceptOrganizationInviteService", () => { const result = await sut.validateAndAcceptInvite(invite); expect(result).toBe(true); - expect(organizationUserService.postOrganizationUserAcceptInit).toHaveBeenCalled(); + expect(organizationUserApiService.postOrganizationUserAcceptInit).toHaveBeenCalled(); expect(apiService.refreshIdentityToken).toHaveBeenCalled(); expect(globalState.nextMock).toHaveBeenCalledWith(null); - expect(organizationUserService.postOrganizationUserAccept).not.toHaveBeenCalled(); + expect(organizationUserApiService.postOrganizationUserAccept).not.toHaveBeenCalled(); expect(authService.logOut).not.toHaveBeenCalled(); }); @@ -133,10 +133,10 @@ describe("AcceptOrganizationInviteService", () => { const result = await sut.validateAndAcceptInvite(invite); expect(result).toBe(true); - expect(organizationUserService.postOrganizationUserAccept).toHaveBeenCalled(); + expect(organizationUserApiService.postOrganizationUserAccept).toHaveBeenCalled(); expect(apiService.refreshIdentityToken).toHaveBeenCalled(); expect(globalState.nextMock).toHaveBeenCalledWith(null); - expect(organizationUserService.postOrganizationUserAcceptInit).not.toHaveBeenCalled(); + expect(organizationUserApiService.postOrganizationUserAcceptInit).not.toHaveBeenCalled(); expect(authService.logOut).not.toHaveBeenCalled(); }); @@ -161,8 +161,8 @@ describe("AcceptOrganizationInviteService", () => { const result = await sut.validateAndAcceptInvite(invite); expect(result).toBe(true); - expect(organizationUserService.postOrganizationUserAccept).toHaveBeenCalled(); - expect(organizationUserService.postOrganizationUserAcceptInit).not.toHaveBeenCalled(); + expect(organizationUserApiService.postOrganizationUserAccept).toHaveBeenCalled(); + expect(organizationUserApiService.postOrganizationUserAcceptInit).not.toHaveBeenCalled(); expect(authService.logOut).not.toHaveBeenCalled(); }); }); diff --git a/apps/web/src/app/auth/organization-invite/accept-organization.service.ts b/apps/web/src/app/auth/organization-invite/accept-organization.service.ts index d1ffa61f6a9..a7798d480fb 100644 --- a/apps/web/src/app/auth/organization-invite/accept-organization.service.ts +++ b/apps/web/src/app/auth/organization-invite/accept-organization.service.ts @@ -1,13 +1,13 @@ import { Injectable } from "@angular/core"; import { BehaviorSubject, firstValueFrom, map } from "rxjs"; -import { ApiService } from "@bitwarden/common/abstractions/api.service"; -import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { + OrganizationUserApiService, OrganizationUserAcceptRequest, OrganizationUserAcceptInitRequest, -} from "@bitwarden/common/admin-console/abstractions/organization-user/requests"; +} from "@bitwarden/admin-console/common"; +import { ApiService } from "@bitwarden/common/abstractions/api.service"; +import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; import { PolicyApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy-api.service.abstraction"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { PolicyType } from "@bitwarden/common/admin-console/enums"; @@ -58,7 +58,7 @@ export class AcceptOrganizationInviteService { private readonly policyService: PolicyService, private readonly logService: LogService, private readonly organizationApiService: OrganizationApiServiceAbstraction, - private readonly organizationUserService: OrganizationUserService, + private readonly organizationUserApiService: OrganizationUserApiService, private readonly i18nService: I18nService, private readonly globalStateProvider: GlobalStateProvider, ) { @@ -121,7 +121,7 @@ export class AcceptOrganizationInviteService { private async acceptAndInitOrganization(invite: OrganizationInvite): Promise { await this.prepareAcceptAndInitRequest(invite).then((request) => - this.organizationUserService.postOrganizationUserAcceptInit( + this.organizationUserApiService.postOrganizationUserAcceptInit( invite.organizationId, invite.organizationUserId, request, @@ -156,7 +156,7 @@ export class AcceptOrganizationInviteService { private async accept(invite: OrganizationInvite): Promise { await this.prepareAcceptRequest(invite).then((request) => - this.organizationUserService.postOrganizationUserAccept( + this.organizationUserApiService.postOrganizationUserAccept( invite.organizationId, invite.organizationUserId, request, diff --git a/apps/web/src/app/core/core.module.ts b/apps/web/src/app/core/core.module.ts index 2c0a0471a1f..460af8623e6 100644 --- a/apps/web/src/app/core/core.module.ts +++ b/apps/web/src/app/core/core.module.ts @@ -1,6 +1,7 @@ import { CommonModule } from "@angular/common"; import { APP_INITIALIZER, NgModule, Optional, SkipSelf } from "@angular/core"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import { SafeProvider, safeProvider } from "@bitwarden/angular/platform/utils/safe-provider"; import { SECURE_STORAGE, @@ -24,7 +25,6 @@ import { import { InternalUserDecryptionOptionsServiceAbstraction } from "@bitwarden/auth/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { PolicyApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy-api.service.abstraction"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { AccountApiService as AccountApiServiceAbstraction } from "@bitwarden/common/auth/abstractions/account-api.service"; @@ -203,7 +203,7 @@ const safeProviders: SafeProvider[] = [ KdfConfigService, InternalMasterPasswordServiceAbstraction, OrganizationApiServiceAbstraction, - OrganizationUserService, + OrganizationUserApiService, InternalUserDecryptionOptionsServiceAbstraction, ], }), diff --git a/apps/web/src/app/vault/components/collection-dialog/collection-dialog.component.ts b/apps/web/src/app/vault/components/collection-dialog/collection-dialog.component.ts index 070d39dc17d..9dc8a3c0df1 100644 --- a/apps/web/src/app/vault/components/collection-dialog/collection-dialog.component.ts +++ b/apps/web/src/app/vault/components/collection-dialog/collection-dialog.component.ts @@ -13,9 +13,11 @@ import { } from "rxjs"; import { first } from "rxjs/operators"; +import { + OrganizationUserApiService, + OrganizationUserUserDetailsResponse, +} from "@bitwarden/admin-console/common"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; -import { OrganizationUserUserDetailsResponse } from "@bitwarden/common/admin-console/abstractions/organization-user/responses/organization-user.response"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; @@ -106,7 +108,7 @@ export class CollectionDialogComponent implements OnInit, OnDestroy { private collectionAdminService: CollectionAdminService, private i18nService: I18nService, private platformUtilsService: PlatformUtilsService, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, private dialogService: DialogService, private changeDetectorRef: ChangeDetectorRef, ) { @@ -155,7 +157,7 @@ export class CollectionDialogComponent implements OnInit, OnDestroy { collections: this.collectionAdminService.getAll(orgId), groups: groups$, // Collection(s) needed to map readonlypermission for (potential) access selector disabled state - users: this.organizationUserService.getAllUsers(orgId, { includeCollections: true }), + users: this.organizationUserApiService.getAllUsers(orgId, { includeCollections: true }), }) .pipe(takeUntil(this.formGroup.controls.selectedOrg.valueChanges), takeUntil(this.destroy$)) .subscribe(({ organization, collections: allCollections, groups, users }) => { diff --git a/apps/web/src/app/vault/individual-vault/vault-filter/components/organization-options.component.ts b/apps/web/src/app/vault/individual-vault/vault-filter/components/organization-options.component.ts index 2ff3e953ae7..3b7db72a09d 100644 --- a/apps/web/src/app/vault/individual-vault/vault-filter/components/organization-options.component.ts +++ b/apps/web/src/app/vault/individual-vault/vault-filter/components/organization-options.component.ts @@ -1,11 +1,13 @@ import { Component, Inject, OnDestroy, OnInit } from "@angular/core"; import { combineLatest, map, Observable, Subject, takeUntil } from "rxjs"; +import { + OrganizationUserApiService, + OrganizationUserResetPasswordEnrollmentRequest, +} from "@bitwarden/admin-console/common"; import { UserDecryptionOptionsServiceAbstraction } from "@bitwarden/auth/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; -import { OrganizationUserResetPasswordEnrollmentRequest } from "@bitwarden/common/admin-console/abstractions/organization-user/requests"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { PolicyType } from "@bitwarden/common/admin-console/enums"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; @@ -45,7 +47,7 @@ export class OrganizationOptionsComponent implements OnInit, OnDestroy { private policyService: PolicyService, private logService: LogService, private organizationApiService: OrganizationApiServiceAbstraction, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, private userDecryptionOptionsService: UserDecryptionOptionsServiceAbstraction, private dialogService: DialogService, private resetPasswordService: OrganizationUserResetPasswordService, @@ -153,7 +155,7 @@ export class OrganizationOptionsComponent implements OnInit, OnDestroy { this.dialogService, { organization: org }, this.resetPasswordService, - this.organizationUserService, + this.organizationUserApiService, this.platformUtilsService, this.i18nService, this.syncService, @@ -166,11 +168,12 @@ export class OrganizationOptionsComponent implements OnInit, OnDestroy { const request = new OrganizationUserResetPasswordEnrollmentRequest(); request.masterPasswordHash = "ignored"; request.resetPasswordKey = null; - this.actionPromise = this.organizationUserService.putOrganizationUserResetPasswordEnrollment( - this.organization.id, - this.organization.userId, - request, - ); + this.actionPromise = + this.organizationUserApiService.putOrganizationUserResetPasswordEnrollment( + this.organization.id, + this.organization.userId, + request, + ); try { await this.actionPromise; this.platformUtilsService.showToast( diff --git a/apps/web/src/app/vault/org-vault/bulk-collections-dialog/bulk-collections-dialog.component.ts b/apps/web/src/app/vault/org-vault/bulk-collections-dialog/bulk-collections-dialog.component.ts index 0d55a30e620..76e90097d19 100644 --- a/apps/web/src/app/vault/org-vault/bulk-collections-dialog/bulk-collections-dialog.component.ts +++ b/apps/web/src/app/vault/org-vault/bulk-collections-dialog/bulk-collections-dialog.component.ts @@ -3,8 +3,8 @@ import { Component, Inject, OnDestroy } from "@angular/core"; import { FormBuilder } from "@angular/forms"; import { combineLatest, of, Subject, switchMap, takeUntil } from "rxjs"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; @@ -60,7 +60,7 @@ export class BulkCollectionsDialogComponent implements OnDestroy { private formBuilder: FormBuilder, private organizationService: OrganizationService, private groupService: GroupService, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, private platformUtilsService: PlatformUtilsService, private i18nService: I18nService, private collectionAdminService: CollectionAdminService, @@ -79,7 +79,7 @@ export class BulkCollectionsDialogComponent implements OnDestroy { combineLatest([ organization$, groups$, - this.organizationUserService.getAllUsers(this.params.organizationId), + this.organizationUserApiService.getAllUsers(this.params.organizationId), ]) .pipe(takeUntil(this.destroy$)) .subscribe(([organization, groups, users]) => { diff --git a/apps/web/src/app/vault/org-vault/vault.component.ts b/apps/web/src/app/vault/org-vault/vault.component.ts index aed4c7b4bca..f9652fe08ca 100644 --- a/apps/web/src/app/vault/org-vault/vault.component.ts +++ b/apps/web/src/app/vault/org-vault/vault.component.ts @@ -30,14 +30,16 @@ import { tap, } from "rxjs/operators"; +import { + OrganizationUserApiService, + OrganizationUserUserDetailsResponse, +} from "@bitwarden/admin-console/common"; import { SearchPipe } from "@bitwarden/angular/pipes/search.pipe"; import { ModalService } from "@bitwarden/angular/services/modal.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { EventCollectionService } from "@bitwarden/common/abstractions/event/event-collection.service"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; -import { OrganizationUserUserDetailsResponse } from "@bitwarden/common/admin-console/abstractions/organization-user/responses"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { EventType } from "@bitwarden/common/enums"; @@ -215,7 +217,7 @@ export class VaultComponent implements OnInit, OnDestroy { private totpService: TotpService, private apiService: ApiService, private collectionService: CollectionService, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, protected configService: ConfigService, private toastService: ToastService, private accountService: AccountService, @@ -395,7 +397,7 @@ export class VaultComponent implements OnInit, OnDestroy { // This will be passed into the usersCanManage call this.orgRevokedUsers = ( - await this.organizationUserService.getAllUsers(await firstValueFrom(organizationId$)) + await this.organizationUserApiService.getAllUsers(await firstValueFrom(organizationId$)) ).data.filter((user: OrganizationUserUserDetailsResponse) => { return user.status === -1; }); diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index f44b67d9267..5829e2f6ab6 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -5,7 +5,7 @@ "module": "ES2020", "resolveJsonModule": true, "paths": { - "@bitwarden/admin-console": ["../../libs/admin-console/src"], + "@bitwarden/admin-console/common": ["../../libs/admin-console/src/common"], "@bitwarden/angular/*": ["../../libs/angular/src/*"], "@bitwarden/auth/common": ["../../libs/auth/src/common"], "@bitwarden/auth/angular": ["../../libs/auth/src/angular"], diff --git a/bitwarden_license/bit-cli/src/service-container.ts b/bitwarden_license/bit-cli/src/service-container.ts index 0238829a132..716c045fd16 100644 --- a/bitwarden_license/bit-cli/src/service-container.ts +++ b/bitwarden_license/bit-cli/src/service-container.ts @@ -18,7 +18,7 @@ export class ServiceContainer extends OssServiceContainer { this.organizationAuthRequestService = new OrganizationAuthRequestService( this.organizationAuthRequestApiService, this.cryptoService, - this.organizationUserService, + this.organizationUserApiService, ); } } diff --git a/bitwarden_license/bit-cli/tsconfig.json b/bitwarden_license/bit-cli/tsconfig.json index 20d136df2a5..4012daac542 100644 --- a/bitwarden_license/bit-cli/tsconfig.json +++ b/bitwarden_license/bit-cli/tsconfig.json @@ -14,6 +14,7 @@ "paths": { "@bitwarden/cli/*": ["../../apps/cli/src/*"], "@bitwarden/common/spec": ["../../libs/common/spec"], + "@bitwarden/admin-console/common": ["../../libs/admin-console/src/common"], "@bitwarden/auth/common": ["../../libs/auth/src/common"], "@bitwarden/auth/angular": ["../../libs/auth/src/angular"], "@bitwarden/common/*": ["../../libs/common/src/*"], diff --git a/bitwarden_license/bit-common/src/admin-console/auth-requests/organization-auth-request.service.spec.ts b/bitwarden_license/bit-common/src/admin-console/auth-requests/organization-auth-request.service.spec.ts index ee3e0d73f41..a8e6445d331 100644 --- a/bitwarden_license/bit-common/src/admin-console/auth-requests/organization-auth-request.service.spec.ts +++ b/bitwarden_license/bit-common/src/admin-console/auth-requests/organization-auth-request.service.spec.ts @@ -1,7 +1,9 @@ import { MockProxy, mock } from "jest-mock-extended"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; -import { OrganizationUserResetPasswordDetailsResponse } from "@bitwarden/common/admin-console/abstractions/organization-user/responses"; +import { + OrganizationUserApiService, + OrganizationUserResetPasswordDetailsResponse, +} from "@bitwarden/admin-console/common"; import { ListResponse } from "@bitwarden/common/models/response/list.response"; import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service"; import { EncString } from "@bitwarden/common/platform/models/domain/enc-string"; @@ -14,17 +16,17 @@ import { PendingAuthRequestView } from "./pending-auth-request.view"; describe("OrganizationAuthRequestService", () => { let organizationAuthRequestApiService: MockProxy; let cryptoService: MockProxy; - let organizationUserService: MockProxy; + let organizationUserApiService: MockProxy; let organizationAuthRequestService: OrganizationAuthRequestService; beforeEach(() => { organizationAuthRequestApiService = mock(); cryptoService = mock(); - organizationUserService = mock(); + organizationUserApiService = mock(); organizationAuthRequestService = new OrganizationAuthRequestService( organizationAuthRequestApiService, cryptoService, - organizationUserService, + organizationUserApiService, ); }); @@ -113,7 +115,7 @@ describe("OrganizationAuthRequestService", () => { OrganizationUserResetPasswordDetailsResponse, ); - organizationUserService.getManyOrganizationUserAccountRecoveryDetails.mockResolvedValueOnce( + organizationUserApiService.getManyOrganizationUserAccountRecoveryDetails.mockResolvedValueOnce( organizationUserResetPasswordDetailsResponse, ); @@ -155,7 +157,7 @@ describe("OrganizationAuthRequestService", () => { encryptedPrivateKey: "encryptedPrivateKey", }); - organizationUserService.getOrganizationUserResetPasswordDetails.mockResolvedValue( + organizationUserApiService.getOrganizationUserResetPasswordDetails.mockResolvedValue( organizationUserResetPasswordDetailsResponse, ); diff --git a/bitwarden_license/bit-common/src/admin-console/auth-requests/organization-auth-request.service.ts b/bitwarden_license/bit-common/src/admin-console/auth-requests/organization-auth-request.service.ts index 245baf7e722..edba399b8b2 100644 --- a/bitwarden_license/bit-common/src/admin-console/auth-requests/organization-auth-request.service.ts +++ b/bitwarden_license/bit-common/src/admin-console/auth-requests/organization-auth-request.service.ts @@ -1,5 +1,7 @@ -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; -import { OrganizationUserResetPasswordDetailsResponse } from "@bitwarden/common/admin-console/abstractions/organization-user/responses"; +import { + OrganizationUserApiService, + OrganizationUserResetPasswordDetailsResponse, +} from "@bitwarden/admin-console/common"; import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service"; import { Utils } from "@bitwarden/common/platform/misc/utils"; import { EncString } from "@bitwarden/common/platform/models/domain/enc-string"; @@ -13,7 +15,7 @@ export class OrganizationAuthRequestService { constructor( private organizationAuthRequestApiService: OrganizationAuthRequestApiService, private cryptoService: CryptoService, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, ) {} async listPendingRequests(organizationId: string): Promise { @@ -30,7 +32,7 @@ export class OrganizationAuthRequestService { ): Promise { const organizationUserIds = authRequests.map((r) => r.organizationUserId); const details = - await this.organizationUserService.getManyOrganizationUserAccountRecoveryDetails( + await this.organizationUserApiService.getManyOrganizationUserAccountRecoveryDetails( organizationId, organizationUserIds, ); @@ -61,7 +63,7 @@ export class OrganizationAuthRequestService { } async approvePendingRequest(organizationId: string, authRequest: PendingAuthRequestView) { - const details = await this.organizationUserService.getOrganizationUserResetPasswordDetails( + const details = await this.organizationUserApiService.getOrganizationUserResetPasswordDetails( organizationId, authRequest.organizationUserId, ); diff --git a/bitwarden_license/bit-common/tsconfig.json b/bitwarden_license/bit-common/tsconfig.json index 4b57d593b15..21f57001ed7 100644 --- a/bitwarden_license/bit-common/tsconfig.json +++ b/bitwarden_license/bit-common/tsconfig.json @@ -5,7 +5,7 @@ "compilerOptions": { "baseUrl": ".", "paths": { - "@bitwarden/admin-console": ["../../libs/admin-console/src"], + "@bitwarden/admin-console/common": ["../../libs/admin-console/src/common"], "@bitwarden/angular/*": ["../../libs/angular/src/*"], "@bitwarden/auth": ["../../libs/auth/src"], "@bitwarden/billing": ["../../libs/billing/src"], diff --git a/bitwarden_license/bit-web/src/app/admin-console/organizations/manage/device-approvals/device-approvals.component.ts b/bitwarden_license/bit-web/src/app/admin-console/organizations/manage/device-approvals/device-approvals.component.ts index de7642aa347..34c7bba7d0c 100644 --- a/bitwarden_license/bit-web/src/app/admin-console/organizations/manage/device-approvals/device-approvals.component.ts +++ b/bitwarden_license/bit-web/src/app/admin-console/organizations/manage/device-approvals/device-approvals.component.ts @@ -2,12 +2,12 @@ import { Component, OnDestroy, OnInit } from "@angular/core"; import { ActivatedRoute } from "@angular/router"; import { BehaviorSubject, Subject, switchMap, takeUntil, tap } from "rxjs"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import { SafeProvider, safeProvider } from "@bitwarden/angular/platform/utils/safe-provider"; import { OrganizationAuthRequestApiService } from "@bitwarden/bit-common/admin-console/auth-requests/organization-auth-request-api.service"; import { OrganizationAuthRequestService } from "@bitwarden/bit-common/admin-console/auth-requests/organization-auth-request.service"; import { PendingAuthRequestView } from "@bitwarden/bit-common/admin-console/auth-requests/pending-auth-request.view"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; @@ -30,7 +30,7 @@ import { SharedModule } from "@bitwarden/web-vault/app/shared/shared.module"; }), safeProvider({ provide: OrganizationAuthRequestService, - deps: [OrganizationAuthRequestApiService, CryptoService, OrganizationUserService], + deps: [OrganizationAuthRequestApiService, CryptoService, OrganizationUserApiService], }), ] satisfies SafeProvider[], imports: [SharedModule, NoItemsModule, LooseComponentsModule], diff --git a/bitwarden_license/bit-web/src/app/admin-console/providers/manage/dialogs/bulk-confirm-dialog.component.ts b/bitwarden_license/bit-web/src/app/admin-console/providers/manage/dialogs/bulk-confirm-dialog.component.ts index d4a179091aa..986cf4d30ee 100644 --- a/bitwarden_license/bit-web/src/app/admin-console/providers/manage/dialogs/bulk-confirm-dialog.component.ts +++ b/bitwarden_license/bit-web/src/app/admin-console/providers/manage/dialogs/bulk-confirm-dialog.component.ts @@ -1,11 +1,11 @@ import { DIALOG_DATA, DialogConfig } from "@angular/cdk/dialog"; import { Component, Inject } from "@angular/core"; -import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { OrganizationUserBulkPublicKeyResponse, OrganizationUserBulkResponse, -} from "@bitwarden/common/admin-console/abstractions/organization-user/responses"; +} from "@bitwarden/admin-console/common"; +import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { ProviderUserStatusType } from "@bitwarden/common/admin-console/enums"; import { ProviderUserBulkConfirmRequest } from "@bitwarden/common/admin-console/models/request/provider/provider-user-bulk-confirm.request"; import { ProviderUserBulkRequest } from "@bitwarden/common/admin-console/models/request/provider/provider-user-bulk.request"; diff --git a/bitwarden_license/bit-web/tsconfig.json b/bitwarden_license/bit-web/tsconfig.json index 8bc6ea46e49..e05ae8018f5 100644 --- a/bitwarden_license/bit-web/tsconfig.json +++ b/bitwarden_license/bit-web/tsconfig.json @@ -5,7 +5,7 @@ "module": "ES2020", "resolveJsonModule": true, "paths": { - "@bitwarden/admin-console": ["../../libs/admin-console/src"], + "@bitwarden/admin-console/common": ["../../libs/admin-console/src/common"], "@bitwarden/angular/*": ["../../libs/angular/src/*"], "@bitwarden/auth/common": ["../../libs/auth/src/common"], "@bitwarden/auth/angular": ["../../libs/auth/src/angular"], diff --git a/libs/admin-console/src/common/index.ts b/libs/admin-console/src/common/index.ts new file mode 100644 index 00000000000..0af54f8ffbf --- /dev/null +++ b/libs/admin-console/src/common/index.ts @@ -0,0 +1 @@ +export * from "./organization-user"; diff --git a/libs/admin-console/src/common/organization-user/abstractions/index.ts b/libs/admin-console/src/common/organization-user/abstractions/index.ts new file mode 100644 index 00000000000..01cd189b3dd --- /dev/null +++ b/libs/admin-console/src/common/organization-user/abstractions/index.ts @@ -0,0 +1 @@ +export * from "./organization-user-api.service"; diff --git a/libs/common/src/admin-console/abstractions/organization-user/organization-user.service.ts b/libs/admin-console/src/common/organization-user/abstractions/organization-user-api.service.ts similarity index 98% rename from libs/common/src/admin-console/abstractions/organization-user/organization-user.service.ts rename to libs/admin-console/src/common/organization-user/abstractions/organization-user-api.service.ts index aada830f954..ea5d2185ee2 100644 --- a/libs/common/src/admin-console/abstractions/organization-user/organization-user.service.ts +++ b/libs/admin-console/src/common/organization-user/abstractions/organization-user-api.service.ts @@ -1,4 +1,4 @@ -import { ListResponse } from "../../../models/response/list.response"; +import { ListResponse } from "@bitwarden/common/models/response/list.response"; import { OrganizationUserAcceptInitRequest, @@ -9,19 +9,19 @@ import { OrganizationUserResetPasswordEnrollmentRequest, OrganizationUserResetPasswordRequest, OrganizationUserUpdateRequest, -} from "./requests"; +} from "../models/requests"; import { OrganizationUserBulkPublicKeyResponse, OrganizationUserBulkResponse, OrganizationUserDetailsResponse, OrganizationUserResetPasswordDetailsResponse, OrganizationUserUserDetailsResponse, -} from "./responses"; +} from "../models/responses"; /** * Service for interacting with Organization Users via the API */ -export abstract class OrganizationUserService { +export abstract class OrganizationUserApiService { /** * Retrieve a single organization user by Id * @param organizationId - Identifier for the user's organization diff --git a/libs/admin-console/src/common/organization-user/index.ts b/libs/admin-console/src/common/organization-user/index.ts new file mode 100644 index 00000000000..6ddcc4f1988 --- /dev/null +++ b/libs/admin-console/src/common/organization-user/index.ts @@ -0,0 +1,3 @@ +export * from "./abstractions"; +export * from "./services"; +export * from "./models"; diff --git a/libs/admin-console/src/common/organization-user/models/index.ts b/libs/admin-console/src/common/organization-user/models/index.ts new file mode 100644 index 00000000000..a84f3da17e0 --- /dev/null +++ b/libs/admin-console/src/common/organization-user/models/index.ts @@ -0,0 +1,2 @@ +export * from "./requests"; +export * from "./responses"; diff --git a/libs/common/src/admin-console/abstractions/organization-user/requests/index.ts b/libs/admin-console/src/common/organization-user/models/requests/index.ts similarity index 90% rename from libs/common/src/admin-console/abstractions/organization-user/requests/index.ts rename to libs/admin-console/src/common/organization-user/models/requests/index.ts index 28c00f1bb3b..b0715620613 100644 --- a/libs/common/src/admin-console/abstractions/organization-user/requests/index.ts +++ b/libs/admin-console/src/common/organization-user/models/requests/index.ts @@ -6,3 +6,4 @@ export * from "./organization-user-invite.request"; export * from "./organization-user-reset-password.request"; export * from "./organization-user-reset-password-enrollment.request"; export * from "./organization-user-update.request"; +export * from "./organization-user-bulk.request"; diff --git a/libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-accept-init.request.ts b/libs/admin-console/src/common/organization-user/models/requests/organization-user-accept-init.request.ts similarity index 55% rename from libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-accept-init.request.ts rename to libs/admin-console/src/common/organization-user/models/requests/organization-user-accept-init.request.ts index cff51451ed6..20d87a774e6 100644 --- a/libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-accept-init.request.ts +++ b/libs/admin-console/src/common/organization-user/models/requests/organization-user-accept-init.request.ts @@ -1,4 +1,4 @@ -import { OrganizationKeysRequest } from "../../../models/request/organization-keys.request"; +import { OrganizationKeysRequest } from "@bitwarden/common/admin-console/models/request/organization-keys.request"; export class OrganizationUserAcceptInitRequest { token: string; diff --git a/libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-accept.request.ts b/libs/admin-console/src/common/organization-user/models/requests/organization-user-accept.request.ts similarity index 100% rename from libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-accept.request.ts rename to libs/admin-console/src/common/organization-user/models/requests/organization-user-accept.request.ts diff --git a/libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-bulk-confirm.request.ts b/libs/admin-console/src/common/organization-user/models/requests/organization-user-bulk-confirm.request.ts similarity index 100% rename from libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-bulk-confirm.request.ts rename to libs/admin-console/src/common/organization-user/models/requests/organization-user-bulk-confirm.request.ts diff --git a/libs/common/src/admin-console/services/organization-user/requests/organization-user-bulk.request.ts b/libs/admin-console/src/common/organization-user/models/requests/organization-user-bulk.request.ts similarity index 100% rename from libs/common/src/admin-console/services/organization-user/requests/organization-user-bulk.request.ts rename to libs/admin-console/src/common/organization-user/models/requests/organization-user-bulk.request.ts diff --git a/libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-confirm.request.ts b/libs/admin-console/src/common/organization-user/models/requests/organization-user-confirm.request.ts similarity index 100% rename from libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-confirm.request.ts rename to libs/admin-console/src/common/organization-user/models/requests/organization-user-confirm.request.ts diff --git a/libs/admin-console/src/common/organization-user/models/requests/organization-user-invite.request.ts b/libs/admin-console/src/common/organization-user/models/requests/organization-user-invite.request.ts new file mode 100644 index 00000000000..1793beccbef --- /dev/null +++ b/libs/admin-console/src/common/organization-user/models/requests/organization-user-invite.request.ts @@ -0,0 +1,12 @@ +import { OrganizationUserType } from "@bitwarden/common/admin-console/enums"; +import { PermissionsApi } from "@bitwarden/common/admin-console/models/api/permissions.api"; +import { SelectionReadOnlyRequest } from "@bitwarden/common/admin-console/models/request/selection-read-only.request"; + +export class OrganizationUserInviteRequest { + emails: string[] = []; + type: OrganizationUserType; + accessSecretsManager: boolean; + collections: SelectionReadOnlyRequest[] = []; + groups: string[]; + permissions: PermissionsApi; +} diff --git a/libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-reset-password-enrollment.request.ts b/libs/admin-console/src/common/organization-user/models/requests/organization-user-reset-password-enrollment.request.ts similarity index 70% rename from libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-reset-password-enrollment.request.ts rename to libs/admin-console/src/common/organization-user/models/requests/organization-user-reset-password-enrollment.request.ts index ab655466f82..4526b227d92 100644 --- a/libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-reset-password-enrollment.request.ts +++ b/libs/admin-console/src/common/organization-user/models/requests/organization-user-reset-password-enrollment.request.ts @@ -1,4 +1,4 @@ -import { SecretVerificationRequest } from "../../../../auth/models/request/secret-verification.request"; +import { SecretVerificationRequest } from "@bitwarden/common/auth/models/request/secret-verification.request"; export class OrganizationUserResetPasswordEnrollmentRequest extends SecretVerificationRequest { resetPasswordKey: string; diff --git a/libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-reset-password.request.ts b/libs/admin-console/src/common/organization-user/models/requests/organization-user-reset-password.request.ts similarity index 100% rename from libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-reset-password.request.ts rename to libs/admin-console/src/common/organization-user/models/requests/organization-user-reset-password.request.ts diff --git a/libs/admin-console/src/common/organization-user/models/requests/organization-user-update.request.ts b/libs/admin-console/src/common/organization-user/models/requests/organization-user-update.request.ts new file mode 100644 index 00000000000..283af4f081f --- /dev/null +++ b/libs/admin-console/src/common/organization-user/models/requests/organization-user-update.request.ts @@ -0,0 +1,11 @@ +import { OrganizationUserType } from "@bitwarden/common/admin-console/enums"; +import { PermissionsApi } from "@bitwarden/common/admin-console/models/api/permissions.api"; +import { SelectionReadOnlyRequest } from "@bitwarden/common/admin-console/models/request/selection-read-only.request"; + +export class OrganizationUserUpdateRequest { + type: OrganizationUserType; + accessSecretsManager: boolean; + collections: SelectionReadOnlyRequest[] = []; + groups: string[] = []; + permissions: PermissionsApi; +} diff --git a/libs/common/src/admin-console/abstractions/organization-user/responses/index.ts b/libs/admin-console/src/common/organization-user/models/responses/index.ts similarity index 100% rename from libs/common/src/admin-console/abstractions/organization-user/responses/index.ts rename to libs/admin-console/src/common/organization-user/models/responses/index.ts diff --git a/libs/common/src/admin-console/abstractions/organization-user/responses/organization-user-bulk-public-key.response.ts b/libs/admin-console/src/common/organization-user/models/responses/organization-user-bulk-public-key.response.ts similarity index 80% rename from libs/common/src/admin-console/abstractions/organization-user/responses/organization-user-bulk-public-key.response.ts rename to libs/admin-console/src/common/organization-user/models/responses/organization-user-bulk-public-key.response.ts index 7edb2f1436c..7996980bbfb 100644 --- a/libs/common/src/admin-console/abstractions/organization-user/responses/organization-user-bulk-public-key.response.ts +++ b/libs/admin-console/src/common/organization-user/models/responses/organization-user-bulk-public-key.response.ts @@ -1,4 +1,4 @@ -import { BaseResponse } from "../../../../models/response/base.response"; +import { BaseResponse } from "@bitwarden/common/models/response/base.response"; export class OrganizationUserBulkPublicKeyResponse extends BaseResponse { id: string; diff --git a/libs/common/src/admin-console/abstractions/organization-user/responses/organization-user-bulk.response.ts b/libs/admin-console/src/common/organization-user/models/responses/organization-user-bulk.response.ts similarity index 76% rename from libs/common/src/admin-console/abstractions/organization-user/responses/organization-user-bulk.response.ts rename to libs/admin-console/src/common/organization-user/models/responses/organization-user-bulk.response.ts index 40b2877275e..ea39db18e24 100644 --- a/libs/common/src/admin-console/abstractions/organization-user/responses/organization-user-bulk.response.ts +++ b/libs/admin-console/src/common/organization-user/models/responses/organization-user-bulk.response.ts @@ -1,4 +1,4 @@ -import { BaseResponse } from "../../../../models/response/base.response"; +import { BaseResponse } from "@bitwarden/common/models/response/base.response"; export class OrganizationUserBulkResponse extends BaseResponse { id: string; diff --git a/libs/common/src/admin-console/abstractions/organization-user/responses/organization-user.response.ts b/libs/admin-console/src/common/organization-user/models/responses/organization-user.response.ts similarity index 85% rename from libs/common/src/admin-console/abstractions/organization-user/responses/organization-user.response.ts rename to libs/admin-console/src/common/organization-user/models/responses/organization-user.response.ts index b59166bfea9..7323855f69f 100644 --- a/libs/common/src/admin-console/abstractions/organization-user/responses/organization-user.response.ts +++ b/libs/admin-console/src/common/organization-user/models/responses/organization-user.response.ts @@ -1,8 +1,11 @@ -import { BaseResponse } from "../../../../models/response/base.response"; -import { KdfType } from "../../../../platform/enums"; -import { OrganizationUserStatusType, OrganizationUserType } from "../../../enums"; -import { PermissionsApi } from "../../../models/api/permissions.api"; -import { SelectionReadOnlyResponse } from "../../../models/response/selection-read-only.response"; +import { + OrganizationUserStatusType, + OrganizationUserType, +} from "@bitwarden/common/admin-console/enums"; +import { PermissionsApi } from "@bitwarden/common/admin-console/models/api/permissions.api"; +import { SelectionReadOnlyResponse } from "@bitwarden/common/admin-console/models/response/selection-read-only.response"; +import { BaseResponse } from "@bitwarden/common/models/response/base.response"; +import { KdfType } from "@bitwarden/common/platform/enums"; export class OrganizationUserResponse extends BaseResponse { id: string; diff --git a/libs/common/src/admin-console/services/organization-user/organization-user.service.implementation.ts b/libs/admin-console/src/common/organization-user/services/default-organization-user-api.service.ts similarity index 94% rename from libs/common/src/admin-console/services/organization-user/organization-user.service.implementation.ts rename to libs/admin-console/src/common/organization-user/services/default-organization-user-api.service.ts index e3687691b6b..40824550d44 100644 --- a/libs/common/src/admin-console/services/organization-user/organization-user.service.implementation.ts +++ b/libs/admin-console/src/common/organization-user/services/default-organization-user-api.service.ts @@ -1,6 +1,7 @@ -import { ApiService } from "../../../abstractions/api.service"; -import { ListResponse } from "../../../models/response/list.response"; -import { OrganizationUserService } from "../../abstractions/organization-user/organization-user.service"; +import { ApiService } from "@bitwarden/common/abstractions/api.service"; +import { ListResponse } from "@bitwarden/common/models/response/list.response"; + +import { OrganizationUserApiService } from "../abstractions"; import { OrganizationUserAcceptInitRequest, OrganizationUserAcceptRequest, @@ -10,18 +11,17 @@ import { OrganizationUserResetPasswordEnrollmentRequest, OrganizationUserResetPasswordRequest, OrganizationUserUpdateRequest, -} from "../../abstractions/organization-user/requests"; + OrganizationUserBulkRequest, +} from "../models/requests"; import { OrganizationUserBulkPublicKeyResponse, OrganizationUserBulkResponse, OrganizationUserDetailsResponse, OrganizationUserResetPasswordDetailsResponse, OrganizationUserUserDetailsResponse, -} from "../../abstractions/organization-user/responses"; +} from "../models/responses"; -import { OrganizationUserBulkRequest } from "./requests"; - -export class OrganizationUserServiceImplementation implements OrganizationUserService { +export class DefaultOrganizationUserApiService implements OrganizationUserApiService { constructor(private apiService: ApiService) {} async getOrganizationUser( diff --git a/libs/admin-console/src/common/organization-user/services/index.ts b/libs/admin-console/src/common/organization-user/services/index.ts new file mode 100644 index 00000000000..6135236d6a6 --- /dev/null +++ b/libs/admin-console/src/common/organization-user/services/index.ts @@ -0,0 +1 @@ +export * from "./default-organization-user-api.service"; diff --git a/libs/admin-console/src/index.ts b/libs/admin-console/src/index.ts deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/libs/angular/src/auth/components/base-login-decryption-options.component.ts b/libs/angular/src/auth/components/base-login-decryption-options.component.ts index 6487c0cf847..c237c98c0bb 100644 --- a/libs/angular/src/auth/components/base-login-decryption-options.component.ts +++ b/libs/angular/src/auth/components/base-login-decryption-options.component.ts @@ -17,6 +17,7 @@ import { take, } from "rxjs"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import { LoginEmailServiceAbstraction, UserDecryptionOptions, @@ -24,7 +25,6 @@ import { } from "@bitwarden/auth/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { DeviceTrustServiceAbstraction } from "@bitwarden/common/auth/abstractions/device-trust.service.abstraction"; import { DevicesServiceAbstraction } from "@bitwarden/common/auth/abstractions/devices/devices.service.abstraction"; @@ -95,7 +95,7 @@ export class BaseLoginDecryptionOptionsComponent implements OnInit, OnDestroy { protected loginEmailService: LoginEmailServiceAbstraction, protected organizationApiService: OrganizationApiServiceAbstraction, protected cryptoService: CryptoService, - protected organizationUserService: OrganizationUserService, + protected organizationUserApiService: OrganizationUserApiService, protected apiService: ApiService, protected i18nService: I18nService, protected validationService: ValidationService, diff --git a/libs/angular/src/auth/components/set-password.component.ts b/libs/angular/src/auth/components/set-password.component.ts index e9662c71076..ea4c2fb9267 100644 --- a/libs/angular/src/auth/components/set-password.component.ts +++ b/libs/angular/src/auth/components/set-password.component.ts @@ -3,11 +3,13 @@ import { ActivatedRoute, Router } from "@angular/router"; import { firstValueFrom, of } from "rxjs"; import { filter, first, switchMap, tap } from "rxjs/operators"; +import { + OrganizationUserApiService, + OrganizationUserResetPasswordEnrollmentRequest, +} from "@bitwarden/admin-console/common"; import { InternalUserDecryptionOptionsServiceAbstraction } from "@bitwarden/auth/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; -import { OrganizationUserResetPasswordEnrollmentRequest } from "@bitwarden/common/admin-console/abstractions/organization-user/requests"; import { PolicyApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy-api.service.abstraction"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { MasterPasswordPolicyOptions } from "@bitwarden/common/admin-console/models/domain/master-password-policy-options"; @@ -68,7 +70,7 @@ export class SetPasswordComponent extends BaseChangePasswordComponent implements private route: ActivatedRoute, stateService: StateService, private organizationApiService: OrganizationApiServiceAbstraction, - private organizationUserService: OrganizationUserService, + private organizationUserApiService: OrganizationUserApiService, private userDecryptionOptionsService: InternalUserDecryptionOptionsServiceAbstraction, private ssoLoginService: SsoLoginServiceAbstraction, dialogService: DialogService, @@ -219,7 +221,7 @@ export class SetPasswordComponent extends BaseChangePasswordComponent implements resetRequest.masterPasswordHash = masterPasswordHash; resetRequest.resetPasswordKey = encryptedUserKey.encryptedString; - return this.organizationUserService.putOrganizationUserResetPasswordEnrollment( + return this.organizationUserApiService.putOrganizationUserResetPasswordEnrollment( this.orgId, this.userId, resetRequest, diff --git a/libs/angular/src/services/jslib-services.module.ts b/libs/angular/src/services/jslib-services.module.ts index 851e02c8e04..7b9c33f3d0a 100644 --- a/libs/angular/src/services/jslib-services.module.ts +++ b/libs/angular/src/services/jslib-services.module.ts @@ -1,6 +1,10 @@ import { ErrorHandler, LOCALE_ID, NgModule } from "@angular/core"; import { Subject } from "rxjs"; +import { + OrganizationUserApiService, + DefaultOrganizationUserApiService, +} from "@bitwarden/admin-console/common"; import { SetPasswordJitService, DefaultSetPasswordJitService, @@ -43,7 +47,6 @@ import { OrgDomainServiceAbstraction, } from "@bitwarden/common/admin-console/abstractions/organization-domain/org-domain.service.abstraction"; import { OrganizationManagementPreferencesService } from "@bitwarden/common/admin-console/abstractions/organization-management-preferences/organization-management-preferences.service"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { PolicyApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy-api.service.abstraction"; import { InternalPolicyService, @@ -56,7 +59,6 @@ import { OrganizationService } from "@bitwarden/common/admin-console/services/or import { OrgDomainApiService } from "@bitwarden/common/admin-console/services/organization-domain/org-domain-api.service"; import { OrgDomainService } from "@bitwarden/common/admin-console/services/organization-domain/org-domain.service"; import { DefaultOrganizationManagementPreferencesService } from "@bitwarden/common/admin-console/services/organization-management-preferences/default-organization-management-preferences.service"; -import { OrganizationUserServiceImplementation } from "@bitwarden/common/admin-console/services/organization-user/organization-user.service.implementation"; import { PolicyApiService } from "@bitwarden/common/admin-console/services/policy/policy-api.service"; import { PolicyService } from "@bitwarden/common/admin-console/services/policy/policy.service"; import { ProviderApiService } from "@bitwarden/common/admin-console/services/provider/provider-api.service"; @@ -934,8 +936,8 @@ const safeProviders: SafeProvider[] = [ useExisting: InternalOrganizationServiceAbstraction, }), safeProvider({ - provide: OrganizationUserService, - useClass: OrganizationUserServiceImplementation, + provide: OrganizationUserApiService, + useClass: DefaultOrganizationUserApiService, deps: [ApiServiceAbstraction], }), safeProvider({ @@ -945,7 +947,7 @@ const safeProviders: SafeProvider[] = [ OrganizationApiServiceAbstraction, AccountServiceAbstraction, CryptoServiceAbstraction, - OrganizationUserService, + OrganizationUserApiService, I18nServiceAbstraction, ], }), @@ -1273,7 +1275,7 @@ const safeProviders: SafeProvider[] = [ KdfConfigServiceAbstraction, InternalMasterPasswordServiceAbstraction, OrganizationApiServiceAbstraction, - OrganizationUserService, + OrganizationUserApiService, InternalUserDecryptionOptionsServiceAbstraction, ], }), diff --git a/libs/auth/src/angular/set-password-jit/default-set-password-jit.service.spec.ts b/libs/auth/src/angular/set-password-jit/default-set-password-jit.service.spec.ts index 26b6b0e529f..f47e217d0ec 100644 --- a/libs/auth/src/angular/set-password-jit/default-set-password-jit.service.spec.ts +++ b/libs/auth/src/angular/set-password-jit/default-set-password-jit.service.spec.ts @@ -1,13 +1,13 @@ import { MockProxy, mock } from "jest-mock-extended"; import { BehaviorSubject, of } from "rxjs"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; import { FakeUserDecryptionOptions as UserDecryptionOptions, InternalUserDecryptionOptionsServiceAbstraction, } from "@bitwarden/auth/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; import { OrganizationKeysResponse } from "@bitwarden/common/admin-console/models/response/organization-keys.response"; import { KdfConfigService } from "@bitwarden/common/auth/abstractions/kdf-config.service"; import { InternalMasterPasswordServiceAbstraction } from "@bitwarden/common/auth/abstractions/master-password.service.abstraction"; @@ -37,7 +37,7 @@ describe("DefaultSetPasswordJitService", () => { let kdfConfigService: MockProxy; let masterPasswordService: MockProxy; let organizationApiService: MockProxy; - let organizationUserService: MockProxy; + let organizationUserApiService: MockProxy; let userDecryptionOptionsService: MockProxy; beforeEach(() => { @@ -47,7 +47,7 @@ describe("DefaultSetPasswordJitService", () => { kdfConfigService = mock(); masterPasswordService = mock(); organizationApiService = mock(); - organizationUserService = mock(); + organizationUserApiService = mock(); userDecryptionOptionsService = mock(); sut = new DefaultSetPasswordJitService( @@ -57,7 +57,7 @@ describe("DefaultSetPasswordJitService", () => { kdfConfigService, masterPasswordService, organizationApiService, - organizationUserService, + organizationUserApiService, userDecryptionOptionsService, ); }); @@ -170,7 +170,7 @@ describe("DefaultSetPasswordJitService", () => { cryptoService.userKey$.mockReturnValue(of(userKey)); cryptoService.rsaEncrypt.mockResolvedValue(userKeyEncString); - organizationUserService.putOrganizationUserResetPasswordEnrollment.mockResolvedValue( + organizationUserApiService.putOrganizationUserResetPasswordEnrollment.mockResolvedValue( undefined, ); } @@ -211,7 +211,9 @@ describe("DefaultSetPasswordJitService", () => { expect(apiService.setPassword).toHaveBeenCalledWith(setPasswordRequest); expect(organizationApiService.getKeys).toHaveBeenCalledWith(orgId); expect(cryptoService.rsaEncrypt).toHaveBeenCalledWith(userKey.key, orgPublicKey); - expect(organizationUserService.putOrganizationUserResetPasswordEnrollment).toHaveBeenCalled(); + expect( + organizationUserApiService.putOrganizationUserResetPasswordEnrollment, + ).toHaveBeenCalled(); }); it("when handling reset password auto enroll, it should throw an error if organization keys are not found", async () => { @@ -224,7 +226,7 @@ describe("DefaultSetPasswordJitService", () => { // Act and Assert await expect(sut.setPassword(credentials)).rejects.toThrow(); expect( - organizationUserService.putOrganizationUserResetPasswordEnrollment, + organizationUserApiService.putOrganizationUserResetPasswordEnrollment, ).not.toHaveBeenCalled(); }); }); diff --git a/libs/auth/src/angular/set-password-jit/default-set-password-jit.service.ts b/libs/auth/src/angular/set-password-jit/default-set-password-jit.service.ts index a5c196b5c7e..968ba60dec3 100644 --- a/libs/auth/src/angular/set-password-jit/default-set-password-jit.service.ts +++ b/libs/auth/src/angular/set-password-jit/default-set-password-jit.service.ts @@ -1,10 +1,12 @@ import { firstValueFrom } from "rxjs"; +import { + OrganizationUserApiService, + OrganizationUserResetPasswordEnrollmentRequest, +} from "@bitwarden/admin-console/common"; import { InternalUserDecryptionOptionsServiceAbstraction } from "@bitwarden/auth/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; -import { OrganizationUserService } from "@bitwarden/common/admin-console/abstractions/organization-user/organization-user.service"; -import { OrganizationUserResetPasswordEnrollmentRequest } from "@bitwarden/common/admin-console/abstractions/organization-user/requests"; import { KdfConfigService } from "@bitwarden/common/auth/abstractions/kdf-config.service"; import { InternalMasterPasswordServiceAbstraction } from "@bitwarden/common/auth/abstractions/master-password.service.abstraction"; import { ForceSetPasswordReason } from "@bitwarden/common/auth/models/domain/force-set-password-reason"; @@ -31,7 +33,7 @@ export class DefaultSetPasswordJitService implements SetPasswordJitService { protected kdfConfigService: KdfConfigService, protected masterPasswordService: InternalMasterPasswordServiceAbstraction, protected organizationApiService: OrganizationApiServiceAbstraction, - protected organizationUserService: OrganizationUserService, + protected organizationUserApiService: OrganizationUserApiService, protected userDecryptionOptionsService: InternalUserDecryptionOptionsServiceAbstraction, ) {} @@ -161,7 +163,7 @@ export class DefaultSetPasswordJitService implements SetPasswordJitService { resetRequest.masterPasswordHash = masterKeyHash; resetRequest.resetPasswordKey = encryptedUserKey.encryptedString; - await this.organizationUserService.putOrganizationUserResetPasswordEnrollment( + await this.organizationUserApiService.putOrganizationUserResetPasswordEnrollment( orgId, userId, resetRequest, diff --git a/libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-invite.request.ts b/libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-invite.request.ts deleted file mode 100644 index dd82b730c5f..00000000000 --- a/libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-invite.request.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { OrganizationUserType } from "../../../enums"; -import { PermissionsApi } from "../../../models/api/permissions.api"; -import { SelectionReadOnlyRequest } from "../../../models/request/selection-read-only.request"; - -export class OrganizationUserInviteRequest { - emails: string[] = []; - type: OrganizationUserType; - accessSecretsManager: boolean; - collections: SelectionReadOnlyRequest[] = []; - groups: string[]; - permissions: PermissionsApi; -} diff --git a/libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-update.request.ts b/libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-update.request.ts deleted file mode 100644 index 00201549d35..00000000000 --- a/libs/common/src/admin-console/abstractions/organization-user/requests/organization-user-update.request.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { OrganizationUserType } from "../../../enums"; -import { PermissionsApi } from "../../../models/api/permissions.api"; -import { SelectionReadOnlyRequest } from "../../../models/request/selection-read-only.request"; - -export class OrganizationUserUpdateRequest { - type: OrganizationUserType; - accessSecretsManager: boolean; - collections: SelectionReadOnlyRequest[] = []; - groups: string[] = []; - permissions: PermissionsApi; -} diff --git a/libs/common/src/admin-console/models/response/provider/provider-user-bulk-public-key.response.ts b/libs/common/src/admin-console/models/response/provider/provider-user-bulk-public-key.response.ts index 39e5747ade3..1f497dd8c5f 100644 --- a/libs/common/src/admin-console/models/response/provider/provider-user-bulk-public-key.response.ts +++ b/libs/common/src/admin-console/models/response/provider/provider-user-bulk-public-key.response.ts @@ -1,3 +1,3 @@ -import { OrganizationUserBulkPublicKeyResponse } from "../../../abstractions/organization-user/responses"; +import { OrganizationUserBulkPublicKeyResponse } from "@bitwarden/admin-console/common"; export class ProviderUserBulkPublicKeyResponse extends OrganizationUserBulkPublicKeyResponse {} diff --git a/libs/common/src/admin-console/services/organization-user/requests/index.ts b/libs/common/src/admin-console/services/organization-user/requests/index.ts deleted file mode 100644 index 4daafb4c6a9..00000000000 --- a/libs/common/src/admin-console/services/organization-user/requests/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./organization-user-bulk.request"; diff --git a/libs/common/src/auth/models/request/update-tde-offboarding-password.request.ts b/libs/common/src/auth/models/request/update-tde-offboarding-password.request.ts index 0f6a8c3911d..cf6577cb76c 100644 --- a/libs/common/src/auth/models/request/update-tde-offboarding-password.request.ts +++ b/libs/common/src/auth/models/request/update-tde-offboarding-password.request.ts @@ -1,4 +1,4 @@ -import { OrganizationUserResetPasswordRequest } from "../../../admin-console/abstractions/organization-user/requests"; +import { OrganizationUserResetPasswordRequest } from "@bitwarden/admin-console/common"; export class UpdateTdeOffboardingPasswordRequest extends OrganizationUserResetPasswordRequest { masterPasswordHint: string; diff --git a/libs/common/src/auth/models/request/update-temp-password.request.ts b/libs/common/src/auth/models/request/update-temp-password.request.ts index 84bcc597f43..47e76d5e9d8 100644 --- a/libs/common/src/auth/models/request/update-temp-password.request.ts +++ b/libs/common/src/auth/models/request/update-temp-password.request.ts @@ -1,4 +1,4 @@ -import { OrganizationUserResetPasswordRequest } from "../../../admin-console/abstractions/organization-user/requests"; +import { OrganizationUserResetPasswordRequest } from "@bitwarden/admin-console/common"; export class UpdateTempPasswordRequest extends OrganizationUserResetPasswordRequest { masterPasswordHint: string; diff --git a/libs/common/src/auth/services/password-reset-enrollment.service.implementation.spec.ts b/libs/common/src/auth/services/password-reset-enrollment.service.implementation.spec.ts index 19b29f05932..575b3a6ee79 100644 --- a/libs/common/src/auth/services/password-reset-enrollment.service.implementation.spec.ts +++ b/libs/common/src/auth/services/password-reset-enrollment.service.implementation.spec.ts @@ -1,9 +1,10 @@ import { mock, MockProxy } from "jest-mock-extended"; import { BehaviorSubject } from "rxjs"; +import { OrganizationUserApiService } from "@bitwarden/admin-console/common"; + import { UserId } from "../../../../common/src/types/guid"; import { OrganizationApiServiceAbstraction } from "../../admin-console/abstractions/organization/organization-api.service.abstraction"; -import { OrganizationUserService } from "../../admin-console/abstractions/organization-user/organization-user.service"; import { OrganizationAutoEnrollStatusResponse } from "../../admin-console/models/response/organization-auto-enroll-status.response"; import { CryptoService } from "../../platform/abstractions/crypto.service"; import { I18nService } from "../../platform/abstractions/i18n.service"; @@ -17,7 +18,7 @@ describe("PasswordResetEnrollmentServiceImplementation", () => { let organizationApiService: MockProxy; let accountService: MockProxy; let cryptoService: MockProxy; - let organizationUserService: MockProxy; + let organizationUserApiService: MockProxy; let i18nService: MockProxy; let service: PasswordResetEnrollmentServiceImplementation; @@ -26,13 +27,13 @@ describe("PasswordResetEnrollmentServiceImplementation", () => { accountService = mock(); accountService.activeAccount$ = activeAccountSubject; cryptoService = mock(); - organizationUserService = mock(); + organizationUserApiService = mock(); i18nService = mock(); service = new PasswordResetEnrollmentServiceImplementation( organizationApiService, accountService, cryptoService, - organizationUserService, + organizationUserApiService, i18nService, ); }); @@ -100,7 +101,7 @@ describe("PasswordResetEnrollmentServiceImplementation", () => { await service.enroll("orgId"); expect( - organizationUserService.putOrganizationUserResetPasswordEnrollment, + organizationUserApiService.putOrganizationUserResetPasswordEnrollment, ).toHaveBeenCalledWith( "orgId", "userId", @@ -122,7 +123,7 @@ describe("PasswordResetEnrollmentServiceImplementation", () => { await service.enroll("orgId", "userId", { key: "key" } as any); expect( - organizationUserService.putOrganizationUserResetPasswordEnrollment, + organizationUserApiService.putOrganizationUserResetPasswordEnrollment, ).toHaveBeenCalledWith( "orgId", "userId", diff --git a/libs/common/src/auth/services/password-reset-enrollment.service.implementation.ts b/libs/common/src/auth/services/password-reset-enrollment.service.implementation.ts index aeb978bfd90..65718d96694 100644 --- a/libs/common/src/auth/services/password-reset-enrollment.service.implementation.ts +++ b/libs/common/src/auth/services/password-reset-enrollment.service.implementation.ts @@ -1,8 +1,11 @@ import { firstValueFrom, map } from "rxjs"; +import { + OrganizationUserApiService, + OrganizationUserResetPasswordEnrollmentRequest, +} from "@bitwarden/admin-console/common"; + import { OrganizationApiServiceAbstraction } from "../../admin-console/abstractions/organization/organization-api.service.abstraction"; -import { OrganizationUserService } from "../../admin-console/abstractions/organization-user/organization-user.service"; -import { OrganizationUserResetPasswordEnrollmentRequest } from "../../admin-console/abstractions/organization-user/requests"; import { CryptoService } from "../../platform/abstractions/crypto.service"; import { I18nService } from "../../platform/abstractions/i18n.service"; import { Utils } from "../../platform/misc/utils"; @@ -17,7 +20,7 @@ export class PasswordResetEnrollmentServiceImplementation protected organizationApiService: OrganizationApiServiceAbstraction, protected accountService: AccountService, protected cryptoService: CryptoService, - protected organizationUserService: OrganizationUserService, + protected organizationUserApiService: OrganizationUserApiService, protected i18nService: I18nService, ) {} @@ -49,7 +52,7 @@ export class PasswordResetEnrollmentServiceImplementation const resetRequest = new OrganizationUserResetPasswordEnrollmentRequest(); resetRequest.resetPasswordKey = encryptedKey.encryptedString; - await this.organizationUserService.putOrganizationUserResetPasswordEnrollment( + await this.organizationUserApiService.putOrganizationUserResetPasswordEnrollment( organizationId, userId, resetRequest, diff --git a/libs/shared/tsconfig.libs.json b/libs/shared/tsconfig.libs.json index 7801a8909f6..647b8a9c55f 100644 --- a/libs/shared/tsconfig.libs.json +++ b/libs/shared/tsconfig.libs.json @@ -3,7 +3,7 @@ "compilerOptions": { "resolveJsonModule": true, "paths": { - "@bitwarden/admin-console": ["../admin-console/src"], + "@bitwarden/admin-console/common": ["../admin-console/src/common"], "@bitwarden/angular/*": ["../angular/src/*"], "@bitwarden/auth/common": ["../auth/src/common"], "@bitwarden/auth/angular": ["../auth/src/angular"], diff --git a/tsconfig.json b/tsconfig.json index 79edf0da2e1..46829a9c30f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,7 +15,7 @@ "baseUrl": ".", "resolveJsonModule": true, "paths": { - "@bitwarden/admin-console": ["./libs/admin-console/src"], + "@bitwarden/admin-console/common": ["./libs/admin-console/src/common"], "@bitwarden/angular/*": ["./libs/angular/src/*"], "@bitwarden/auth/common": ["./libs/auth/src/common"], "@bitwarden/auth/angular": ["./libs/auth/src/angular"],