Как корректно реализовать роуты в зависимости от роли? На данный момент, универсальная страница это новости куда попадают все авторизованные пользователи, но пользователи с определенной ролью должны попадать в другой раздел.
cabinet.routing.ts file:
const cabinetRoutes: Routes = [
{ path: '', redirectTo: 'news', pathMatch: 'full' },
{ path: '', component: LayoutComponent, children: [
{ path: 'news', loadChildren: () => import('./modules/news/news.module').then(m => m.NewsModule) },
{ path: 'analytics', loadChildren: () => import('./modules/analytics/analytics.module').then(m => m.AnalyticsModule) },
{ path: 'declaration', loadChildren: () => import('./modules/declaration/declaration.module').then(m => m.DeclarationModule) },
{ path: 'directory', loadChildren: () => import('./modules/directory/directory.module').then(m => m.DirectoryModule) },
{ path: 'documents', loadChildren: () => import('./modules/documents/documents.module').then(m => m.DocumentsModule) },
{ path: 'reestr', loadChildren: () => import('./modules/reestr/reestr.module').then(m => m.ReestrModule) },
{ path: 'orgInformation', loadChildren: () => import('./modules/org-information/org-info.module').then(m => m.OrgInfoModule) },
{ path: 'dashboard', loadChildren: () => import('./modules/dashboard/dashboard.module').then(m => m.DashboardModule) },
{ path: 'admin', loadChildren: () => import('./modules/admin/admin.module').then(m => m.AdminModule) },
],
},
];
авторизованного пользователя перекидывает в cabinet
auth.service.ts file:
...
this.authService.sendSignedPhraseToServer(this.signedCert).subscribe( responseWithJWT => {
localStorage.setItem('someKey', responseWithJWT.token);
this.user = this.authService.getToken;
this.user = jwt_decode(this.user);
this.router.navigate(['/cabinet']);
});
app-routing module:
const appRoutes: Routes = [
{ path: '', pathMatch: 'full', redirectTo: 'cabinet' },
{
path: 'auth',
loadChildren: () => import('./modules/auth/auth.module').then(m => m.AuthModule),
},
{
path: 'cabinet',
loadChildren: () => import('./modules/cabinet/cabinet.module').then(m => m.CabinetModule),
canLoad: [AuthGuard],
},
];