From ad40d508e838d0de9bc8ac25346f92531c4d2baf Mon Sep 17 00:00:00 2001 From: cd-bitwarden <106776772+cd-bitwarden@users.noreply.github.com> Date: Wed, 26 Apr 2023 15:43:06 -0400 Subject: [PATCH] Inital PR for checking if the Link is still valid/the user still has access and rerouting them if not to the projects list (#5283) --- .../projects/project/project.component.ts | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/projects/project/project.component.ts b/bitwarden_license/bit-web/src/app/secrets-manager/projects/project/project.component.ts index 900402440bb..92892c35736 100644 --- a/bitwarden_license/bit-web/src/app/secrets-manager/projects/project/project.component.ts +++ b/bitwarden_license/bit-web/src/app/secrets-manager/projects/project/project.component.ts @@ -1,6 +1,15 @@ import { Component, OnDestroy, OnInit } from "@angular/core"; -import { ActivatedRoute } from "@angular/router"; -import { combineLatest, filter, Observable, startWith, Subject, switchMap, takeUntil } from "rxjs"; +import { ActivatedRoute, Router } from "@angular/router"; +import { + catchError, + combineLatest, + filter, + Observable, + startWith, + Subject, + switchMap, + takeUntil, +} from "rxjs"; import { DialogService } from "@bitwarden/components"; @@ -27,7 +36,8 @@ export class ProjectComponent implements OnInit, OnDestroy { constructor( private route: ActivatedRoute, private projectService: ProjectService, - private dialogService: DialogService + private dialogService: DialogService, + private router: Router ) {} ngOnInit(): void { @@ -40,7 +50,8 @@ export class ProjectComponent implements OnInit, OnDestroy { this.project$ = combineLatest([this.route.params, currentProjectEdited]).pipe( switchMap(([params, _]) => { return this.projectService.getByProjectId(params.projectId); - }) + }), + catchError(async () => this.handleError()) ); this.route.params.pipe(takeUntil(this.destroy$)).subscribe((params) => { @@ -49,6 +60,12 @@ export class ProjectComponent implements OnInit, OnDestroy { }); } + handleError = () => { + const projectsListUrl = `/sm/${this.organizationId}/projects/`; + this.router.navigate([projectsListUrl]); + return new ProjectPermissionDetailsView(); + }; + ngOnDestroy(): void { this.destroy$.next(); this.destroy$.complete();