@@ -19,6 +19,16 @@ const Permissions = class Permissions extends Component {
19
19
)
20
20
. catch ( console . error ) ;
21
21
}
22
+ groupPermissions = permissions =>
23
+ Object . entries (
24
+ Object . keys ( permissions )
25
+ . map ( key => permissions [ key ] )
26
+ . reduce ( ( acc , cur ) => {
27
+ acc [ cur . provider ] = acc [ cur . provider ] || [ ] ;
28
+ acc [ cur . provider ] . push ( cur ) ;
29
+ return acc ;
30
+ } , { } ) ,
31
+ ) ;
22
32
render ( ) {
23
33
return (
24
34
< Fragment >
@@ -37,20 +47,12 @@ const Permissions = class Permissions extends Component {
37
47
</ tr >
38
48
</ thead >
39
49
< tbody >
40
- { Object . entries (
41
- Object . keys ( this . state . permissions )
42
- . map ( key => this . state . permissions [ key ] )
43
- . reduce ( ( acc , cur ) => {
44
- acc [ cur . provider ] = acc [ cur . provider ] || [ ] ;
45
- acc [ cur . provider ] . push ( cur ) ;
46
- return acc ;
47
- } , { } ) ,
48
- ) . map (
50
+ { this . groupPermissions ( this . state . permissions ) . map (
49
51
( [ permissionGroupName , permissions ] ) =>
50
52
permissions . length && (
51
53
< Fragment key = { `fragment-${ permissionGroupName } ` } >
52
54
< tr key = { `permissionGroup-${ permissionGroupName } ` } >
53
- < td colSpan = "3" >
55
+ < td colSpan = { this . state . roles . length + 1 } >
54
56
< b > { permissionGroupName } </ b >
55
57
</ td >
56
58
</ tr >
@@ -61,15 +63,25 @@ const Permissions = class Permissions extends Component {
61
63
} `}
62
64
>
63
65
< td > { permission . title } </ td >
64
- < td >
65
- < input type = "checkbox" />
66
- </ td >
67
- < td >
68
- < input type = "checkbox" />
69
- </ td >
70
- < td >
71
- < input type = "checkbox" />
72
- </ td >
66
+ { this . state . roles . map ( ( { attributes } ) => (
67
+ < td
68
+ key = { `role-${ attributes . id } -permission-${
69
+ permission . id
70
+ } `}
71
+ >
72
+ { attributes . is_admin &&
73
+ attributes . id === 'administrator' ? (
74
+ < input type = "checkbox" checked />
75
+ ) : (
76
+ < input
77
+ type = "checkbox"
78
+ checked = { attributes . permissions . includes (
79
+ permission . id ,
80
+ ) }
81
+ />
82
+ ) }
83
+ </ td >
84
+ ) ) }
73
85
</ tr >
74
86
) ) }
75
87
</ Fragment >
0 commit comments