diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/layout/navigation.component.html b/bitwarden_license/bit-web/src/app/secrets-manager/layout/navigation.component.html index 0ce398b131f..5ebf5cb9ca0 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/layout/navigation.component.html +++ b/bitwarden_license/bit-web/src/app/secrets-manager/layout/navigation.component.html @@ -10,8 +10,13 @@ [text]="'serviceAccounts' | i18n" route="service-accounts" > - - + + diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/layout/navigation.component.ts b/bitwarden_license/bit-web/src/app/secrets-manager/layout/navigation.component.ts index 86ef7ce3b04..1d757c90ce2 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/layout/navigation.component.ts +++ b/bitwarden_license/bit-web/src/app/secrets-manager/layout/navigation.component.ts @@ -1,5 +1,8 @@ import { Component } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; +import { map } from "rxjs"; +import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { Organization } from "@bitwarden/common/models/domain/organization"; import { SecretsManagerLogo } from "./secrets-manager-logo"; @@ -9,7 +12,13 @@ import { SecretsManagerLogo } from "./secrets-manager-logo"; templateUrl: "./navigation.component.html", }) export class NavigationComponent { + protected isAdmin$ = this.route.params.pipe( + map((params) => this.organizationService.get(params.organizationId)?.isAdmin) + ); + protected readonly logo = SecretsManagerLogo; protected orgFilter = (org: Organization) => org.canAccessSecretsManager; + + constructor(private route: ActivatedRoute, private organizationService: OrganizationService) {} } diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/settings/porting/sm-export.component.ts b/bitwarden_license/bit-web/src/app/secrets-manager/settings/porting/sm-export.component.ts index 6f98c17b9c8..684e63063d0 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/settings/porting/sm-export.component.ts +++ b/bitwarden_license/bit-web/src/app/secrets-manager/settings/porting/sm-export.component.ts @@ -76,17 +76,13 @@ export class SecretsManagerExportComponent implements OnInit, OnDestroy { }; private async doExport() { - try { - const exportData = await this.secretsManagerApiService.export( - this.orgId, - this.formGroup.get("format").value - ); + const exportData = await this.secretsManagerApiService.export( + this.orgId, + this.formGroup.get("format").value + ); - await this.downloadFile(exportData, this.formGroup.get("format").value); - this.platformUtilsService.showToast("success", null, this.i18nService.t("dataExportSuccess")); - } catch (e) { - this.logService.error(e); - } + await this.downloadFile(exportData, this.formGroup.get("format").value); + this.platformUtilsService.showToast("success", null, this.i18nService.t("dataExportSuccess")); } private async downloadFile(data: string, format: string) { diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/settings/services/sm-porting-api.service.ts b/bitwarden_license/bit-web/src/app/secrets-manager/settings/services/sm-porting-api.service.ts index a2861a5ad16..6432796430c 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/settings/services/sm-porting-api.service.ts +++ b/bitwarden_license/bit-web/src/app/secrets-manager/settings/services/sm-porting-api.service.ts @@ -30,19 +30,13 @@ export class SecretsManagerPortingApiService { ) {} async export(organizationId: string, exportFormat = "json"): Promise { - let response = {}; - - try { - response = await this.apiService.send( - "GET", - "/sm/" + organizationId + "/export?format=" + exportFormat, - null, - true, - true - ); - } catch (error) { - return null; - } + const response = await this.apiService.send( + "GET", + "/sm/" + organizationId + "/export?format=" + exportFormat, + null, + true, + true + ); return JSON.stringify( await this.decryptExport(organizationId, new SecretsManagerExportResponse(response)), diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/settings/settings-routing.module.ts b/bitwarden_license/bit-web/src/app/secrets-manager/settings/settings-routing.module.ts index 6cd6249d335..325592beb33 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/settings/settings-routing.module.ts +++ b/bitwarden_license/bit-web/src/app/secrets-manager/settings/settings-routing.module.ts @@ -1,6 +1,9 @@ import { NgModule } from "@angular/core"; import { RouterModule, Routes } from "@angular/router"; +import { Organization } from "@bitwarden/common/models/domain/organization"; +import { OrganizationPermissionsGuard } from "@bitwarden/web-vault/app/organizations/guards/org-permissions.guard"; + import { SecretsManagerExportComponent } from "./porting/sm-export.component"; import { SecretsManagerImportComponent } from "./porting/sm-import.component"; @@ -8,15 +11,19 @@ const routes: Routes = [ { path: "import", component: SecretsManagerImportComponent, + canActivate: [OrganizationPermissionsGuard], data: { titleId: "importData", + organizationPermissions: (org: Organization) => org.isAdmin, }, }, { path: "export", component: SecretsManagerExportComponent, + canActivate: [OrganizationPermissionsGuard], data: { titleId: "exportData", + organizationPermissions: (org: Organization) => org.isAdmin, }, }, ];