authentication.guard.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { Injectable } from '@angular/core';
  2. import {
  3. ActivatedRouteSnapshot,
  4. CanActivate,
  5. CanActivateChild,
  6. CanDeactivate,
  7. CanLoad,
  8. Route,
  9. Router,
  10. RouterStateSnapshot,
  11. UrlSegment,
  12. UrlTree
  13. } from '@angular/router';
  14. import { Observable } from 'rxjs';
  15. import { UserService } from '../services/auth/user.service';
  16. import {RoutePath} from "../enum/route-path";
  17. @Injectable({
  18. providedIn: 'root'
  19. })
  20. export class AuthenticationGuard implements CanActivate, CanActivateChild, CanDeactivate<unknown>, CanLoad {
  21. constructor(
  22. private userService: UserService,
  23. private router: Router,
  24. )
  25. {
  26. }
  27. canActivate(
  28. route: ActivatedRouteSnapshot,
  29. state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
  30. if (this.userService.getAuthToken() !== null && this.userService.getAuthToken() !== undefined){
  31. return true;
  32. }
  33. return this.router.createUrlTree([RoutePath.LOGIN]);
  34. }
  35. canActivateChild(
  36. childRoute: ActivatedRouteSnapshot,
  37. state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
  38. return true;
  39. }
  40. canDeactivate(
  41. component: unknown,
  42. currentRoute: ActivatedRouteSnapshot,
  43. currentState: RouterStateSnapshot,
  44. nextState?: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
  45. return true;
  46. }
  47. canLoad(
  48. route: Route,
  49. segments: UrlSegment[]): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
  50. return true;
  51. }
  52. }