|
|
@ -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; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|