import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router'; import { OidcSecurityService } from 'angular-auth-oidc-client'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; @Injectable({ providedIn: 'root' }) export class AuthorizationGuard implements CanActivate { constructor(private oidcSecurityService: OidcSecurityService, private router: Router) {} canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable { // return checkAuth() again should be possible return this.oidcSecurityService.isAuthenticated$.pipe( map((isAuthorized: boolean) => { console.log('AuthorizationGuard, canActivate isAuthorized: ' + isAuthorized); if (!isAuthorized) { this.router.navigate(['/unauthorized']); return false; } return true; }) ); } }