edit
This commit is contained in:
@ -1,9 +1,10 @@
|
||||
import { NgModule, Optional, SkipSelf } from '@angular/core';
|
||||
import { EATokenGuard } from './guards/token.guard';
|
||||
|
||||
import { throwIfAlreadyLoaded } from './module-import-guard';
|
||||
|
||||
@NgModule({
|
||||
providers: []
|
||||
providers: [EATokenGuard]
|
||||
})
|
||||
export class CoreModule {
|
||||
constructor(@Optional() @SkipSelf() parentModule: CoreModule) {
|
||||
|
||||
40
src/app/core/guards/token.guard.ts
Normal file
40
src/app/core/guards/token.guard.ts
Normal file
@ -0,0 +1,40 @@
|
||||
import { Inject, Injectable, Injector } from '@angular/core';
|
||||
import { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router';
|
||||
import { sysConf } from '@conf/sys.conf';
|
||||
import { CoreService } from '@core';
|
||||
import { ACLGuard, ACLService } from '@delon/acl';
|
||||
import { EAUserService } from '@shared';
|
||||
import { Observable, of } from 'rxjs';
|
||||
|
||||
@Injectable()
|
||||
export class EATokenGuard extends ACLGuard {
|
||||
constructor(srv: ACLService, router: Router, private eaUserSrv: CoreService, private router2: Router, private inject: Injector) {
|
||||
super(srv, router, inject);
|
||||
}
|
||||
|
||||
canActivate(route: ActivatedRouteSnapshot, _state: RouterStateSnapshot | null): Observable<boolean> {
|
||||
const canOpen = this.eaUserSrv.loginStatus;
|
||||
if (!canOpen) {
|
||||
this.router2.navigate([sysConf.login_url], {
|
||||
queryParams: {
|
||||
returnUrl: _state?.url
|
||||
}
|
||||
});
|
||||
return of(!canOpen);
|
||||
}
|
||||
return super.canActivate(route, _state);
|
||||
}
|
||||
|
||||
canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
|
||||
const canOpen = this.eaUserSrv.loginStatus;
|
||||
if (!canOpen) {
|
||||
this.router2.navigate([sysConf.login_url], {
|
||||
queryParams: {
|
||||
returnUrl: state?.url
|
||||
}
|
||||
});
|
||||
return of(!canOpen);
|
||||
}
|
||||
return super.canActivateChild(childRoute, state);
|
||||
}
|
||||
}
|
||||
@ -5,3 +5,5 @@ export * from './net/business.interceptor';
|
||||
// Services
|
||||
export * from './core.service';
|
||||
export * from './startup/startup.service';
|
||||
|
||||
export * from './guards/token.guard';
|
||||
|
||||
@ -36,9 +36,9 @@ export class StartupService {
|
||||
let data;
|
||||
if (this.coreSrv.loginStatus) {
|
||||
// 本地菜单
|
||||
// data = this.loadMockData();
|
||||
data = this.loadMockData();
|
||||
// 远程菜单
|
||||
data = this.loadRemoteData();
|
||||
// data = this.loadRemoteData();
|
||||
} else {
|
||||
data = this.loadMockData();
|
||||
}
|
||||
@ -94,9 +94,7 @@ export class StartupService {
|
||||
const appData = this.httpClient.get(`assets/mocks/app-data.json`).pipe(map((res: any) => res.app));
|
||||
|
||||
// 用户数据
|
||||
const userData = this.coreSrv.loginStatus
|
||||
? this.httpClient.post(this.coreSrv.$api_get_current_user_info, {}).pipe(map((res: any) => res.data))
|
||||
: this.httpClient.get('assets/mocks/user-data.json').pipe(map((res: any) => res.user));
|
||||
const userData = this.httpClient.get('assets/mocks/user-data.json').pipe(map((res: any) => res.user));
|
||||
|
||||
// 菜单数据
|
||||
const menuData = this.httpClient.get('assets/mocks/menu-data.json').pipe(map((res: any) => res.menu));
|
||||
|
||||
Reference in New Issue
Block a user