/*! * @license * Copyright 2019 Alfresco Software, Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { Injectable } from '@angular/core'; import { CanActivate, CanActivateChild } from '@angular/router'; import { OAuthService } from 'angular-oauth2-oidc'; import { AuthenticationService } from '../../services/authentication.service'; @Injectable() export class OIDCAuthGuard implements CanActivate, CanActivateChild { constructor( private authenticationService: AuthenticationService, private oauthService: OAuthService ) {} canActivate(): boolean { if (this.shouldBeBypassed()) { return true; } if (!this.oauthService.hasValidAccessToken()) { if (this.authenticationService.isAuthCodeFlow()) { this.oauthService.initCodeFlow(); } else { this.oauthService.initLoginFlow(); } return false; } return true; } shouldBeBypassed() { return !this.authenticationService.oidcHandlerEnabled(); } canActivateChild(): boolean { return this.canActivate(); } }