RED-3800: Fixed dossier template guards
This commit is contained in:
parent
33d8d00717
commit
34bf21ee65
@ -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<boolean> {
|
||||
async canActivate(): Promise<boolean> {
|
||||
await firstValueFrom(this._dashboardStatsService.loadAll());
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -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<boolean> {
|
||||
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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user