From 2be0a4e7b031ff8dedd06f8198838fc238936830 Mon Sep 17 00:00:00 2001 From: yinbangzhong <zhongbangyin@126.com> Date: 星期一, 05 八月 2024 20:31:56 +0800 Subject: [PATCH] 权限资源bug --- src/router/guard/permission.ts | 1 + src/store/modules/user/index.ts | 2 ++ src/store/modules/user/types.ts | 1 + src/api/authority.ts | 4 ++-- src/hooks/permission.ts | 24 ++++++++++++++++++------ 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/api/authority.ts b/src/api/authority.ts index 76e14c9..64cb6ca 100644 --- a/src/api/authority.ts +++ b/src/api/authority.ts @@ -85,8 +85,8 @@ return axios.post('/base/system/user', { user }); } -export function UserDelete(userId) { - return axios.delete('/base/system/user/' + userId); +export function UserDelete(id) { + return axios.delete('/base/system/user/' + id); } export function OrganizationList(key: string) { diff --git a/src/hooks/permission.ts b/src/hooks/permission.ts index de8cdc4..916e3ff 100644 --- a/src/hooks/permission.ts +++ b/src/hooks/permission.ts @@ -5,12 +5,24 @@ const userStore = useUserStore(); return { accessRouter(route: RouteLocationNormalized | RouteRecordRaw) { - return ( - !route.meta?.requiresAuth || - !route.meta?.roles || - route.meta?.roles?.includes('*') || - route.meta?.roles?.includes(userStore.role) - ); + //閬嶅巻userStore.resource + let isok = false; + if (userStore.resources) { + userStore.resources.forEach(r => { + if ((r.menuType == 0 || r.menuType == 3) && (route.name == r.component || route.path == r.component)) { + isok = true; + } + }); + return isok; + } else { + return ( + !route.meta?.requiresAuth || + !route.meta?.roles || + route.meta?.roles?.includes("*") || + route.meta?.roles?.includes(userStore.role) + ); + } + }, findFirstPermissionRoute(_routers: any, role = 'admin') { const cloneRouters = [..._routers]; diff --git a/src/router/guard/permission.ts b/src/router/guard/permission.ts index ad3724e..c3e2efb 100644 --- a/src/router/guard/permission.ts +++ b/src/router/guard/permission.ts @@ -5,6 +5,7 @@ import { useUserStore, useAppStore } from '@/store'; import { appRoutes } from '../routes'; import { WHITE_LIST, NOT_FOUND } from '../constants'; +import { defineStore } from "pinia"; export default function setupPermissionGuard(router: Router) { router.beforeEach(async (to, from, next) => { diff --git a/src/store/modules/user/index.ts b/src/store/modules/user/index.ts index c77c21a..ca37a8b 100644 --- a/src/store/modules/user/index.ts +++ b/src/store/modules/user/index.ts @@ -28,6 +28,7 @@ accountId: undefined, certification: undefined, role: '', + resources:undefined, }), getters: { @@ -70,6 +71,7 @@ name: res.data.nickname, email: res.data.email, }; + this.resources=res.data.resources; setUserInfo(JSON.stringify(userInfo)); } catch (err) { clearToken(); diff --git a/src/store/modules/user/types.ts b/src/store/modules/user/types.ts index 75fd784..71fae3f 100644 --- a/src/store/modules/user/types.ts +++ b/src/store/modules/user/types.ts @@ -16,4 +16,5 @@ accountId?: string; certification?: number; role: RoleType; + resources:any; } -- Gitblit v1.8.0