File tree Expand file tree Collapse file tree 1 file changed +31
-1
lines changed Expand file tree Collapse file tree 1 file changed +31
-1
lines changed Original file line number Diff line number Diff line change @@ -37,6 +37,35 @@ function hasRole(roles, route) {
37
37
}
38
38
}
39
39
40
+ /**
41
+ * 简易深拷贝
42
+ * @param target
43
+ * @returns {Object }
44
+ */
45
+ function deepClone ( target ) {
46
+ let result
47
+ if ( typeof target === 'object' ) {
48
+ if ( Array . isArray ( target ) ) {
49
+ result = [ ]
50
+ for ( const i in target ) {
51
+ result . push ( deepClone ( target [ i ] ) )
52
+ }
53
+ } else if ( target === null ) {
54
+ result = null
55
+ } else if ( target . constructor === RegExp ) {
56
+ result = target
57
+ } else {
58
+ result = { }
59
+ for ( const i in target ) {
60
+ result [ i ] = deepClone ( target [ i ] )
61
+ }
62
+ }
63
+ } else {
64
+ result = target
65
+ }
66
+ return result
67
+ }
68
+
40
69
function filterAsyncRouter ( routerMap , roles ) {
41
70
const accessedRouters = routerMap . filter ( route => {
42
71
if ( hasPermission ( roles . permissionList , route ) ) {
@@ -65,7 +94,8 @@ const permission = {
65
94
GenerateRoutes ( { commit } , data ) {
66
95
return new Promise ( resolve => {
67
96
const { roles } = data
68
- const accessedRouters = filterAsyncRouter ( asyncRouterMap , roles )
97
+ const routerMap = deepClone ( asyncRouterMap )
98
+ const accessedRouters = filterAsyncRouter ( routerMap , roles )
69
99
commit ( 'SET_ROUTERS' , accessedRouters )
70
100
resolve ( )
71
101
} )
You can’t perform that action at this time.
0 commit comments