1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-11-21 11:35:34 +01:00

[AC-2328] Add a Bulk OrganizationUsersController.GetResetPasswordDetails endpoint (#9140)

* [AC-2302] Move organization-auth-request.service to bit-common folder

* [AC-2302] Rename organization-auth-request.service to organization-auth-request-api.service

* [AC-2302] Move logic from component to organization-auth-request.service

* [AC-2302] Fix import path in OrganizationAuthRequestService

* [AC-2302] Move imports to OrganizationsModule and delete unused CoreOrganizationModule

* [AC-2302] Move the call to get userResetPasswordDetails into OrganizationAuthRequestService

* [AC-2302] Remove @Injectable() and manually configure dependencies

* [AC-2302] Add OrganizationAuthRequestService unit tests first draft

* [AC-2302] Refactor device-approvals.component.ts to remove unused imports

* [AC-2302] Set up jest on bit-common and add unit tests for OrganizationAuthRequestService

* [AC-2302] Add bit-common to jest.config.js

* [AC-2302] Update organizations.module.ts to include safeProviders declared in variable

* [AC-2302] Remove services and views folders from bit-common

* [AC-2302] Define path mapping

* Adjust an import path

The import path of `PendingAuthRequestView` in
`OrganizationAuthRequestApiService` was pointing to the wrong place. I
think this file was just recently moved, and the import didn't get
updated.

* Get paths working

* Fix import

* Update jest config to use ts-jest adn jsdom

* Copy-paste path mappings from bit-web

* Remove unnecessary test setup file

* Undo unnecessary change

* Fix remaining path mappings

* Remove Bitwarden License mapping from OSS code

* Fix bit-web so it uses its own tsconfig

* Fix import path

* Remove web-bit entrypoint from OSS tsconfig

* Make DeviceApprovalsComponent standalone

* Remove organization-auth-request-api.service export

* Remove OrganizationsRoutingModule from DeviceApprovalsComponent imports

* Remove CoreOrganizationModule from OrganizationsModule imports

* Remove NoItemsModule from OrganizationsModule imports

* Use ApiService from JslibServicesModule

* Update providers in device-approvals.component.ts

* Add method to retrieve reset password details for multiple organization users

* Add organizationUserId property to OrganizationUserResetPasswordDetailsResponse class

* Rename ResetPasswordDetails to AccountRecoveryDetails

---------

Co-authored-by: Addison Beck <hello@addisonbeck.com>
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
This commit is contained in:
Rui Tomé 2024-05-24 11:20:51 +01:00 committed by GitHub
parent 74bc24b39a
commit 5dd7224143
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 26 additions and 0 deletions

View File

@ -66,6 +66,16 @@ export abstract class OrganizationUserService {
id: string,
): Promise<OrganizationUserResetPasswordDetailsResponse>;
/**
* Retrieve reset password details for many organization users
* @param organizationId - Identifier for the organization
* @param ids - A list of organization user identifiers
*/
abstract getManyOrganizationUserAccountRecoveryDetails(
organizationId: string,
ids: string[],
): Promise<ListResponse<OrganizationUserResetPasswordDetailsResponse>>;
/**
* Create new organization user invite(s) for the specified organization
* @param organizationId - Identifier for the organization

View File

@ -70,6 +70,7 @@ export class OrganizationUserDetailsResponse extends OrganizationUserResponse {
}
export class OrganizationUserResetPasswordDetailsResponse extends BaseResponse {
organizationUserId: string;
kdf: KdfType;
kdfIterations: number;
kdfMemory?: number;
@ -79,6 +80,7 @@ export class OrganizationUserResetPasswordDetailsResponse extends BaseResponse {
constructor(response: any) {
super(response);
this.organizationUserId = this.getResponseProperty("OrganizationUserId");
this.kdf = this.getResponseProperty("Kdf");
this.kdfIterations = this.getResponseProperty("KdfIterations");
this.kdfMemory = this.getResponseProperty("KdfMemory");

View File

@ -98,6 +98,20 @@ export class OrganizationUserServiceImplementation implements OrganizationUserSe
return new OrganizationUserResetPasswordDetailsResponse(r);
}
async getManyOrganizationUserAccountRecoveryDetails(
organizationId: string,
ids: string[],
): Promise<ListResponse<OrganizationUserResetPasswordDetailsResponse>> {
const r = await this.apiService.send(
"POST",
"/organizations/" + organizationId + "/users/account-recovery-details",
new OrganizationUserBulkRequest(ids),
true,
true,
);
return new ListResponse(r, OrganizationUserResetPasswordDetailsResponse);
}
postOrganizationUserInvite(
organizationId: string,
request: OrganizationUserInviteRequest,