Browse Source

update: permission guard to find the matching url

pull/25174/head
sumeyye 6 months ago
parent
commit
074bf9de5f
  1. 19
      npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts

19
npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts

@ -10,8 +10,14 @@ import { HttpErrorResponse } from '@angular/common/http';
import { Observable, of } from 'rxjs'; import { Observable, of } from 'rxjs';
import { filter, map, switchMap, take } from 'rxjs/operators'; import { filter, map, switchMap, take } from 'rxjs/operators';
import { AuthService, IAbpGuard } from '../abstracts'; import { AuthService, IAbpGuard } from '../abstracts';
import { findRoute, getRoutePath } from '../utils/route-utils'; import { findRoute } from '../utils/route-utils';
import { RoutesService, PermissionService, HttpErrorReporterService, ConfigStateService } from '../services'; import {
RoutesService,
PermissionService,
HttpErrorReporterService,
ConfigStateService,
RouteBasedCultureUrlService,
} from '../services';
import { isPlatformServer } from '@angular/common'; import { isPlatformServer } from '@angular/common';
/** /**
* @deprecated Use `permissionGuard` *function* instead. * @deprecated Use `permissionGuard` *function* instead.
@ -26,12 +32,16 @@ export class PermissionGuard implements IAbpGuard {
protected readonly permissionService = inject(PermissionService); protected readonly permissionService = inject(PermissionService);
protected readonly httpErrorReporter = inject(HttpErrorReporterService); protected readonly httpErrorReporter = inject(HttpErrorReporterService);
protected readonly configStateService = inject(ConfigStateService); protected readonly configStateService = inject(ConfigStateService);
protected readonly routeCultureUrl = inject(RouteBasedCultureUrlService);
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> { canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> {
let { requiredPolicy } = route.data || {}; let { requiredPolicy } = route.data || {};
if (!requiredPolicy) { if (!requiredPolicy) {
const routeFound = findRoute(this.routesService, getRoutePath(this.router, state.url)); const routeFound = findRoute(
this.routesService,
this.routeCultureUrl.getRoutePathForMatching(this.router, state.url),
);
requiredPolicy = routeFound?.requiredPolicy; requiredPolicy = routeFound?.requiredPolicy;
} }
@ -70,12 +80,13 @@ export const permissionGuard: CanActivateFn = (
const permissionService = inject(PermissionService); const permissionService = inject(PermissionService);
const httpErrorReporter = inject(HttpErrorReporterService); const httpErrorReporter = inject(HttpErrorReporterService);
const configStateService = inject(ConfigStateService); const configStateService = inject(ConfigStateService);
const routeCultureUrl = inject(RouteBasedCultureUrlService);
const platformId = inject(PLATFORM_ID); const platformId = inject(PLATFORM_ID);
let { requiredPolicy } = route.data || {}; let { requiredPolicy } = route.data || {};
if (!requiredPolicy) { if (!requiredPolicy) {
const routeFound = findRoute(routesService, getRoutePath(router, state.url)); const routeFound = findRoute(routesService, routeCultureUrl.getRoutePathForMatching(router, state.url));
requiredPolicy = routeFound?.requiredPolicy; requiredPolicy = routeFound?.requiredPolicy;
} }

Loading…
Cancel
Save