296 lines
12 KiB
TypeScript
296 lines
12 KiB
TypeScript
import { CompositeRouteGuard, IqserPermissionsGuard, IqserRoutes } from '@iqser/common-ui';
|
|
import { RedRoleGuard } from '@users/red-role.guard';
|
|
import { EntitiesListingScreenComponent } from './screens/entities-listing/entities-listing-screen.component';
|
|
import { PendingChangesGuard } from '@guards/can-deactivate.guard';
|
|
import { DefaultColorsScreenComponent } from './screens/default-colors/default-colors-screen.component';
|
|
import { UserListingScreenComponent } from './screens/user-listing/user-listing-screen.component';
|
|
import { DigitalSignatureScreenComponent } from './screens/digital-signature/digital-signature-screen.component';
|
|
import { AuditScreenComponent } from './screens/audit/audit-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';
|
|
import { DOSSIER_TEMPLATE_ID, ENTITY_TYPE } from '@red/domain';
|
|
import { templateExistsWhenEnteringAdmin } from '@guards/dossier-template-exists.guard';
|
|
import { entityExistsGuard } from '@guards/entity-exists-guard.service';
|
|
import { BaseEntityScreenComponent } from './base-entity-screen/base-entity-screen.component';
|
|
import { PermissionsGuard } from '@guards/permissions-guard';
|
|
import { Roles } from '@users/roles';
|
|
import { IqserAuthGuard } from '@iqser/common-ui/lib/users';
|
|
import { AdminDialogService } from './services/admin-dialog.service';
|
|
import { AuditService } from './services/audit.service';
|
|
import { DigitalSignatureService } from './services/digital-signature.service';
|
|
import { RulesService } from './services/rules.service';
|
|
import { SmtpConfigService } from './services/smtp-config.service';
|
|
|
|
const entityRoutes: IqserRoutes = [
|
|
{
|
|
path: '',
|
|
component: BaseDossierTemplateScreenComponent,
|
|
children: [{ path: '', component: EntitiesListingScreenComponent }],
|
|
canActivate: [CompositeRouteGuard],
|
|
data: {
|
|
routeGuards: [IqserAuthGuard, RedRoleGuard],
|
|
},
|
|
},
|
|
{
|
|
path: `:${ENTITY_TYPE}`,
|
|
component: BaseEntityScreenComponent,
|
|
canActivate: [CompositeRouteGuard, entityExistsGuard()],
|
|
data: {
|
|
routeGuards: [IqserAuthGuard, RedRoleGuard],
|
|
},
|
|
loadChildren: () => import('./screens/entities/entities.routes'),
|
|
},
|
|
];
|
|
|
|
const dossierTemplateIdRoutes: IqserRoutes = [
|
|
{ path: '', redirectTo: 'info', pathMatch: 'full' },
|
|
{
|
|
path: 'info',
|
|
component: BaseDossierTemplateScreenComponent,
|
|
children: [
|
|
{
|
|
path: '',
|
|
canDeactivate: [PendingChangesGuard],
|
|
loadComponent: () => import('./screens/info/dossier-template-info-screen/dossier-template-info-screen.component'),
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: 'entities',
|
|
children: entityRoutes,
|
|
},
|
|
{
|
|
path: '',
|
|
component: BaseDossierTemplateScreenComponent,
|
|
children: [
|
|
{
|
|
path: 'entity-rules',
|
|
loadComponent: () => import('./screens/rules/rules-screen/rules-screen.component'),
|
|
canActivate: [CompositeRouteGuard, IqserPermissionsGuard],
|
|
canDeactivate: [PendingChangesGuard],
|
|
data: {
|
|
routeGuards: [IqserAuthGuard, RedRoleGuard],
|
|
permissions: {
|
|
allow: [Roles.rules.read],
|
|
redirectTo: 'info',
|
|
},
|
|
type: 'ENTITY',
|
|
},
|
|
providers: [RulesService],
|
|
},
|
|
{
|
|
path: 'component-rules',
|
|
loadComponent: () => import('./screens/rules/rules-screen/rules-screen.component'),
|
|
canActivate: [CompositeRouteGuard, IqserPermissionsGuard],
|
|
canDeactivate: [PendingChangesGuard],
|
|
data: {
|
|
routeGuards: [IqserAuthGuard, RedRoleGuard],
|
|
permissions: {
|
|
allow: [Roles.rules.read],
|
|
redirectTo: 'info',
|
|
},
|
|
type: 'COMPONENT',
|
|
},
|
|
providers: [RulesService],
|
|
},
|
|
{
|
|
path: 'component-mappings',
|
|
loadComponent: () => import('./screens/component-mappings/component-mappings-screen.component'),
|
|
canActivate: [CompositeRouteGuard],
|
|
data: {
|
|
routeGuards: [IqserAuthGuard, RedRoleGuard],
|
|
},
|
|
},
|
|
{
|
|
path: 'components',
|
|
loadComponent: () => import('./screens/component-definitions/component-definitions.component'),
|
|
canActivate: [CompositeRouteGuard],
|
|
data: {
|
|
routeGuards: [IqserAuthGuard, RedRoleGuard],
|
|
},
|
|
},
|
|
{
|
|
path: 'file-attributes',
|
|
loadComponent: () => import('./screens/file-attributes-listing/file-attributes-listing-screen.component'),
|
|
canActivate: [CompositeRouteGuard],
|
|
data: {
|
|
routeGuards: [IqserAuthGuard, RedRoleGuard],
|
|
},
|
|
},
|
|
{
|
|
path: 'watermarks',
|
|
loadChildren: () => import('./screens/watermark/watermark.routes'),
|
|
},
|
|
{
|
|
path: 'reports',
|
|
loadComponent: () => import('./screens/reports/reports-screen/reports-screen.component'),
|
|
canActivate: [IqserAuthGuard, IqserPermissionsGuard],
|
|
data: {
|
|
permissions: {
|
|
allow: [Roles.reportTemplates.read],
|
|
redirectTo: '/auth-error',
|
|
},
|
|
},
|
|
},
|
|
{
|
|
path: 'dossier-attributes',
|
|
loadComponent: () => import('./screens/dossier-attributes-listing/dossier-attributes-listing-screen.component'),
|
|
canActivate: [CompositeRouteGuard],
|
|
data: {
|
|
routeGuards: [IqserAuthGuard, RedRoleGuard],
|
|
},
|
|
},
|
|
{
|
|
path: 'dossier-states',
|
|
loadComponent: () =>
|
|
import('./screens/dossier-states-listing/dossier-states-listing-screen/dossier-states-listing-screen.component'),
|
|
canActivate: [CompositeRouteGuard],
|
|
data: {
|
|
routeGuards: [IqserAuthGuard, RedRoleGuard],
|
|
},
|
|
},
|
|
{
|
|
path: 'default-colors',
|
|
component: DefaultColorsScreenComponent,
|
|
canActivate: [CompositeRouteGuard],
|
|
data: {
|
|
routeGuards: [IqserAuthGuard, RedRoleGuard],
|
|
},
|
|
},
|
|
{
|
|
path: 'justifications',
|
|
loadComponent: () => import('./screens/justifications/justifications-screen/justifications-screen.component'),
|
|
canActivate: [IqserPermissionsGuard],
|
|
data: {
|
|
permissions: {
|
|
allow: [Roles.legalBasis.read],
|
|
redirectTo: '/auth-error',
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
];
|
|
|
|
const dossierTemplatesRoutes: IqserRoutes = [
|
|
{
|
|
path: '',
|
|
component: BaseAdminScreenComponent,
|
|
children: [
|
|
{
|
|
path: '',
|
|
loadComponent: () =>
|
|
import(
|
|
'./screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component'
|
|
),
|
|
},
|
|
],
|
|
canActivate: [IqserAuthGuard],
|
|
},
|
|
{
|
|
path: `:${DOSSIER_TEMPLATE_ID}`,
|
|
children: dossierTemplateIdRoutes,
|
|
canActivate: [templateExistsWhenEnteringAdmin()],
|
|
},
|
|
];
|
|
|
|
export default [
|
|
{ path: '', redirectTo: 'dossier-templates', pathMatch: 'full' },
|
|
{
|
|
path: 'dossier-templates',
|
|
children: dossierTemplatesRoutes,
|
|
canActivate: [CompositeRouteGuard, IqserPermissionsGuard],
|
|
data: {
|
|
routeGuards: [IqserAuthGuard, RedRoleGuard, DossierTemplatesGuard],
|
|
requiredRoles: ['RED_MANAGER', 'RED_ADMIN'],
|
|
permissions: {
|
|
allow: [Roles.templates.read],
|
|
redirectTo: '/',
|
|
},
|
|
},
|
|
},
|
|
{
|
|
path: '',
|
|
component: BaseAdminScreenComponent,
|
|
providers: [AdminDialogService],
|
|
children: [
|
|
{
|
|
path: 'users',
|
|
component: UserListingScreenComponent,
|
|
canActivate: [CompositeRouteGuard, IqserPermissionsGuard],
|
|
data: {
|
|
routeGuards: [IqserAuthGuard, RedRoleGuard],
|
|
permissions: {
|
|
allow: [Roles.users.read, 'RED_USER_ADMIN'],
|
|
redirectTo: '/',
|
|
},
|
|
},
|
|
},
|
|
{
|
|
path: 'dossier-permissions',
|
|
loadComponent: () => import('./screens/permissions/permissions-screen/permissions-screen.component'),
|
|
canActivate: [CompositeRouteGuard, IqserPermissionsGuard],
|
|
data: {
|
|
routeGuards: [IqserAuthGuard, RedRoleGuard, PermissionsGuard],
|
|
permissionsObject: 'Dossier',
|
|
permissions: {
|
|
allow: [Roles.manageAclPermissions, 'RED_ADMIN'],
|
|
redirectTo: '/',
|
|
},
|
|
},
|
|
},
|
|
{
|
|
path: 'license-info',
|
|
loadChildren: () => import('./screens/license/license.routes'),
|
|
canActivate: [IqserAuthGuard, IqserPermissionsGuard, RedRoleGuard],
|
|
data: {
|
|
permissions: {
|
|
allow: [Roles.license.readReport, 'RED_ADMIN'],
|
|
redirectTo: '/',
|
|
},
|
|
},
|
|
},
|
|
{
|
|
path: 'digital-signature',
|
|
component: DigitalSignatureScreenComponent,
|
|
canActivate: [IqserAuthGuard, IqserPermissionsGuard, RedRoleGuard],
|
|
data: {
|
|
permissions: {
|
|
allow: [Roles.digitalSignature.read, 'RED_ADMIN'],
|
|
redirectTo: '/',
|
|
},
|
|
},
|
|
providers: [DigitalSignatureService],
|
|
},
|
|
{
|
|
path: 'audit',
|
|
component: AuditScreenComponent,
|
|
canActivate: [IqserAuthGuard, IqserPermissionsGuard, RedRoleGuard],
|
|
data: {
|
|
permissions: {
|
|
allow: [Roles.searchAudit, 'RED_ADMIN'],
|
|
redirectTo: '/',
|
|
},
|
|
},
|
|
providers: [AuditService],
|
|
},
|
|
{
|
|
path: 'general-config',
|
|
component: GeneralConfigScreenComponent,
|
|
canActivate: [CompositeRouteGuard, IqserPermissionsGuard],
|
|
canDeactivate: [PendingChangesGuard],
|
|
data: {
|
|
routeGuards: [IqserAuthGuard, RedRoleGuard],
|
|
permissions: {
|
|
allow: [Roles.generalConfiguration.read, Roles.smtp.read, 'RED_ADMIN'],
|
|
redirectTo: '/',
|
|
},
|
|
},
|
|
providers: [SmtpConfigService],
|
|
},
|
|
],
|
|
},
|
|
] satisfies IqserRoutes;
|