VICE / Client / src / app / app-routing.module.ts
app-routing.module.ts
Raw
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;
      }
    });
  }
}