From 34bf21ee6540f1043f590496080e817ade4abc0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Mon, 16 May 2022 22:14:50 +0300 Subject: [PATCH] RED-3800: Fixed dossier template guards --- .../src/app/guards/dashboard-guard.service.ts | 4 +-- .../guards/dossier-template-exists.guard.ts | 25 ++++++++++++++----- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/apps/red-ui/src/app/guards/dashboard-guard.service.ts b/apps/red-ui/src/app/guards/dashboard-guard.service.ts index a9eec07ae..56c22ad95 100644 --- a/apps/red-ui/src/app/guards/dashboard-guard.service.ts +++ b/apps/red-ui/src/app/guards/dashboard-guard.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { ActivatedRouteSnapshot, CanActivate } from '@angular/router'; +import { CanActivate } from '@angular/router'; import { firstValueFrom } from 'rxjs'; import { DashboardStatsService } from '@services/dossier-templates/dashboard-stats.service'; @@ -7,7 +7,7 @@ import { DashboardStatsService } from '@services/dossier-templates/dashboard-sta export class DashboardGuard implements CanActivate { constructor(private readonly _dashboardStatsService: DashboardStatsService) {} - async canActivate(route: ActivatedRouteSnapshot): Promise { + async canActivate(): Promise { await firstValueFrom(this._dashboardStatsService.loadAll()); return true; } diff --git a/apps/red-ui/src/app/guards/dossier-template-exists.guard.ts b/apps/red-ui/src/app/guards/dossier-template-exists.guard.ts index 4099bc313..16213455f 100644 --- a/apps/red-ui/src/app/guards/dossier-template-exists.guard.ts +++ b/apps/red-ui/src/app/guards/dossier-template-exists.guard.ts @@ -2,19 +2,32 @@ import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot, CanActivate, Router } from '@angular/router'; import { DOSSIER_TEMPLATE_ID } from '@red/domain'; import { DashboardStatsService } from '@services/dossier-templates/dashboard-stats.service'; +import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; @Injectable({ providedIn: 'root' }) export class DossierTemplateExistsGuard implements CanActivate { - constructor(private readonly _dashboardStatsService: DashboardStatsService, private readonly _router: Router) {} + constructor( + private readonly _dashboardStatsService: DashboardStatsService, + private readonly _dossierTemplatesService: DossierTemplatesService, + private readonly _router: Router, + ) {} async canActivate(route: ActivatedRouteSnapshot): Promise { const dossierTemplateId: string = route.paramMap.get(DOSSIER_TEMPLATE_ID); const dossiersListView = !route.pathFromRoot.find(r => r.routeConfig?.path === 'admin'); - const dossierTemplateStats = this._dashboardStatsService.find(dossierTemplateId); - if (!dossierTemplateStats || (dossiersListView && dossierTemplateStats.isEmpty)) { - const routerPath = dossiersListView ? [''] : ['main', 'admin', 'dossier-templates']; - await this._router.navigate(routerPath); - return false; + + if (dossiersListView) { + const dossierTemplateStats = this._dashboardStatsService.find(dossierTemplateId); + if (!dossierTemplateStats || (dossiersListView && dossierTemplateStats.isEmpty)) { + await this._router.navigate(['']); + return false; + } + } else { + const dossierTemplate = this._dossierTemplatesService.find(dossierTemplateId); + if (!dossierTemplate) { + await this._router.navigate(['main', 'admin', 'dossier-templates']); + return false; + } } return true;