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