import { NgModule, OnInit } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { HomeComponent } from './FE-View/home/home.component'; import { ResourcesComponent } from './FE-View/resources/resources.component'; import { IssueComponent } from './FE-View/issue/issue.component'; import { ManagerComponent } from './manager/manager.component'; import { DeveloperComponent } from './developer/developer.component'; import { ReservationComponent } from './reservation/reservation.component'; import { FirmwareEngineerComponent } from './firmware-engineer/firmware-engineer.component'; import { WorkRequestComponent } from './work-request/work-request.component'; import { ScheduleComponent } from './schedule/schedule.component'; import { AuthenticationService, AuthLevel } from './authentication.service'; import { RoleService, Roles } from './role.service'; import { DevWorkRequestComponent } from './dev-work-request/dev-work-request.component'; let routes: Routes = [ {path: '', component:HomeComponent}, {path: 'issue', component:IssueComponent}, {path: 'manager-home', component:ManagerComponent}, {path: 'developer', component:DeveloperComponent}, {path: 'reservation', component:ReservationComponent}, {path: 'schedule', component:ScheduleComponent}, {path: 'firmware-engineer', component:FirmwareEngineerComponent}, {path: 'workrq', component:WorkRequestComponent}, {path: 'dev-work-request', component:DevWorkRequestComponent} ]; @NgModule({ imports: [RouterModule.forRoot(routes, {onSameUrlNavigation: 'reload'})], exports: [RouterModule] }) export class AppRoutingModule implements OnInit { private authenticated: AuthLevel = AuthLevel.None; private roles = Roles; constructor(private roleService: RoleService, private authService: AuthenticationService) {} ngOnInit() { this.authService.status.subscribe( (status: AuthLevel) => { this.authenticated = status; }); this.roleService.currentRole.subscribe( (role: Roles) => { switch (role) { case this.roles.Manager: routes = [ {path: '', component:HomeComponent}, {path: 'issue', component:IssueComponent}, {path: 'manager-home', component:ManagerComponent}, {path: 'developer', component:DeveloperComponent}, {path: 'reservation', component:ReservationComponent}, {path: 'schedule', component:ScheduleComponent} ]; RouterModule.forRoot(routes); break; case this.roles.FW: routes = [ {path: '', component:HomeComponent}, {path: 'issue', component:IssueComponent}, {path: 'reservation', component:ReservationComponent}, {path: 'schedule', component:ScheduleComponent} ]; RouterModule.forRoot(routes); break; case this.roles.Dev: routes = [ {path: '', component:HomeComponent}, {path: 'developer', component:DeveloperComponent}, {path: 'reservation', component:ReservationComponent}, {path: 'schedule', component:ScheduleComponent} ]; RouterModule.forRoot(routes); break; case this.roles.Exec: routes = [ {path: '', component:HomeComponent}, {path: 'reservation', component:ReservationComponent}, {path: 'schedule', component:ScheduleComponent} ]; RouterModule.forRoot(routes); break; } }); } }