diff --git a/apps/red-ui/src/app/app-routing.module.ts b/apps/red-ui/src/app/app-routing.module.ts index b13a5055e..d2f0a48ee 100644 --- a/apps/red-ui/src/app/app-routing.module.ts +++ b/apps/red-ui/src/app/app-routing.module.ts @@ -8,6 +8,7 @@ import { NgModule } from '@angular/core'; import { DownloadsListScreenComponent } from '@components/downloads-list-screen/downloads-list-screen.component'; import { AppStateGuard } from '@state/app-state.guard'; import { DossiersGuard } from '@guards/dossiers.guard'; +import { DossierTemplatesGuard } from '@guards/dossier-templates.guard'; const routes: Routes = [ { @@ -36,7 +37,7 @@ const routes: Routes = [ loadChildren: () => import('./modules/dossier/dossiers.module').then(m => m.DossiersModule), canActivate: [CompositeRouteGuard], data: { - routeGuards: [AuthGuard, RedRoleGuard, AppStateGuard, DossiersGuard], + routeGuards: [AuthGuard, RedRoleGuard, DossierTemplatesGuard, AppStateGuard, DossiersGuard], requiredRoles: ['RED_USER', 'RED_MANAGER'], }, }, diff --git a/apps/red-ui/src/app/guards/dossier-templates.guard.ts b/apps/red-ui/src/app/guards/dossier-templates.guard.ts new file mode 100644 index 000000000..4d0995f44 --- /dev/null +++ b/apps/red-ui/src/app/guards/dossier-templates.guard.ts @@ -0,0 +1,18 @@ +import { Injectable } from '@angular/core'; +import { CanActivate } from '@angular/router'; +import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; +import { firstValueFrom } from 'rxjs'; +import { DictionaryService } from '@shared/services/dictionary.service'; + +@Injectable({ providedIn: 'root' }) +export class DossierTemplatesGuard implements CanActivate { + constructor( + private readonly _dossierTemplatesService: DossierTemplatesService, + private readonly _dictionaryService: DictionaryService, + ) {} + + async canActivate(): Promise { + await firstValueFrom(this._dossierTemplatesService.loadAll()); + return true; + } +} diff --git a/apps/red-ui/src/app/guards/dossiers.guard.ts b/apps/red-ui/src/app/guards/dossiers.guard.ts index 66a37f509..7f056bf71 100644 --- a/apps/red-ui/src/app/guards/dossiers.guard.ts +++ b/apps/red-ui/src/app/guards/dossiers.guard.ts @@ -1,16 +1,11 @@ import { Injectable } from '@angular/core'; -import { CanActivate, Router } from '@angular/router'; +import { CanActivate } from '@angular/router'; import { DossiersService } from '@services/entity-services/dossiers.service'; -import { TranslateService } from '@ngx-translate/core'; import { firstValueFrom } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class DossiersGuard implements CanActivate { - constructor( - private readonly _dossiersService: DossiersService, - private readonly _translateService: TranslateService, - private readonly _router: Router, - ) {} + constructor(private readonly _dossiersService: DossiersService) {} async canActivate(): Promise { await firstValueFrom(this._dossiersService.loadAll()); diff --git a/apps/red-ui/src/app/modules/admin/admin-routing.module.ts b/apps/red-ui/src/app/modules/admin/admin-routing.module.ts index 33215e35e..c4bdb3cf3 100644 --- a/apps/red-ui/src/app/modules/admin/admin-routing.module.ts +++ b/apps/red-ui/src/app/modules/admin/admin-routing.module.ts @@ -18,6 +18,7 @@ import { TrashScreenComponent } from './screens/trash/trash-screen.component'; import { GeneralConfigScreenComponent } from './screens/general-config/general-config-screen.component'; import { BaseAdminScreenComponent } from './base-admin-screen/base-admin-screen.component'; import { BaseDossierTemplateScreenComponent } from './base-dossier-templates-screen/base-dossier-template-screen.component'; +import { DossierTemplatesGuard } from '../../guards/dossier-templates.guard'; const routes: Routes = [ { path: '', redirectTo: 'dossier-templates', pathMatch: 'full' }, @@ -129,8 +130,9 @@ const routes: Routes = [ ], }, ], + canActivate: [CompositeRouteGuard], data: { - routeGuards: [AuthGuard, RedRoleGuard, AppStateGuard], + routeGuards: [AuthGuard, RedRoleGuard, DossierTemplatesGuard, AppStateGuard], requiredRoles: ['RED_MANAGER', 'RED_ADMIN'], }, }, diff --git a/apps/red-ui/src/app/modules/admin/components/dossier-template-breadcrumbs/dossier-template-breadcrumbs.component.html b/apps/red-ui/src/app/modules/admin/components/dossier-template-breadcrumbs/dossier-template-breadcrumbs.component.html index 0edc6758e..b7c2079b4 100644 --- a/apps/red-ui/src/app/modules/admin/components/dossier-template-breadcrumbs/dossier-template-breadcrumbs.component.html +++ b/apps/red-ui/src/app/modules/admin/components/dossier-template-breadcrumbs/dossier-template-breadcrumbs.component.html @@ -1,14 +1,14 @@