kn-cli 1.0.114 → 1.0.116
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/templates/template_admin/public/src/menuConfig/auth.jsx +92 -0
- package/templates/template_admin/public/src/menuConfig/dashboard.jsx +25 -0
- package/templates/template_admin/public/src/menuConfig/dna.jsx +76 -0
- package/templates/template_admin/public/src/menuConfig/index.jsx +17 -0
- package/templates/template_admin/public/src/provider/menu.jsx +2 -1
- package/templates/template_admin/public/src/route.jsx +30 -2
- package/templates/template_admin/public/src/utils/menu.js +33 -0
- package/templates/template_admin/public/src/menuConfig.jsx +0 -188
package/package.json
CHANGED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {LoadComponent,UpdateAuth} from '@/utils/menu';
|
|
3
|
+
|
|
4
|
+
// @ts-ignore
|
|
5
|
+
import MenuIcon from '@/components/menuIcon';
|
|
6
|
+
|
|
7
|
+
import PageTemplate from '@/pages/pageTemplate';
|
|
8
|
+
|
|
9
|
+
const AuthUser = React.lazy(() => import('@/pages/auth/user'));
|
|
10
|
+
const AuthUserCreate = React.lazy(() => import('@/pages/auth/user/create'));
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @type {RouteMenuItem}
|
|
15
|
+
*/
|
|
16
|
+
const _AUTH={
|
|
17
|
+
name:'控制室',
|
|
18
|
+
url:'/auth',
|
|
19
|
+
msgCount:12,
|
|
20
|
+
primaryId:'auth',
|
|
21
|
+
auth:['auth1'],
|
|
22
|
+
children:[
|
|
23
|
+
{
|
|
24
|
+
name: '用户',
|
|
25
|
+
component:<AuthUser />,
|
|
26
|
+
icon:<MenuIcon name='icon-user'/>,
|
|
27
|
+
url: '/auth/user',
|
|
28
|
+
auth:true,
|
|
29
|
+
primaryId:'authUser',
|
|
30
|
+
msgCount:0,
|
|
31
|
+
children:[
|
|
32
|
+
{
|
|
33
|
+
component:<AuthUserCreate />,
|
|
34
|
+
name:'新建用户',
|
|
35
|
+
url:'/auth/user/create',
|
|
36
|
+
hideMenu:true
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: '部门',
|
|
42
|
+
icon:<MenuIcon name='icon-dep'/>,
|
|
43
|
+
url: '/auth/dep',
|
|
44
|
+
auth:true,
|
|
45
|
+
children:[
|
|
46
|
+
{
|
|
47
|
+
component:<PageTemplate name='部门列表' />,
|
|
48
|
+
name:'部门列表',
|
|
49
|
+
url:'/auth/dep/list',
|
|
50
|
+
auth:true,
|
|
51
|
+
children:[
|
|
52
|
+
{
|
|
53
|
+
component:<PageTemplate name='部门详情' />,
|
|
54
|
+
name:'部门详情',
|
|
55
|
+
routeTemplate:'/auth/dep/detail/:id',
|
|
56
|
+
hideMenu:true,
|
|
57
|
+
auth:true,
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: '角色',
|
|
66
|
+
component:<PageTemplate name='角色' />,
|
|
67
|
+
icon:<MenuIcon name='icon-role'/>,
|
|
68
|
+
url: '/auth/role',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: '操作记录',
|
|
72
|
+
component:<PageTemplate name='操作记录' />,
|
|
73
|
+
icon:<MenuIcon name='icon-log'/>,
|
|
74
|
+
url: '/auth/log',
|
|
75
|
+
msgCount:12,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: '登录日志',
|
|
79
|
+
component:<PageTemplate name='登录日志' />,
|
|
80
|
+
icon:<MenuIcon name='icon-loginlog'/>,
|
|
81
|
+
url: '/auth/loginLog',
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* @type {RouteMenuItem}
|
|
89
|
+
*/
|
|
90
|
+
const AUTH=UpdateAuth(_AUTH);
|
|
91
|
+
|
|
92
|
+
export default AUTH;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {LoadComponent,UpdateAuth} from '@/utils/menu';
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @type {RouteMenuItem}
|
|
10
|
+
*/
|
|
11
|
+
const _DASHBOARD={
|
|
12
|
+
name:'仪表盘',
|
|
13
|
+
url:'/dashboard',
|
|
14
|
+
auth:['auth2'],
|
|
15
|
+
component:LoadComponent(React.lazy(() => import('@/pages/home'))),
|
|
16
|
+
children:[
|
|
17
|
+
],
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @type {RouteMenuItem}
|
|
22
|
+
*/
|
|
23
|
+
const DASHBOARD=UpdateAuth(_DASHBOARD);
|
|
24
|
+
|
|
25
|
+
export default DASHBOARD;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {LoadComponent,UpdateAuth} from '@/utils/menu';
|
|
3
|
+
|
|
4
|
+
// @ts-ignore
|
|
5
|
+
import MenuIcon from '@/components/menuIcon';
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
const Page2 = React.lazy(() => import('@/pages/demo/page2'));
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @type {RouteMenuItem}
|
|
13
|
+
*/
|
|
14
|
+
const _DNA={
|
|
15
|
+
name:'基因库',
|
|
16
|
+
url:'/dna',
|
|
17
|
+
auth:['auth1'],
|
|
18
|
+
children:[
|
|
19
|
+
{
|
|
20
|
+
name: '父菜单1',
|
|
21
|
+
icon:<MenuIcon name='icon-dep'/>,
|
|
22
|
+
url: '/dna/parent',
|
|
23
|
+
auth:['auth2'],
|
|
24
|
+
children:[
|
|
25
|
+
{
|
|
26
|
+
component:LoadComponent(React.lazy(() => import('@/pages/demo/page1'))),
|
|
27
|
+
name:'子菜单1-1',
|
|
28
|
+
auth:['auth3'],
|
|
29
|
+
url:'/dna/parent/child1'
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: '父菜单2',
|
|
35
|
+
icon:<MenuIcon name='icon-dep'/>,
|
|
36
|
+
url: '/dna/parent2',
|
|
37
|
+
auth:true,
|
|
38
|
+
children:[
|
|
39
|
+
{
|
|
40
|
+
component:<Page2 name='父菜单2-子菜单1'/>,
|
|
41
|
+
name:'子菜单2-1',
|
|
42
|
+
auth:true,
|
|
43
|
+
url:'/dna/parent2/child1'
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: '父菜单3',
|
|
49
|
+
icon:<MenuIcon name='icon-dep'/>,
|
|
50
|
+
url: '/dna/parent3',
|
|
51
|
+
auth:true,
|
|
52
|
+
children:[
|
|
53
|
+
{
|
|
54
|
+
name:'子菜单3-1',
|
|
55
|
+
auth:true,
|
|
56
|
+
url:'/dna/parent3/child1',
|
|
57
|
+
children:[
|
|
58
|
+
{
|
|
59
|
+
component:<Page2 name='父菜单3-子菜单1-子子菜单1'/>,
|
|
60
|
+
name:'子菜单3-1-1',
|
|
61
|
+
auth:true,
|
|
62
|
+
url:'/dna/parent3/child1/child1'
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @type {RouteMenuItem}
|
|
73
|
+
*/
|
|
74
|
+
const DNA=UpdateAuth(_DNA);
|
|
75
|
+
|
|
76
|
+
export default DNA;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
// @ts-ignore
|
|
5
|
+
import DNA from './dna';
|
|
6
|
+
// @ts-ignore
|
|
7
|
+
import AUTH from './auth';
|
|
8
|
+
// @ts-ignore
|
|
9
|
+
import DASHBOARD from './dashboard';
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @type {RouteMenuItem[]}
|
|
16
|
+
*/
|
|
17
|
+
export default [DASHBOARD, DNA, AUTH]
|
|
@@ -21,6 +21,7 @@ import { AUTH_ROUTE_DEBUG_OPEN } from '@/config';
|
|
|
21
21
|
* @property {(params:MenuConfig[])=>void} setMenuConfig - 设置菜单属性
|
|
22
22
|
* @property {()=>Promise<void>} reload - 重新加载渲染菜单
|
|
23
23
|
* @property {(pathname:string,auths:string[])=>any} getMenuNavigateTo - 获取菜单跳转匹配结果
|
|
24
|
+
* @property {(menu:RouteMenuItem,userAuth:string[])=>RouteMenuItem} findHasAuthMenu - 寻找有权限的菜单
|
|
24
25
|
*
|
|
25
26
|
*/
|
|
26
27
|
|
|
@@ -141,7 +142,7 @@ const useProvider=() =>{
|
|
|
141
142
|
getLeftMenu(app.auths);
|
|
142
143
|
},[routeMenu.source,curLocation,app.auths])
|
|
143
144
|
|
|
144
|
-
return {leftMenu,topMenu,reload,selectMenus,findMenuData,setMenuConfig,getMenuNavigateTo}
|
|
145
|
+
return {leftMenu,topMenu,reload,selectMenus,findMenuData,setMenuConfig,getMenuNavigateTo,findHasAuthMenu}
|
|
145
146
|
}
|
|
146
147
|
|
|
147
148
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import React,{Suspense} from 'react';
|
|
1
|
+
import React,{Suspense, useEffect} from 'react';
|
|
2
2
|
// @ts-ignore
|
|
3
|
-
import { HashRouter, Routes, Route, Navigate } from 'react-router-dom';
|
|
3
|
+
import { HashRouter, Routes, Route, Navigate, useNavigate } from 'react-router-dom';
|
|
4
4
|
// @ts-ignore
|
|
5
5
|
import { LayoutBasic, AbsoluteLayout } from '@/components/layout';
|
|
6
6
|
import ErrorBoundary from '@/components/error';
|
|
@@ -16,6 +16,7 @@ import TopMenu from '@/components/topMenu';
|
|
|
16
16
|
import ProviderMenu from '@/provider/menu';
|
|
17
17
|
import Login from '@/pages/login';
|
|
18
18
|
import menuConfig from './menuConfig';
|
|
19
|
+
import ProviderApp from '@/provider/app';
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
|
|
@@ -24,6 +25,30 @@ const Page404 = React.lazy(() => import('@/pages/error/404'));
|
|
|
24
25
|
const Page503 = React.lazy(() => import('@/pages/error/503'));
|
|
25
26
|
|
|
26
27
|
|
|
28
|
+
|
|
29
|
+
const GetIndexRoute=()=>{
|
|
30
|
+
const app = ProviderApp.useContainer();
|
|
31
|
+
const menu = ProviderMenu.useContainer();
|
|
32
|
+
const nav = useNavigate();
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
const findRoute=()=>{
|
|
36
|
+
for(let _menu of menu.topMenu){
|
|
37
|
+
let req = menu.findHasAuthMenu(_menu,app.auths);
|
|
38
|
+
if(req){
|
|
39
|
+
debugger;
|
|
40
|
+
nav(req.url);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
useEffect(()=>{
|
|
46
|
+
findRoute();
|
|
47
|
+
},[])
|
|
48
|
+
return <></>
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
27
52
|
const renderMenuConfig=(menu)=>{
|
|
28
53
|
let req=[];
|
|
29
54
|
if(!menu.noAutoMatch){
|
|
@@ -71,6 +96,9 @@ export const RouteList = (
|
|
|
71
96
|
}
|
|
72
97
|
>
|
|
73
98
|
|
|
99
|
+
{/* 首页 */}
|
|
100
|
+
<Route path='/' element={<GetIndexRoute />} />
|
|
101
|
+
|
|
74
102
|
{
|
|
75
103
|
menuConfig.map(menu=>renderMenuConfig(menu))
|
|
76
104
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export const LoadComponent=(lazyComponent)=>{
|
|
5
|
+
return React.createElement(lazyComponent)
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* 自动计算菜单权限,使父级菜单权限包含所有子菜单的权限
|
|
10
|
+
* @param {RouteMenuItem} menu
|
|
11
|
+
* @returns {RouteMenuItem}
|
|
12
|
+
*/
|
|
13
|
+
export const UpdateAuth=(menu)=>{
|
|
14
|
+
if(menu.children){
|
|
15
|
+
|
|
16
|
+
let auths= menu.children.map(childMenu=>{
|
|
17
|
+
let _childMenu = UpdateAuth(childMenu);
|
|
18
|
+
if( Array.isArray(_childMenu.auth) ){
|
|
19
|
+
return [..._childMenu.auth];
|
|
20
|
+
}
|
|
21
|
+
return [];
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
if( Array.isArray(menu.auth) ){
|
|
25
|
+
|
|
26
|
+
menu.auth = [...menu.auth,...auths.flat()];
|
|
27
|
+
// @ts-ignore
|
|
28
|
+
menu.auth = [...new Set(menu.auth)];// 去重
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return menu;
|
|
32
|
+
}
|
|
33
|
+
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import React from 'react';
|
|
3
|
-
// @ts-ignore
|
|
4
|
-
import MenuIcon from '@/components/menuIcon';
|
|
5
|
-
import PageTemplate from './pages/pageTemplate';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const Page1 = React.lazy(() => import('@/pages/demo/page1'));
|
|
9
|
-
const Page2 = React.lazy(() => import('@/pages/demo/page2'));
|
|
10
|
-
const Page3 = React.lazy(() => import('@/pages/demo/page3'));
|
|
11
|
-
|
|
12
|
-
const AuthUser = React.lazy(() => import('@/pages/auth/user'));
|
|
13
|
-
const AuthUserCreate = React.lazy(() => import('@/pages/auth/user/create'));
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* 自动计算菜单权限,使父级菜单权限包含所有子菜单的权限
|
|
18
|
-
* @param {RouteMenuItem} menu
|
|
19
|
-
* @returns {RouteMenuItem}
|
|
20
|
-
*/
|
|
21
|
-
export const UpdateAuth=(menu)=>{
|
|
22
|
-
if(menu.children){
|
|
23
|
-
|
|
24
|
-
let auths= menu.children.map(childMenu=>{
|
|
25
|
-
let _childMenu = UpdateAuth(childMenu);
|
|
26
|
-
if( Array.isArray(_childMenu.auth) ){
|
|
27
|
-
return [..._childMenu.auth];
|
|
28
|
-
}
|
|
29
|
-
return [];
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
if( Array.isArray(menu.auth) ){
|
|
33
|
-
|
|
34
|
-
menu.auth = [...menu.auth,...auths.flat()];
|
|
35
|
-
// @ts-ignore
|
|
36
|
-
menu.auth = [...new Set(menu.auth)];// 去重
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
return menu;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export const LoadComponent=(lazyComponent)=>{
|
|
43
|
-
return React.createElement(lazyComponent)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* @type {RouteMenuItem}
|
|
48
|
-
*/
|
|
49
|
-
const DASHBOARD={
|
|
50
|
-
name:'仪表盘',
|
|
51
|
-
url:'/',
|
|
52
|
-
component:LoadComponent(React.lazy(() => import('@/pages/home'))),
|
|
53
|
-
children:[
|
|
54
|
-
],
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* @type {RouteMenuItem}
|
|
58
|
-
*/
|
|
59
|
-
const DNA={
|
|
60
|
-
name:'基因库',
|
|
61
|
-
url:'/dna',
|
|
62
|
-
auth:true,
|
|
63
|
-
children:[
|
|
64
|
-
{
|
|
65
|
-
name: '父菜单1',
|
|
66
|
-
icon:<MenuIcon name='icon-dep'/>,
|
|
67
|
-
url: '/dna/parent',
|
|
68
|
-
auth:true,
|
|
69
|
-
children:[
|
|
70
|
-
{
|
|
71
|
-
component:<Page1 name='父菜单1-子菜单1'/>,
|
|
72
|
-
name:'子菜单1-1',
|
|
73
|
-
auth:true,
|
|
74
|
-
url:'/dna/parent/child1'
|
|
75
|
-
}
|
|
76
|
-
]
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
name: '父菜单2',
|
|
80
|
-
icon:<MenuIcon name='icon-dep'/>,
|
|
81
|
-
url: '/dna/parent2',
|
|
82
|
-
auth:true,
|
|
83
|
-
children:[
|
|
84
|
-
{
|
|
85
|
-
component:<Page2 name='父菜单2-子菜单1'/>,
|
|
86
|
-
name:'子菜单2-1',
|
|
87
|
-
auth:true,
|
|
88
|
-
url:'/dna/parent2/child1'
|
|
89
|
-
}
|
|
90
|
-
]
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
name: '父菜单3',
|
|
94
|
-
icon:<MenuIcon name='icon-dep'/>,
|
|
95
|
-
url: '/dna/parent3',
|
|
96
|
-
auth:true,
|
|
97
|
-
children:[
|
|
98
|
-
{
|
|
99
|
-
name:'子菜单3-1',
|
|
100
|
-
auth:true,
|
|
101
|
-
url:'/dna/parent3/child1',
|
|
102
|
-
children:[
|
|
103
|
-
{
|
|
104
|
-
component:<Page2 name='父菜单3-子菜单1-子子菜单1'/>,
|
|
105
|
-
name:'子菜单3-1-1',
|
|
106
|
-
auth:true,
|
|
107
|
-
url:'/dna/parent3/child1/child1'
|
|
108
|
-
}
|
|
109
|
-
]
|
|
110
|
-
}
|
|
111
|
-
]
|
|
112
|
-
},
|
|
113
|
-
],
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* @type {RouteMenuItem}
|
|
117
|
-
*/
|
|
118
|
-
const AUTH={
|
|
119
|
-
name:'控制室',
|
|
120
|
-
url:'/auth',
|
|
121
|
-
msgCount:12,
|
|
122
|
-
primaryId:'auth',
|
|
123
|
-
children:[
|
|
124
|
-
{
|
|
125
|
-
name: '用户',
|
|
126
|
-
component:<AuthUser />,
|
|
127
|
-
icon:<MenuIcon name='icon-user'/>,
|
|
128
|
-
url: '/auth/user',
|
|
129
|
-
auth:true,
|
|
130
|
-
primaryId:'authUser',
|
|
131
|
-
msgCount:0,
|
|
132
|
-
children:[
|
|
133
|
-
{
|
|
134
|
-
component:<AuthUserCreate />,
|
|
135
|
-
name:'新建用户',
|
|
136
|
-
url:'/auth/user/create',
|
|
137
|
-
hideMenu:true
|
|
138
|
-
}
|
|
139
|
-
]
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
name: '部门',
|
|
143
|
-
icon:<MenuIcon name='icon-dep'/>,
|
|
144
|
-
url: '/auth/dep',
|
|
145
|
-
auth:true,
|
|
146
|
-
children:[
|
|
147
|
-
{
|
|
148
|
-
component:<PageTemplate name='部门列表' />,
|
|
149
|
-
name:'部门列表',
|
|
150
|
-
url:'/auth/dep/list',
|
|
151
|
-
auth:true,
|
|
152
|
-
children:[
|
|
153
|
-
{
|
|
154
|
-
component:<PageTemplate name='部门详情' />,
|
|
155
|
-
name:'部门详情',
|
|
156
|
-
routeTemplate:'/auth/dep/detail/:id',
|
|
157
|
-
hideMenu:true,
|
|
158
|
-
auth:true,
|
|
159
|
-
}
|
|
160
|
-
]
|
|
161
|
-
},
|
|
162
|
-
|
|
163
|
-
]
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
name: '角色',
|
|
167
|
-
component:<PageTemplate name='角色' />,
|
|
168
|
-
icon:<MenuIcon name='icon-role'/>,
|
|
169
|
-
url: '/auth/role',
|
|
170
|
-
},
|
|
171
|
-
{
|
|
172
|
-
name: '操作记录',
|
|
173
|
-
component:<PageTemplate name='操作记录' />,
|
|
174
|
-
icon:<MenuIcon name='icon-log'/>,
|
|
175
|
-
url: '/auth/log',
|
|
176
|
-
msgCount:12,
|
|
177
|
-
},
|
|
178
|
-
{
|
|
179
|
-
name: '登录日志',
|
|
180
|
-
component:<PageTemplate name='登录日志' />,
|
|
181
|
-
icon:<MenuIcon name='icon-loginlog'/>,
|
|
182
|
-
url: '/auth/loginLog',
|
|
183
|
-
},
|
|
184
|
-
],
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
export default [UpdateAuth(DASHBOARD), UpdateAuth(DNA), UpdateAuth(AUTH) ];
|