diff --git a/npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts b/npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts index d4e4b80ea9..ca69eb127d 100644 --- a/npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts +++ b/npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts @@ -3,6 +3,8 @@ import { ActivatedRouteSnapshot, CanActivate } from '@angular/router'; import { Store } from '@ngxs/store'; import { Observable } from 'rxjs'; import { ConfigState } from '../states'; +import { tap } from 'rxjs/operators'; +import { RestOccurError } from '../actions'; @Injectable({ providedIn: 'root', @@ -12,6 +14,12 @@ export class PermissionGuard implements CanActivate { canActivate({ data }: ActivatedRouteSnapshot): Observable { const resource = data.requiredPolicy as string; - return this.store.select(ConfigState.getGrantedPolicy(resource)); + return this.store.select(ConfigState.getGrantedPolicy(resource)).pipe( + tap(access => { + if (!access) { + this.store.dispatch(new RestOccurError({ status: 403 })); + } + }), + ); } } diff --git a/npm/ng-packs/packages/theme-shared/src/lib/handlers/error.handler.ts b/npm/ng-packs/packages/theme-shared/src/lib/handlers/error.handler.ts index 2604bcdaab..0baff0da8f 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/handlers/error.handler.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/handlers/error.handler.ts @@ -53,7 +53,7 @@ export class ErrorHandler { const { payload: err = {} as HttpErrorResponse | any } = res; const body = snq(() => (err as HttpErrorResponse).error.error, DEFAULTS.defaultError.message); - if (err.headers.get('_AbpErrorFormat')) { + if (err instanceof HttpErrorResponse && err.headers.get('_AbpErrorFormat')) { const confirmation$ = this.showError(null, null, body); if (err.status === 401) {