Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 
 

33 Zeilen
958 B

  1. import {Injectable} from '@angular/core';
  2. import { Router } from '@angular/router';
  3. import {AppService} from '../services/app.service';
  4. import {Subscription} from 'rxjs/index';
  5. import {ILoginState} from '../model/virtual/login-state';
  6. @Injectable()
  7. export class RouteInterceptor {
  8. private loginSub: Subscription;
  9. private loginState: ILoginState;
  10. /**
  11. * Constructor of router service
  12. */
  13. constructor(private router: Router, private appService: AppService) {
  14. // Observe login state
  15. this.loginSub = this.appService.getLoginState$().subscribe(
  16. data => this.loginState = data);
  17. }
  18. /**
  19. * Checks if user is logged in and redirects to login page if not
  20. * @returns {boolean}
  21. */
  22. canActivate(): boolean {
  23. if (this.loginState == null || !this.loginState.isLoggedIn) {
  24. this.router.navigate(['./login']);
  25. return false;
  26. }
  27. return true;
  28. }
  29. }