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({ providedIn: 'root' }) 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 { console.log(this.loginState); if (this.loginState === null || !this.loginState.isLoggedIn) { this.router.navigate(['./login']); console.log('no routing'); return false; } console.log('routing works'); return true; } }