This commit is contained in:
Taric Xin
2022-01-24 20:52:26 +08:00
parent 89e05507b6
commit 66177af625
3 changed files with 26 additions and 28 deletions

View File

@ -1,17 +1,5 @@
import { Inject, Injectable, Injector } from '@angular/core'; import { Inject, Injectable, Injector } from '@angular/core';
import { import { ActivatedRouteSnapshot, CanActivate, CanActivateChild, RouterStateSnapshot } from '@angular/router';
ActivatedRouteSnapshot,
CanActivate,
CanActivateChild,
CanLoad,
Route,
Router,
RouterStateSnapshot,
UrlSegment,
UrlTree
} from '@angular/router';
import { sysConf } from '@conf/sys.conf';
import { CoreService } from '@core';
import { ACLGuard, ACLService } from '@delon/acl'; import { ACLGuard, ACLService } from '@delon/acl';
import { MenuService } from '@delon/theme'; import { MenuService } from '@delon/theme';
import { BaseService, EAUserService } from '@shared'; import { BaseService, EAUserService } from '@shared';
@ -21,31 +9,43 @@ import { map } from 'rxjs/operators';
const auths = ['YUNLI-CART-SEARCH', 'YUNLI-CART-DAOC1HU', 'YUNLI-CART-DETAIL', 'YUNLI-CART-AUDIT-SEARCH']; const auths = ['YUNLI-CART-SEARCH', 'YUNLI-CART-DAOC1HU', 'YUNLI-CART-DETAIL', 'YUNLI-CART-AUDIT-SEARCH'];
@Injectable() @Injectable()
export class AuthGuard implements CanActivate, CanActivateChild, CanLoad { export class AuthGuard implements CanActivate, CanActivateChild {
constructor(private srv: ACLService, router: Router, private baseService: BaseService, private menuService: MenuService) {} constructor(private srv: ACLService, private baseService: BaseService, private menuService: MenuService) {}
canLoad(route: Route, segments: UrlSegment[]): boolean | UrlTree | Observable<boolean | UrlTree> | Promise<boolean | UrlTree> {
return true;
}
canActivate(route: ActivatedRouteSnapshot, _state: RouterStateSnapshot | null): Observable<boolean> { canActivate(route: ActivatedRouteSnapshot, _state: RouterStateSnapshot | null): Observable<boolean> {
return this.handle(); if (Object.keys(route.params)?.length > 0 || !route.routeConfig?.path) {
return this.handle();
} else {
return this.handle(_state?.url);
}
} }
canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> { canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
return this.handle(); return this.handle(this.settingRoute(childRoute.params, state.url));
} }
private handle(): Observable<boolean> { private handle(route?: string): Observable<boolean> {
// 1 if (!route) {
return this.baseService.request('/api/mdc/cuc/user/getUserDetail').pipe( return of(true);
}
console.log(route);
return this.baseService.request('/api/mdc/cuc/user/getUserDetail', { link: route }).pipe(
map(_ => { map(_ => {
console.log(this.srv.data);
this.srv.setAbility(auths); this.srv.setAbility(auths);
this.menuService.resume(); this.menuService.resume();
console.log(this.srv.data);
return true; return true;
}) })
); );
} }
private settingRoute(params: any, route: string) {
let _route = route;
for (const key of Object.keys(params)) {
if (_route.indexOf(params[key]) > -1) {
_route = _route.replace(params[key], ':id');
}
}
return _route;
}
} }

View File

@ -249,7 +249,6 @@ export class VehicleComponentsListComponent implements OnInit {
buttons: [ buttons: [
{ {
text: '查看', text: '查看',
acl: 'SUPPLY-INDEX-bulkSearch',
click: item => { click: item => {
this.router.navigate(['./detail', item.id], { relativeTo: this.ar, queryParams: { carId: item.carId } }); this.router.navigate(['./detail', item.id], { relativeTo: this.ar, queryParams: { carId: item.carId } });
// this.router.navigate(['./view', item.id], { relativeTo: this.ar, queryParams: { tenantId: item.tenantId } }); // this.router.navigate(['./view', item.id], { relativeTo: this.ar, queryParams: { tenantId: item.tenantId } });

View File

@ -18,7 +18,6 @@ import { VehicleComponentsListComponent } from './components/list/list.component
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
canLoad: [AuthGuard],
canActivate: [AuthGuard], canActivate: [AuthGuard],
canActivateChild: [AuthGuard], canActivateChild: [AuthGuard],
children: [ children: [