fixed route guard order
This commit is contained in:
parent
26fea48edc
commit
8d8d041fba
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user