Project

General

Profile

1
import {Injectable} from '@angular/core';
2
import {
3
  Router,
4
  CanActivate,
5
  ActivatedRouteSnapshot,
6
  RouterStateSnapshot,
7
  CanLoad,
8
  Route,
9
  UrlSegment
10
} from '@angular/router';
11
import {Observable} from 'rxjs';
12
import {Session} from './utils/helper.class';
13
import {LoginErrorCodes} from './utils/guardHelper.class';
14

    
15
@Injectable()
16
export class ClaimsCuratorGuard implements CanActivate {
17

    
18
  constructor(private router: Router) {
19
  }
20

    
21
  check(path: string): boolean {
22
    let loggedIn = false;
23
    let isAuthorized = false;
24
    let errorCode = LoginErrorCodes.NOT_LOGIN;
25

    
26
    if (Session.isLoggedIn()) {
27
      loggedIn = true;
28
      if (Session.isClaimsCurator() || Session.isPortalAdministrator()) {
29
        isAuthorized = true;
30
      } else {
31
        errorCode = LoginErrorCodes.NOT_ADMIN;
32
      }
33
    }
34
    if (!loggedIn || !isAuthorized) {
35
      this.router.navigate(['/user-info'], {
36
        queryParams: {
37
          'errorCode': errorCode,
38
          'redirectUrl': path
39
        }
40
      });
41
    }
42
    return loggedIn && isAuthorized;
43
  }
44

    
45
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
46
    return this.check(state.url);
47
  }
48

    
49
}
(2-2/9)