From b70ec77328216120db9a6283882d1d44547f7c77 Mon Sep 17 00:00:00 2001 From: Willem Dantuma Date: Mon, 11 May 2020 20:39:00 +0200 Subject: [PATCH] Fix authguard --- .../src/fm/services/auth-guard.service.ts | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/projects/common/src/fm/services/auth-guard.service.ts b/projects/common/src/fm/services/auth-guard.service.ts index dd4720e..2722c0b 100644 --- a/projects/common/src/fm/services/auth-guard.service.ts +++ b/projects/common/src/fm/services/auth-guard.service.ts @@ -5,6 +5,7 @@ import { RouterStateSnapshot } from '@angular/router'; + import { Store } from '@ngrx/store'; import { OAuthService } from 'angular-oauth2-oidc'; @@ -20,40 +21,41 @@ export class AuthGuard implements CanActivate, CanLoad, CanActivateChild { constructor(private oauthService: OAuthService, private router: Router, private store: Store ) { } - canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise { let url: string = state.url; return this.checkLogin(url); } - canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise { let url: string = state.url; return this.checkLogin(url); } - canLoad(route: Route): boolean { + canLoad(route: Route): Promise { return this.checkLogin(route.path); } - checkLogin(url: string): boolean { - if (!this.oauthService.hasValidAccessToken()) { - if(this.oauthService.getRefreshToken() != null ) { - this.oauthService.refreshToken().then(() => { - this.store.dispatch(new appCommonActions.InitUser()); - return true; - }).catch(() => { + checkLogin(url: string): Promise { + return new Promise((resolve) => { + if (!this.oauthService.hasValidAccessToken()) { + if(this.oauthService.getRefreshToken() != null ) { + this.oauthService.refreshToken().then(() => { + this.store.dispatch(new appCommonActions.InitUser()); + resolve(true); + }).catch(() => { + resolve(false); + this.oauthService.initCodeFlow(url); + }) + } else { + resolve(false); this.oauthService.initCodeFlow(url); - return false; - } - ) + } } else { - this.oauthService.initCodeFlow(url); - return false; - } - } else { - this.store.dispatch(new appCommonActions.InitUser()); - return true; - } + this.store.dispatch(new appCommonActions.InitUser()); + return(true); + } + }); } }