Prechádzať zdrojové kódy

Revert "close page permission control (#3842)" (#3844)

This reverts commit e8c8f8b90da85737bf36e47e2d875dcce53b9396.
陈帅 6 rokov pred
rodič
commit
e6fe497964
2 zmenil súbory, kde vykonal 38 pridanie a 2 odobranie
  1. 4 1
      config/router.config.js
  2. 34 1
      src/app.js

+ 4 - 1
config/router.config.js

@@ -21,9 +21,10 @@ export default [
   {
     path: '/',
     component: '../layouts/BasicLayout',
+    Routes: ['src/pages/Authorized'],
     routes: [
       // dashboard
-      { path: '/', redirect: '/dashboard/analysis' },
+      { path: '/', redirect: '/dashboard/analysis', authority: ['admin', 'user'] },
       {
         path: '/dashboard',
         name: 'dashboard',
@@ -87,6 +88,7 @@ export default [
           {
             path: '/form/advanced-form',
             name: 'advancedform',
+            authority: ['admin'],
             component: './Forms/AdvancedForm',
           },
         ],
@@ -160,6 +162,7 @@ export default [
           {
             path: '/profile/advanced',
             name: 'advanced',
+            authority: ['admin'],
             component: './Profile/AdvancedProfile',
           },
         ],

+ 34 - 1
src/app.js

@@ -1,3 +1,5 @@
+import fetch from 'dva/fetch';
+
 export const dva = {
   config: {
     onError(err) {
@@ -6,6 +8,37 @@ export const dva = {
   },
 };
 
+let authRoutes = {};
+
+function ergodicRoutes(routes, authKey, authority) {
+  routes.forEach(element => {
+    if (element.path === authKey) {
+      if (!element.authority) element.authority = []; // eslint-disable-line
+      Object.assign(element.authority, authority || []);
+    } else if (element.routes) {
+      ergodicRoutes(element.routes, authKey, authority);
+    }
+    return element;
+  });
+}
+
+export function patchRoutes(routes) {
+  Object.keys(authRoutes).map(authKey =>
+    ergodicRoutes(routes, authKey, authRoutes[authKey].authority)
+  );
+  window.g_routes = routes;
+}
+
 export function render(oldRender) {
-  oldRender();
+  fetch('/api/auth_routes')
+    .then(res => res.json())
+    .then(
+      ret => {
+        authRoutes = ret;
+        oldRender();
+      },
+      () => {
+        oldRender();
+      }
+    );
 }