Project

General

Profile

1 55964 argiro.kok
2
import {of as observableOf, Observable} from 'rxjs';
3
4
import {map, filter, mergeMap} from 'rxjs/operators';
5 50169 argiro.kok
import { Injectable } from '@angular/core';
6 54906 k.triantaf
import {
7
  Router,
8
  CanActivate,
9
  CanLoad,
10
  ActivatedRouteSnapshot,
11
  RouterStateSnapshot,
12 54915 k.triantaf
  Route, Data
13 54906 k.triantaf
} from '@angular/router';
14 55964 argiro.kok
15 50169 argiro.kok
import { ConfigurationService } from '../utils/configuration/configuration.service';
16 51331 argiro.kok
import { EnvironmentSpecificService} from '../utils/properties/environment-specific.service';
17 51826 argiro.kok
import {ConnectHelper} from '../connect/connectHelper';
18 50169 argiro.kok
19
@Injectable()
20 55964 argiro.kok
export class IsRouteEnabled implements CanActivate {
21 50169 argiro.kok
22 54913 k.triantaf
  constructor(private router: Router,
23
              private config: ConfigurationService,
24 54915 k.triantaf
              private propertiesService: EnvironmentSpecificService) {}
25 50169 argiro.kok
26 54915 k.triantaf
  check(data: Data, community: string, path: string): Observable<boolean> | boolean {
27
    const customRedirect = data['redirect'];
28 56179 konstantin
29 54913 k.triantaf
      const redirect = customRedirect ? customRedirect : '/error';
30 55964 argiro.kok
      const obs = this.propertiesService.subscribeEnvironment().pipe(map(res => {
31 56236 konstantin
        let communityDomain = null;
32 56330 konstantin
        //if (!community) {
33 56236 konstantin
          communityDomain  = ConnectHelper.getCommunityFromDomain(res.domain);
34 56330 konstantin
        //}
35 56236 konstantin
        if(communityDomain) {
36
          community = communityDomain;
37
        } else if (!community && data['community']) { // for openaire or connect
38 56179 konstantin
          community = data['community'];
39
        }
40 55997 argiro.kok
       return  res;
41
      }),mergeMap(prop => {
42 56630 k.triantaf
        if (!community) {
43
          community = prop.adminToolsCommunity;
44 54948 argiro.kok
        }
45 55997 argiro.kok
        return this.config.isPageEnabled(prop, community, '/' + path.split('?')[0].substring(1));
46 55964 argiro.kok
      }),);
47
      obs.pipe(filter(enabled => !enabled))
48 54913 k.triantaf
          .subscribe(() => this.router.navigate([redirect], {queryParams: {'page': path}}));
49 54906 k.triantaf
      return obs;
50
  }
51
52 50169 argiro.kok
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
53 54915 k.triantaf
    return this.check(route.data, route.queryParams['communityId'], state.url);
54 54906 k.triantaf
  }
55 50169 argiro.kok
}