فهرست منبع

权限资源bug

yinbangzhong 2 سال پیش
والد
کامیت
2be0a4e7b0
5فایلهای تغییر یافته به همراه24 افزوده شده و 8 حذف شده
  1. 2 2
      src/api/authority.ts
  2. 18 6
      src/hooks/permission.ts
  3. 1 0
      src/router/guard/permission.ts
  4. 2 0
      src/store/modules/user/index.ts
  5. 1 0
      src/store/modules/user/types.ts

+ 2 - 2
src/api/authority.ts

@@ -85,8 +85,8 @@ export function UserAdd(user) {
   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) {

+ 18 - 6
src/hooks/permission.ts

@@ -5,12 +5,24 @@ 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;
+      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];

+ 1 - 0
src/router/guard/permission.ts

@@ -5,6 +5,7 @@ import usePermission from '@/hooks/permission';
 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) => {

+ 2 - 0
src/store/modules/user/index.ts

@@ -28,6 +28,7 @@ const useUserStore = defineStore('user', {
     accountId: undefined,
     certification: undefined,
     role: '',
+    resources:undefined,
   }),
 
   getters: {
@@ -70,6 +71,7 @@ const useUserStore = defineStore('user', {
           name: res.data.nickname,
           email: res.data.email,
         };
+        this.resources=res.data.resources;
         setUserInfo(JSON.stringify(userInfo));
       } catch (err) {
         clearToken();

+ 1 - 0
src/store/modules/user/types.ts

@@ -16,4 +16,5 @@ export interface UserState {
   accountId?: string;
   certification?: number;
   role: RoleType;
+  resources:any;
 }