import { Routes } from '@angular/router'; import { ShellComponent } from '@shared/layout/shell/shell.component'; import { authGuard, capabilityGuard } from '@auth/auth.guard'; import { flushPendingGuard } from '@shared/application/pending-saves'; export const routes: Routes = [ { path: '', component: ShellComponent, // persistent header/footer; only children swap children: [ { path: '', pathMatch: 'full', redirectTo: 'login' }, { path: 'login', loadComponent: () => import('@auth/ui/login.page').then((m) => m.LoginPage), }, { path: 'dashboard', canActivate: [authGuard], loadComponent: () => import('@registratie/ui/dashboard.page').then((m) => m.DashboardPage), }, { path: 'registratie', canActivate: [authGuard], loadComponent: () => import('@registratie/ui/registration-detail.page').then((m) => m.RegistrationDetailPage), }, { path: 'aanvraag/:id', canActivate: [authGuard], loadComponent: () => import('@registratie/ui/aanvraag-detail.page').then((m) => m.AanvraagDetailPage), }, { path: 'registreren', canActivate: [authGuard], // Autosave wizard: flush the pending debounced draft before leaving (pending-saves.ts). canDeactivate: [flushPendingGuard], loadComponent: () => import('@registratie/ui/registratie.page').then((m) => m.RegistratiePage), }, { path: 'herregistratie', canActivate: [authGuard], canDeactivate: [flushPendingGuard], loadComponent: () => import('@herregistratie/ui/herregistratie.page').then((m) => m.HerregistratiePage), }, { path: 'intake', canActivate: [authGuard], canDeactivate: [flushPendingGuard], loadComponent: () => import('@herregistratie/ui/intake.page').then((m) => m.IntakePage), }, { path: 'brief', canActivate: [authGuard], canDeactivate: [flushPendingGuard], loadComponent: () => import('@brief/ui/brief.page').then((m) => m.BriefPage), }, { path: 'brief/huisstijl', // Admin-only org-template editor (WP-26): capabilityGuard denies-by-default // unless GET /me resolved `orgtemplate:edit` (Admin role). Backend re-enforces // via the OrgAdmin gate — the guard just avoids loading a page that would 403. canActivate: [capabilityGuard('orgtemplate:edit')], canDeactivate: [flushPendingGuard], loadComponent: () => import('@brief/ui/org-template.page').then((m) => m.OrgTemplatePage), }, { path: 'beheer/stamdata', // Admin-only stamdata maintenance editor (ADR-0004): capabilityGuard denies-by-default // unless GET /me resolved `stamdata:edit` (Admin role). Backend re-enforces via the // StamdataAdmin gate — the guard just avoids loading a page that would 403. canActivate: [capabilityGuard('stamdata:edit')], loadComponent: () => import('@beheer/ui/stamdata.page').then((m) => m.StamdataPage), }, { path: 'concepts', loadComponent: () => import('./showcase/concepts.page').then((m) => m.ConceptsPage), }, { path: '**', redirectTo: 'login' }, ], }, ];