Project

General

Profile

1 55964 argiro.kok
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 51526 argiro.kok
import {Session} from './utils/helper.class';
13 53612 konstantin
import {LoginErrorCodes} from './utils/guardHelper.class';
14 51526 argiro.kok
15
@Injectable()
16 55964 argiro.kok
export class ClaimsCuratorGuard implements CanActivate {
17 51526 argiro.kok
18 54912 k.triantaf
  constructor(private router: Router) {
19
  }
20 51526 argiro.kok
21 54912 k.triantaf
  check(path: string): boolean {
22 54649 k.triantaf
    let loggedIn = false;
23
    let isAuthorized = false;
24
    let errorCode = LoginErrorCodes.NOT_LOGIN;
25 51526 argiro.kok
26 54912 k.triantaf
    if (Session.isLoggedIn()) {
27 51526 argiro.kok
      loggedIn = true;
28 54912 k.triantaf
      if (Session.isClaimsCurator() || Session.isPortalAdministrator()) {
29 54649 k.triantaf
        isAuthorized = true;
30 54912 k.triantaf
      } else {
31 54649 k.triantaf
        errorCode = LoginErrorCodes.NOT_ADMIN;
32
      }
33 51526 argiro.kok
    }
34 54912 k.triantaf
    if (!loggedIn || !isAuthorized) {
35 55964 argiro.kok
      this.router.navigate(['/user-info'], {
36
        queryParams: {
37
          'errorCode': errorCode,
38
          'redirectUrl': path
39
        }
40
      });
41 51526 argiro.kok
    }
42 54649 k.triantaf
    return loggedIn && isAuthorized;
43 51526 argiro.kok
  }
44 54649 k.triantaf
45
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
46 54665 k.triantaf
    return this.check(state.url);
47 54649 k.triantaf
  }
48
49 51526 argiro.kok
}