51 changed files with 899 additions and 260 deletions
@ -0,0 +1,36 @@ |
|||
import { inject } from "@angular/core"; |
|||
import { |
|||
ActivatedRoute, |
|||
ActivatedRouteSnapshot, |
|||
CanActivateChildFn, |
|||
CanActivateFn, |
|||
Route, |
|||
Router, |
|||
RouterStateSnapshot, |
|||
} from "@angular/router"; |
|||
import { ClientAccountDTO } from "@cdk/dtos"; |
|||
import { ApiService } from "@cdk/services"; |
|||
import { NgxPermissionsService } from "ngx-permissions"; |
|||
|
|||
export const PermissionLoadGuard: CanActivateFn = async (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => { |
|||
const permissionsService = inject(NgxPermissionsService); |
|||
const api = inject(ApiService); |
|||
const auth = localStorage.getItem(api.accountKey); |
|||
|
|||
if (auth) { |
|||
try { |
|||
const authData = JSON.parse(auth) as ClientAccountDTO; |
|||
if (Array.isArray(authData.roleItems)) { |
|||
const permissionList = authData.roleItems; |
|||
const permissions = permissionList.reduce((a, c) => { |
|||
if (c.itemType === "管理端") { |
|||
return a.concat(String(c.id)); |
|||
} |
|||
return a; |
|||
}, [] as string[]); |
|||
permissionsService.loadPermissions(permissions); |
|||
} |
|||
} catch (error) {} |
|||
} |
|||
return true; |
|||
}; |
Before Width: | Height: | Size: 948 B After Width: | Height: | Size: 66 KiB |
File diff suppressed because one or more lines are too long
@ -0,0 +1,4 @@ |
|||
<div class="pt-20"> |
|||
<nz-result nzStatus="403"></nz-result> |
|||
<h2 class=" text-center">你没有此页面的访问权限。</h2> |
|||
</div> |
@ -0,0 +1,14 @@ |
|||
import { ActivatedRoute, Router } from "@angular/router"; |
|||
import { Component, OnInit } from "@angular/core"; |
|||
import { NgxPermissionsService } from "ngx-permissions"; |
|||
|
|||
@Component({ |
|||
selector: "app-forbidden", |
|||
templateUrl: "./forbidden.component.html", |
|||
styleUrls: ["./forbidden.component.less"], |
|||
}) |
|||
export class ForbiddenComponent implements OnInit { |
|||
constructor(private perm: NgxPermissionsService, private router: Router, private route: ActivatedRoute) {} |
|||
|
|||
async ngOnInit() {} |
|||
} |
@ -0,0 +1,6 @@ |
|||
<div class="mt-20"> |
|||
<nz-result nzStatus="404"></nz-result> |
|||
<h2 class="text-center"> |
|||
此页面未找到。 |
|||
</h2> |
|||
</div> |
@ -0,0 +1,10 @@ |
|||
import { Component } from '@angular/core'; |
|||
|
|||
@Component({ |
|||
selector: 'app-notfound', |
|||
templateUrl: './notfound.component.html', |
|||
styleUrls: ['./notfound.component.less'] |
|||
}) |
|||
export class NotfoundComponent { |
|||
|
|||
} |
@ -0,0 +1,36 @@ |
|||
import { inject } from "@angular/core"; |
|||
import { |
|||
ActivatedRoute, |
|||
ActivatedRouteSnapshot, |
|||
CanActivateChildFn, |
|||
CanActivateFn, |
|||
Route, |
|||
Router, |
|||
RouterStateSnapshot, |
|||
} from "@angular/router"; |
|||
import { ClientAccountDTO } from "@cdk/dtos"; |
|||
import { ApiService } from "@cdk/services"; |
|||
import { NgxPermissionsService } from "ngx-permissions"; |
|||
|
|||
export const PermissionLoadGuard: CanActivateFn = async (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => { |
|||
const permissionsService = inject(NgxPermissionsService); |
|||
const api = inject(ApiService); |
|||
const auth = localStorage.getItem(api.accountKey); |
|||
|
|||
if (auth) { |
|||
try { |
|||
const authData = JSON.parse(auth) as ClientAccountDTO; |
|||
if (Array.isArray(authData.roleItems)) { |
|||
const permissionList = authData.roleItems; |
|||
const permissions = permissionList.reduce((a, c) => { |
|||
if (c.itemType === "业务端") { |
|||
return a.concat(String(c.id)); |
|||
} |
|||
return a; |
|||
}, [] as string[]); |
|||
permissionsService.loadPermissions(permissions); |
|||
} |
|||
} catch (error) {} |
|||
} |
|||
return true; |
|||
}; |
Before Width: | Height: | Size: 948 B After Width: | Height: | Size: 66 KiB |
Loading…
Reference in new issue