import { SubscriptionsModule } from './components/views/subscriptions/subscriptions.module'; import { FAS_DEFAULT_ROUTING_PATHS } from './shared/const/fas-default-settings.const'; import { SideBarComponent } from './components/layout/side-bar/side-bar.component'; import { StatisticModule } from './components/views/statistics/statistic.module'; import { TopBarComponent } from './components/layout/top-bar/top-bar.component'; import { OperatorsModule } from './components/views/operators/operators.module'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { MessagesModule } from './components/views/messages/messages.module'; import { FAS_LIB_CONFIG } from './shared/tokens/fas-lib-config.token'; import { FasAccessGuard } from './core/guards/fas-access-guard.guard'; import { UsersModule } from './components/views/users/users.module'; import { Route, RouterModule, Routes } from '@angular/router'; import { FASAdminComponent } from './fas-admin.component'; import { FASAdminService } from './fas-admin.service'; import { Inject, NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { IFASAdminConfigInitializer, } from './shared/models/fas-admin-models'; const routes: Routes = [ { path: '', component: FASAdminComponent, children: [], }, ]; @NgModule({ declarations: [FASAdminComponent, TopBarComponent, SideBarComponent], imports: [ RouterModule.forChild(routes), BrowserAnimationsModule, SubscriptionsModule, OperatorsModule, StatisticModule, MessagesModule, CommonModule, UsersModule, ] }) export class FASAdminModule { constructor( @Inject(FAS_LIB_CONFIG) private configData: IFASAdminConfigInitializer, private fasAdminService: FASAdminService ) { // Initialize the configuration in the service this.fasAdminService.setFasAdminConfigValue(this.configData); // Configure routes const routesPerConfig = this.generateRoutes(this.configData); routes[0].children = routesPerConfig; } private generateRoutes(configData: IFASAdminConfigInitializer): Route[] { if (this.configData.accessRules === null) { return [] } else { const routesPerConfigData = [...FAS_DEFAULT_ROUTING_PATHS, ...(configData.customRoutes || [])]; const updatedRoutes = routesPerConfigData.map((route:Route) => { return { ...route, canActivate: [FasAccessGuard] } }) return updatedRoutes } } }