import { Injectable } from '@angular/core'; import { Route, Router, RouterStateSnapshot, ActivatedRouteSnapshot, CanActivate, CanLoad, ActivatedRoute, NavigationStart, NavigationEnd, GuardsCheckEnd, } from '@angular/router'; import { filter } from 'rxjs/operators'; import { KeycloakService } from './keycloak.service'; @Injectable({ providedIn: 'root', }) export class AuthGaurdService implements CanActivate { constructor(public router: Router, private keycloak: KeycloakService, private route: ActivatedRoute) { router.events .pipe(filter(event => event instanceof GuardsCheckEnd && event.shouldActivate === false)) .subscribe((event: any) => { if (location.pathname !== '/login' && location.pathname !== '/') { localStorage.setItem('currentLocation', location.pathname); localStorage.setItem('search', location.search); } }); } canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { const url: string = state.url; if (localStorage.espToken) { return true; } else { return this.isLogin(url); } } isLogin(url: string): boolean { if (this.keycloak.keycloakConfig && this.keycloak.keycloakConfig.authenticated) { return true; } else { this.keycloak.login(); return false; } } }