import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot, CanActivate, CanActivateChild, CanDeactivate, CanLoad, Route, Router, RouterStateSnapshot, UrlSegment, UrlTree } from '@angular/router'; import { Observable } from 'rxjs'; import { UserService } from '../services/auth/user.service'; import {RoutePath} from "../enum/route-path"; @Injectable({ providedIn: 'root' }) export class AuthenticationGuard implements CanActivate, CanActivateChild, CanDeactivate, CanLoad { constructor( private userService: UserService, private router: Router, ) { } canActivate( route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree { if (this.userService.getAuthToken() !== null && this.userService.getAuthToken() !== undefined){ return true; } return this.router.createUrlTree([RoutePath.LOGIN]); } canActivateChild( childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree { return true; } canDeactivate( component: unknown, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Observable | Promise | boolean | UrlTree { return true; } canLoad( route: Route, segments: UrlSegment[]): Observable | Promise | boolean | UrlTree { return true; } }