From 6602e6bc17ee5f7d882802e8435fd2de0e2a826f Mon Sep 17 00:00:00 2001
From: liudong <liudong>
Date: 星期一, 12 八月 2024 10:27:17 +0800
Subject: [PATCH] 修改系知识库配置的bug问题

---
 src/hooks/permission.ts |   44 +++++++++++++++++++++++++++++++++-----------
 1 files changed, 33 insertions(+), 11 deletions(-)

diff --git a/src/hooks/permission.ts b/src/hooks/permission.ts
index de8cdc4..7930d0e 100644
--- a/src/hooks/permission.ts
+++ b/src/hooks/permission.ts
@@ -1,24 +1,46 @@
-import { RouteLocationNormalized, RouteRecordRaw } from 'vue-router';
-import { useUserStore } from '@/store';
+import { RouteLocationNormalized, RouteRecordRaw } from "vue-router";
+import { useUserStore } from "@/store";
+import { getUserInfo, getUserResources } from "@/utils/auth";
 
 export default function usePermission() {
   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;
+      let user = getUserResources();
+      let resurces: any;
+      if (userStore.resources) {
+        resurces = userStore.resources;
+      } else {
+        if (user) {
+          resurces = JSON.parse(user);
+        }
+      }
+      if (resurces) {
+        resurces.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') {
+    findFirstPermissionRoute(_routers: any, role = "admin") {
       const cloneRouters = [..._routers];
       while (cloneRouters.length) {
         const firstElement = cloneRouters.shift();
         if (
           firstElement?.meta?.roles?.find((el: string[]) => {
-            return el.includes('*') || el.includes(role);
+            return el.includes("*") || el.includes(role);
           })
         )
           return { name: firstElement.name };
@@ -27,7 +49,7 @@
         }
       }
       return null;
-    },
+    }
     // You can add any rules you want
   };
 }

--
Gitblit v1.8.0