@@ -60,11 +60,91 @@ class Registry extends Base {
60
60
}
61
61
62
62
get configuration ( ) {
63
+ function serializeRights ( rights ) {
64
+ return rights . map ( r => {
65
+ return {
66
+ name : r . right === 'all' ? '*' : r . right . replace ( ':all' , ':*' ) ,
67
+ description : r . description
68
+ }
69
+ } )
70
+ }
71
+
72
+ const roles = this . #roles. data . roles . map ( r => {
73
+ const rights = { }
74
+ Object . keys ( r . rights ) . forEach ( name => { rights [ name ] = serializeRights ( r . rights [ name ] ) . map ( rt => rt . name ) } )
75
+ const result = {
76
+ name : r . name ,
77
+ rights
78
+ }
79
+
80
+ if ( r . description . trim ( ) . length > 0 ) {
81
+ result . description = r . description
82
+ }
83
+
84
+ return result
85
+ } )
86
+
63
87
const result = Object . assign ( { } , super . data , {
64
- resources : this . #resources. data . resources ,
65
- roles : this . #roles. data . roles ,
66
- groups : this . #groups. data . groups ,
67
- users : this . #users. data . users
88
+ resources : this . #resources. data . resources . map ( r => {
89
+ delete r . type
90
+ r . rights = serializeRights ( r . rights )
91
+
92
+ if ( ! r . description || r . description . trim ( ) . length === 0 ) {
93
+ delete r . description
94
+ }
95
+
96
+ return r
97
+ } ) ,
98
+ roles,
99
+ groups : this . #groups. data . groups . map ( g => {
100
+ delete g . memberOf
101
+ delete g . type
102
+
103
+ if ( g . description . trim ( ) . length === 0 ) {
104
+ delete g . description
105
+ }
106
+
107
+ if ( g . members . length === 0 ) {
108
+ delete g . members
109
+ } else {
110
+ g . members = g . members . map ( m => { return { name : m . name , type : m . type } } )
111
+ }
112
+
113
+ g . roles = g . roles . map ( r => r . name )
114
+ if ( g . roles . length === 0 ) {
115
+ delete g . roles
116
+ }
117
+
118
+ return g
119
+ } ) ,
120
+ users : this . #users. data . users . map ( u => {
121
+ delete u . type
122
+
123
+ if ( u . description . trim ( ) . length === 0 ) {
124
+ delete u . description
125
+ }
126
+
127
+ if ( u . roles . length === 0 ) {
128
+ delete u . roles
129
+ }
130
+
131
+ if ( u . groups . length === 0 ) {
132
+ delete u . groups
133
+ }
134
+
135
+ if ( u . rights ) {
136
+ const rights = { }
137
+ Object . keys ( u . rights ) . forEach ( name => { rights [ name ] = serializeRights ( u . rights [ name ] ) . map ( rt => rt . name ) } )
138
+
139
+ u . rights = rights
140
+
141
+ if ( Object . keys ( u . rights ) . length === 0 ) {
142
+ delete u . rights
143
+ }
144
+ }
145
+
146
+ return u
147
+ } )
68
148
} )
69
149
70
150
delete result . type
@@ -552,7 +632,7 @@ class Registry extends Base {
552
632
if ( cfg . resources ) {
553
633
for ( const resource of cfg . resources ) {
554
634
const r = this . createResource ( resource . name , resource . rights )
555
- r . description = resource . description
635
+ r . description = resource . description || ''
556
636
}
557
637
}
558
638
@@ -583,7 +663,7 @@ class Registry extends Base {
583
663
}
584
664
585
665
if ( Array . isArray ( group . roles ) ) {
586
- group . roles . forEach ( r => g . assign ( r . name ) )
666
+ group . roles . forEach ( r => g . assign ( r . name ? r . name : r ) )
587
667
}
588
668
589
669
if ( Array . isArray ( group . members ) && group . members . filter ( m => m . type === 'group' ) . length > 0 ) {
@@ -616,7 +696,11 @@ class Registry extends Base {
616
696
}
617
697
618
698
if ( Array . isArray ( user . groups ) ) {
619
- user . groups . forEach ( g => u . join ( g ) )
699
+ u . join ( ...user . groups )
700
+ }
701
+
702
+ if ( typeof user . rights === 'object' ) {
703
+ u . setRight ( user . rights )
620
704
}
621
705
}
622
706
}
0 commit comments