1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-20 18:23:31 +00:00

[SM-572] Hide Project's People and Service accounts tabs based on permission (#4885)

* Hide tabs based on permission

* Swap to a new endpoint

* Swap to different server implementation

* Swap to server's ProjectPermissionDetails

* remove async

* remove write access observable

* Fix mac decrypt error
This commit is contained in:
Thomas Avery
2023-03-02 09:02:48 -06:00
committed by GitHub
parent 5cc73d41d9
commit 5f05f73626
6 changed files with 49 additions and 15 deletions

View File

@@ -9,12 +9,15 @@ import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-cr
import { ListResponse } from "@bitwarden/common/models/response/list.response";
import { ProjectListView } from "../models/view/project-list.view";
import { ProjectView } from "../models/view/project.view";
import { ProjectPermissionDetailsView, ProjectView } from "../models/view/project.view";
import { BulkOperationStatus } from "../shared/dialogs/bulk-status-dialog.component";
import { ProjectRequest } from "./models/requests/project.request";
import { ProjectListItemResponse } from "./models/responses/project-list-item.response";
import { ProjectResponse } from "./models/responses/project.response";
import {
ProjectPermissionDetailsResponse,
ProjectResponse,
} from "./models/responses/project.response";
@Injectable({
providedIn: "root",
@@ -29,10 +32,10 @@ export class ProjectService {
private encryptService: EncryptService
) {}
async getByProjectId(projectId: string): Promise<ProjectView> {
async getByProjectId(projectId: string): Promise<ProjectPermissionDetailsView> {
const r = await this.apiService.send("GET", "/projects/" + projectId, null, true, true);
const projectResponse = new ProjectResponse(r);
return await this.createProjectView(projectResponse);
const projectResponse = new ProjectPermissionDetailsResponse(r);
return await this.createProjectPermissionDetailsView(projectResponse);
}
async getProjects(organizationId: string): Promise<ProjectListView[]> {
@@ -96,7 +99,9 @@ export class ProjectService {
return request;
}
private async createProjectView(projectResponse: ProjectResponse): Promise<ProjectView> {
private async createProjectView(
projectResponse: ProjectResponse | ProjectPermissionDetailsResponse
) {
const orgKey = await this.getOrganizationKey(projectResponse.organizationId);
const projectView = new ProjectView();
@@ -108,10 +113,19 @@ export class ProjectService {
new EncString(projectResponse.name),
orgKey
);
return projectView;
}
private async createProjectPermissionDetailsView(
projectResponse: ProjectPermissionDetailsResponse
): Promise<ProjectPermissionDetailsView> {
return {
...(await this.createProjectView(projectResponse)),
read: projectResponse.read,
write: projectResponse.write,
};
}
private async createProjectsListView(
organizationId: string,
projects: ProjectListItemResponse[]