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