Project

General

Profile

1
import {Injectable} from '@angular/core';
2
import {ActivatedRouteSnapshot, CanActivate, CanLoad, Route, Router, RouterStateSnapshot} from '@angular/router';
3
import {Observable} from 'rxjs/Observable';
4
import {Session} from './utils/helper.class';
5
import {LoginErrorCodes} from './utils/guardHelper.class';
6

    
7
@Injectable()
8
export class LoginGuard implements CanActivate, CanLoad {
9

    
10
  constructor(private router: Router) {
11
  }
12

    
13
  check(path: string): boolean {
14
    let loggedIn = false;
15
    if (Session.isLoggedIn()) {
16
      loggedIn = true;
17
    }
18
    if (!loggedIn) {
19
      this.router.navigate(['/user-info'], {queryParams: {'errorCode': LoginErrorCodes.NOT_LOGIN, path}});
20
    }
21
    return loggedIn;
22
  }
23

    
24
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
25
    return this.check(state.url);
26
  }
27

    
28
  canLoad(route: Route): Observable<boolean> | Promise<boolean> | boolean {
29
    return this.check('/' + route.path);
30
  }
31
}
(4-4/9)