Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

38 строки
1.1 KiB

  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. providedIn: 'root'
  8. })
  9. export class RouteInterceptor {
  10. private loginSub: Subscription;
  11. private loginState: ILoginState;
  12. /**
  13. * Constructor of router service
  14. */
  15. constructor(private router: Router, private appService: AppService) {
  16. // Observe login state
  17. this.loginSub = this.appService.getLoginState$().subscribe(
  18. data => this.loginState = data);
  19. }
  20. /**
  21. * Checks if user is logged in and redirects to login page if not
  22. * @returns {boolean}
  23. */
  24. canActivate(): boolean {
  25. console.log(this.loginState);
  26. if (this.loginState === null || !this.loginState.isLoggedIn) {
  27. this.router.navigate(['./login']);
  28. console.log('no routing');
  29. return false;
  30. }
  31. console.log('routing works');
  32. return true;
  33. }
  34. }