import {Injectable} from '@angular/core'; import { Router } from '@angular/router'; import {AppService} from '../services/app.service'; import {Subscription} from 'rxjs/index'; import {ILoginState} from '../model/virtual/login-state'; @Injectable() export class RouteInterceptor { private loginSub: Subscription; private loginState: ILoginState; /** * Constructor of router service */ constructor(private router: Router, private appService: AppService) { // Observe login state this.loginSub = this.appService.getLoginState$().subscribe( data => this.loginState = data); } /** * Checks if user is logged in and redirects to login page if not * @returns {boolean} */ canActivate(): boolean { if (this.loginState == null || !this.loginState.isLoggedIn) { this.router.navigate(['./login']); return false; } return true; } }