1 import { Injectable } from '@angular/core';
2 import { ActivatedRouteSnapshot, CanActivate, CanActivateChild } from '@angular/router';
4 import { map } from 'rxjs/operators';
6 import { DashboardNotFoundError } from '~/app/core/error/error';
7 import { FeatureTogglesMap, FeatureTogglesService } from './feature-toggles.service';
12 export class FeatureTogglesGuardService implements CanActivate, CanActivateChild {
13 constructor(private featureToggles: FeatureTogglesService) {}
15 canActivate(route: ActivatedRouteSnapshot) {
16 return this.featureToggles.get().pipe(
17 map((enabledFeatures: FeatureTogglesMap) => {
18 if (enabledFeatures[route.routeConfig.path] === false) {
19 throw new DashboardNotFoundError();
27 canActivateChild(route: ActivatedRouteSnapshot) {
28 return this.canActivate(route.parent);