Преглед на файлове

fix: 重写路由鉴权逻辑

lanjianrong преди 3 години
родител
ревизия
e892c4790d
променени са 2 файла, в които са добавени 7 реда и са изтрити 10 реда
  1. 4 4
      config/routes.ts
  2. 3 6
      src/access.ts

+ 4 - 4
config/routes.ts

@@ -34,8 +34,6 @@
       {
         path: '/project/management',
         name: 'management',
-        access: 'authRouteFilter',
-        validatePerm: true,
         routes: [
           {
             path: '/project/management',
@@ -43,14 +41,16 @@
           },
           {
             path: '/project/management/list',
-            name: 'list',
+            name: 'management-list',
             hideInMenu: true,
+            access: 'authRouteFilter',
             component: './Project/Management/List'
           },
           {
             path: '/project/management/:id',
-            name: 'detail',
+            name: 'management-detail',
             hideInMenu: true,
+            access: 'authRouteFilter',
             component: './Project/Management/Detail'
           }
         ]

+ 3 - 6
src/access.ts

@@ -2,18 +2,15 @@
  * @see https://umijs.org/zh-CN/plugins/plugin-access
  * */
 export default function access(initialState: { currentUser?: API.CurrentUser | undefined }) {
-  const { currentUser, permission = [] } = initialState || {}
+  const permission = initialState?.currentUser?.permission || []
   const authRouteFilter = route => {
-    if (permission.includes(`${route.name}`)) {
-      // if (route.validatePerm) {
-      //   return route
-      // }
+    if (route.name && permission.includes(route.name.match(/^(\w*)-/)?.[1] ?? route.name)) {
       return true
     }
     return false
   }
   return {
-    canAdmin: currentUser && currentUser.access === 'admin',
+    canAdmin: initialState?.currentUser?.account === 'admin',
     authRouteFilter
   }
 }