red-ui/apps/red-ui/src/app/app-routing.module.ts
2021-10-02 17:16:06 +03:00

75 lines
2.4 KiB
TypeScript

import { AuthErrorComponent } from '@components/auth-error/auth-error.component';
import { AuthGuard } from './modules/auth/auth.guard';
import { CompositeRouteGuard } from '@iqser/common-ui';
import { RedRoleGuard } from './modules/auth/red-role.guard';
import { BaseScreenComponent } from '@components/base-screen/base-screen.component';
import { RouteReuseStrategy, RouterModule } from '@angular/router';
import { NgModule } from '@angular/core';
import { DownloadsListScreenComponent } from '@components/downloads-list-screen/downloads-list-screen.component';
import { AppStateGuard } from '@state/app-state.guard';
import { UserProfileScreenComponent } from '@components/user-profile/user-profile-screen.component';
import { CustomRouteReuseStrategy } from '@utils/custom-route-reuse.strategy';
const routes = [
{
path: '',
redirectTo: 'main/dossiers',
pathMatch: 'full'
},
{
path: 'auth-error',
component: AuthErrorComponent,
canActivate: [AuthGuard]
},
{
path: 'main/my-profile',
component: BaseScreenComponent,
children: [
{
path: '',
component: UserProfileScreenComponent
}
],
canActivate: [CompositeRouteGuard],
data: {
routeGuards: [AuthGuard, RedRoleGuard, AppStateGuard]
}
},
{
path: 'main/admin',
component: BaseScreenComponent,
loadChildren: () => import('./modules/admin/admin.module').then(m => m.AdminModule)
},
{
path: 'main/dossiers',
component: BaseScreenComponent,
loadChildren: () => import('./modules/dossier/dossiers.module').then(m => m.DossiersModule)
},
{
path: 'main/downloads',
component: BaseScreenComponent,
children: [
{
path: '',
component: DownloadsListScreenComponent
}
],
canActivate: [CompositeRouteGuard],
data: {
routeGuards: [AuthGuard, RedRoleGuard, AppStateGuard]
}
},
{
path: '**',
redirectTo: 'main/dossiers',
pathMatch: 'full'
}
];
@NgModule({
imports: [RouterModule.forRoot(routes, { scrollPositionRestoration: 'enabled' })],
providers: [{ provide: RouteReuseStrategy, useClass: CustomRouteReuseStrategy }],
exports: [RouterModule]
})
export class AppRoutingModule {}