Project

General

Profile

1
import {take, tap} from 'rxjs/operators';
2
import {Injectable} from '@angular/core';
3
import {Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';
4
import {Observable} from 'rxjs';
5
import {LoginErrorCodes} from '../../login/utils/guardHelper.class';
6
import {SubscribeService} from "../../utils/subscribe/subscribe.service";
7
import {properties} from "../../../../environments/environment";
8
import {ConnectHelper} from "../connectHelper";
9

    
10
@Injectable()
11
export class ConnectSubscriberGuard implements CanActivate {
12
  constructor(private router: Router,
13
              private subscribeService: SubscribeService) {
14
  }
15

    
16
  check(community: string, path: string): Observable<boolean> {
17
    let errorCode = LoginErrorCodes.NOT_SUBSCRIBER;
18
    let communityDomain = ConnectHelper.getCommunityFromDomain(properties.domain);
19
    if (communityDomain) {
20
      community = communityDomain;
21
    }
22
    return this.subscribeService.isSubscribedToCommunity(properties, community).pipe(take(1), tap(subscribed =>{
23
      if(!subscribed){
24
        this.router.navigate(['/user-info'], {
25
          queryParams: {
26
            'errorCode': errorCode,
27
            'redirectUrl': path
28
          }
29
        });
30
      }
31
    }));
32
  }
33
  
34
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
35
    return this.check(route.queryParams['communityId'], state.url);
36
  }
37
  
38
}
(6-6/8)