fixed route guard order

This commit is contained in:
Timo 2021-04-27 12:39:04 +03:00
parent 26fea48edc
commit 8d8d041fba
2 changed files with 11 additions and 24 deletions

View File

@ -1,7 +1,6 @@
import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';
import { Injectable, Injector } from '@angular/core';
import { from, Observable, of } from 'rxjs';
import { catchError, map, mergeMap, tap } from 'rxjs/operators';
import { from, of } from 'rxjs';
import { AppLoadStateService } from '../services/app-load-state.service';
@Injectable({
@ -10,9 +9,8 @@ import { AppLoadStateService } from '../services/app-load-state.service';
export class CompositeRouteGuard implements CanActivate {
constructor(protected readonly _router: Router, protected readonly _injector: Injector, private readonly _appLoadStateService: AppLoadStateService) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
this._appLoadStateService.pushLoadingEvent(true);
let compositeCanActivateObservable: Observable<boolean> = of(true);
const routeGuards = route.data.routeGuards;
@ -26,29 +24,17 @@ export class CompositeRouteGuard implements CanActivate {
if (typeof canActivateResult === 'boolean' || canActivateResult instanceof UrlTree) {
canActivateResult = of(canActivateResult);
}
const canActivatePipe: Observable<boolean> = canActivateResult.pipe(map((m) => !!m));
compositeCanActivateObservable = compositeCanActivateObservable.pipe(
mergeMap((bool) => {
if (!bool) {
return of(false);
} else {
return canActivatePipe;
}
})
);
const result = await canActivateResult.toPromise();
if (!result) {
this._appLoadStateService.pushLoadingEvent(false);
return false;
}
}
}
compositeCanActivateObservable = compositeCanActivateObservable.pipe(
tap(() => {
this._appLoadStateService.pushLoadingEvent(false);
}),
catchError(() => {
this._appLoadStateService.pushLoadingEvent(false);
return of(false);
})
);
this._appLoadStateService.pushLoadingEvent(false);
return compositeCanActivateObservable;
return true;
}
}

View File

@ -27,6 +27,7 @@ export class AuthGuard extends KeycloakAuthGuard {
idpHint: this._appConfigService.getConfig(AppConfigKey.OAUTH_IDP_HINT, null),
redirectUri: window.location.origin + this._baseHref + state.url
});
return false;
}
await this._userService.loadCurrentUser();