@truedat/auth 7.5.7 → 7.5.10

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.
Files changed (160) hide show
  1. package/package.json +40 -64
  2. package/src/groups/components/EditGroup.js +0 -1
  3. package/src/groups/components/Group.js +0 -1
  4. package/src/groups/components/GroupBreadcrumbs.js +1 -2
  5. package/src/groups/components/GroupCard.js +3 -3
  6. package/src/groups/components/GroupCards.js +2 -3
  7. package/src/groups/components/GroupForm.js +0 -1
  8. package/src/groups/components/GroupLoader.js +19 -51
  9. package/src/groups/components/GroupUsers.js +4 -3
  10. package/src/groups/components/GroupUsersTable.js +4 -4
  11. package/src/groups/components/GroupsLoader.js +2 -2
  12. package/src/groups/components/GroupsSearchLoader.js +1 -1
  13. package/src/groups/components/NewGroup.js +0 -1
  14. package/src/groups/components/__tests__/Group.spec.js +0 -1
  15. package/src/groups/components/__tests__/GroupCard.spec.js +23 -7
  16. package/src/groups/components/__tests__/GroupCards.spec.js +9 -6
  17. package/src/groups/components/__tests__/GroupLoader.spec.js +71 -0
  18. package/src/groups/components/__tests__/GroupUsers.spec.js +8 -12
  19. package/src/groups/components/__tests__/GroupUsersTable.spec.js +34 -42
  20. package/src/groups/components/__tests__/GroupsSearchLoader.spec.js +0 -1
  21. package/src/groups/components/__tests__/__snapshots__/Group.spec.js.snap +1 -2
  22. package/src/groups/components/__tests__/__snapshots__/GroupCard.spec.js.snap +43 -94
  23. package/src/groups/components/__tests__/__snapshots__/GroupCards.spec.js.snap +118 -53
  24. package/src/groups/components/__tests__/__snapshots__/GroupLoader.spec.js.snap +11 -0
  25. package/src/groups/components/__tests__/__snapshots__/GroupUsers.spec.js.snap +38 -45
  26. package/src/groups/components/__tests__/__snapshots__/GroupUsersTable.spec.js.snap +121 -213
  27. package/src/groups/components/index.js +1 -1
  28. package/src/groups/sagas/__tests__/deleteGroupUser.spec.js +6 -6
  29. package/src/groups/sagas/deleteGroup.js +1 -1
  30. package/src/groups/sagas/deleteGroupUser.js +2 -2
  31. package/src/groups/sagas/fetchGroup.js +1 -1
  32. package/src/groups/sagas/updateGroup.js +1 -1
  33. package/src/roles/components/NewRole.js +0 -1
  34. package/src/roles/components/PermissionGroup.js +0 -1
  35. package/src/roles/components/Role.js +8 -3
  36. package/src/roles/components/RoleCards.js +2 -3
  37. package/src/roles/components/RoleForm.js +1 -1
  38. package/src/roles/components/RoleLoader.js +26 -39
  39. package/src/roles/components/RoleRoutes.js +29 -32
  40. package/src/roles/components/RoleSelector.js +0 -1
  41. package/src/roles/components/Roles.js +1 -3
  42. package/src/roles/components/RolesLoader.js +2 -2
  43. package/src/roles/components/__tests__/PermissionGroup.spec.js +7 -17
  44. package/src/roles/components/__tests__/Role.spec.js +0 -1
  45. package/src/roles/components/__tests__/RoleCards.spec.js +11 -10
  46. package/src/roles/components/__tests__/RoleRoutes.spec.js +53 -7
  47. package/src/roles/components/__tests__/RoleSelector.spec.js +0 -1
  48. package/src/roles/components/__tests__/Roles.spec.js +2 -3
  49. package/src/roles/components/__tests__/__snapshots__/PermissionGroup.spec.js.snap +3 -5
  50. package/src/roles/components/__tests__/__snapshots__/Role.spec.js.snap +4 -4
  51. package/src/roles/components/__tests__/__snapshots__/RoleCards.spec.js.snap +57 -127
  52. package/src/roles/components/__tests__/__snapshots__/RoleRoutes.spec.js.snap +38 -5
  53. package/src/roles/components/__tests__/__snapshots__/RoleSelector.spec.js.snap +1 -1
  54. package/src/roles/components/__tests__/__snapshots__/Roles.spec.js.snap +6 -3
  55. package/src/roles/components/index.js +1 -1
  56. package/src/roles/reducers/rolePermissions.js +1 -1
  57. package/src/roles/reducers/roleRedirect.js +1 -1
  58. package/src/roles/sagas/deleteRole.js +1 -1
  59. package/src/roles/sagas/fetchRole.js +1 -1
  60. package/src/roles/sagas/fetchRolePermissions.js +1 -1
  61. package/src/roles/sagas/updateRole.js +1 -1
  62. package/src/roles/sagas/updateRolePermissions.js +1 -1
  63. package/src/sessions/components/Auth0Callback.js +5 -4
  64. package/src/sessions/components/Auth0LoginButton.js +2 -2
  65. package/src/sessions/components/AuthMethodsLoader.js +10 -19
  66. package/src/sessions/components/LoginButtons.js +4 -4
  67. package/src/sessions/components/NonceCallback.js +21 -38
  68. package/src/sessions/components/OidcLoginButton.js +0 -1
  69. package/src/sessions/components/OpenIDConnect.js +5 -4
  70. package/src/sessions/components/PrivateRoute.js +25 -57
  71. package/src/sessions/components/ProxyLoginCallback.js +0 -2
  72. package/src/sessions/components/SamlCallback.js +0 -2
  73. package/src/sessions/components/UnauthorizedRoute.js +28 -31
  74. package/src/sessions/components/__tests__/Auth0LoginButton.spec.js +12 -12
  75. package/src/sessions/components/__tests__/AuthMethodsLoader.spec.js +15 -12
  76. package/src/sessions/components/__tests__/NonceCallback.spec.js +84 -0
  77. package/src/sessions/components/__tests__/OidcLoginButton.spec.js +10 -10
  78. package/src/sessions/components/__tests__/OpenIDConnect.spec.js +7 -8
  79. package/src/sessions/components/__tests__/PrivateRoute.spec.js +90 -0
  80. package/src/sessions/components/__tests__/UnauthorizedRoute.spec.js +88 -0
  81. package/src/sessions/components/__tests__/__snapshots__/Auth0LoginButton.spec.js.snap +22 -24
  82. package/src/sessions/components/__tests__/__snapshots__/NonceCallback.spec.js.snap +18 -0
  83. package/src/sessions/components/__tests__/__snapshots__/OidcLoginButton.spec.js.snap +18 -18
  84. package/src/sessions/components/__tests__/__snapshots__/PrivateRoute.spec.js.snap +9 -0
  85. package/src/sessions/components/__tests__/__snapshots__/UnauthorizedRoute.spec.js.snap +9 -0
  86. package/src/sessions/components/index.js +1 -1
  87. package/src/sessions/sagas/__tests__/login.spec.js +4 -4
  88. package/src/sessions/sagas/__tests__/refresh.spec.js +2 -2
  89. package/src/sessions/sagas/__tests__/token.spec.js +4 -4
  90. package/src/sessions/sagas/login.js +5 -5
  91. package/src/sessions/sagas/refresh.js +2 -2
  92. package/src/sessions/sagas/token.js +2 -2
  93. package/src/users/components/AdminUserRoutes.js +35 -51
  94. package/src/users/components/EditUser.js +0 -1
  95. package/src/users/components/GroupUserCrumbs.js +8 -8
  96. package/src/users/components/InitialUser.js +0 -1
  97. package/src/users/components/NewUser.js +0 -1
  98. package/src/users/components/Password.js +0 -1
  99. package/src/users/components/User.js +2 -2
  100. package/src/users/components/UserAclRow.js +1 -2
  101. package/src/users/components/UserAcls.js +0 -1
  102. package/src/users/components/UserActions.js +1 -2
  103. package/src/users/components/UserBreadcrumbs.js +2 -3
  104. package/src/users/components/UserCard.js +3 -3
  105. package/src/users/components/UserCards.js +5 -4
  106. package/src/users/components/UserDomainsFilter.js +2 -5
  107. package/src/users/components/UserForm.js +8 -33
  108. package/src/users/components/UserGroupAclRow.js +1 -2
  109. package/src/users/components/UserGroupAcls.js +0 -1
  110. package/src/users/components/UserLoader.js +21 -48
  111. package/src/users/components/UserPassword.js +0 -1
  112. package/src/users/components/UserRoutes.js +73 -7
  113. package/src/users/components/UserSelector.js +0 -1
  114. package/src/users/components/UserTabs.js +1 -2
  115. package/src/users/components/UsersAndGroups.js +6 -6
  116. package/src/users/components/UsersLoader.js +2 -2
  117. package/src/users/components/UsersSearchLoader.js +2 -1
  118. package/src/users/components/__tests__/CanInitLoader.spec.js +6 -13
  119. package/src/users/components/__tests__/EditUser.spec.js +4 -33
  120. package/src/users/components/__tests__/InitialUser.spec.js +4 -34
  121. package/src/users/components/__tests__/NewUser.spec.js +4 -35
  122. package/src/users/components/__tests__/Password.spec.js +59 -69
  123. package/src/users/components/__tests__/User.spec.js +1 -2
  124. package/src/users/components/__tests__/UserAclRow.spec.js +5 -7
  125. package/src/users/components/__tests__/UserAcls.spec.js +8 -9
  126. package/src/users/components/__tests__/UserActions.spec.js +4 -5
  127. package/src/users/components/__tests__/UserCard.spec.js +11 -11
  128. package/src/users/components/__tests__/UserCards.spec.js +39 -31
  129. package/src/users/components/__tests__/UserDomainsFilter.spec.js +12 -22
  130. package/src/users/components/__tests__/UserForm.spec.js +24 -44
  131. package/src/users/components/__tests__/UserGroupAclRow.spec.js +1 -2
  132. package/src/users/components/__tests__/UserGroupAcls.spec.js +8 -9
  133. package/src/users/components/__tests__/UserLoader.spec.js +85 -0
  134. package/src/users/components/__tests__/UserPassword.spec.js +8 -21
  135. package/src/users/components/__tests__/UserRoutes.spec.js +129 -4
  136. package/src/users/components/__tests__/UserSelector.spec.js +0 -1
  137. package/src/users/components/__tests__/UsersAndGroups.spec.js +45 -5
  138. package/src/users/components/__tests__/UsersSearchLoader.spec.js +0 -1
  139. package/src/users/components/__tests__/__snapshots__/EditUser.spec.js.snap +23 -21
  140. package/src/users/components/__tests__/__snapshots__/InitialUser.spec.js.snap +22 -21
  141. package/src/users/components/__tests__/__snapshots__/NewUser.spec.js.snap +25 -23
  142. package/src/users/components/__tests__/__snapshots__/Password.spec.js.snap +8 -7
  143. package/src/users/components/__tests__/__snapshots__/User.spec.js.snap +7 -6
  144. package/src/users/components/__tests__/__snapshots__/UserAclRow.spec.js.snap +12 -11
  145. package/src/users/components/__tests__/__snapshots__/UserActions.spec.js.snap +56 -67
  146. package/src/users/components/__tests__/__snapshots__/UserCard.spec.js.snap +56 -70
  147. package/src/users/components/__tests__/__snapshots__/UserCards.spec.js.snap +117 -83
  148. package/src/users/components/__tests__/__snapshots__/UserDomainsFilter.spec.js.snap +2 -2
  149. package/src/users/components/__tests__/__snapshots__/UserForm.spec.js.snap +21 -20
  150. package/src/users/components/__tests__/__snapshots__/UserLoader.spec.js.snap +3 -0
  151. package/src/users/components/__tests__/__snapshots__/UserPassword.spec.js.snap +9 -7
  152. package/src/users/components/__tests__/__snapshots__/UserRoutes.spec.js.snap +170 -16
  153. package/src/users/components/__tests__/__snapshots__/UserSelector.spec.js.snap +1 -1
  154. package/src/users/components/__tests__/__snapshots__/UsersAndGroups.spec.js.snap +75 -14
  155. package/src/users/sagas/__tests__/fetchUser.spec.js +3 -5
  156. package/src/users/sagas/__tests__/updateUser.spec.js +1 -1
  157. package/src/users/sagas/deleteUser.js +1 -1
  158. package/src/users/sagas/fetchUser.js +1 -1
  159. package/src/users/sagas/updateUser.js +1 -1
  160. package/src/users/components/__tests__/__snapshots__/CanInitLoader.spec.js.snap +0 -3
@@ -1,231 +1,139 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`<GroupUsersTable /> matches the latest snapshot 1`] = `
4
- <Table
5
- as="table"
6
- sortable={true}
7
- >
8
- <TableHeader
9
- as="thead"
4
+ <div>
5
+ <table
6
+ class="ui sortable table"
10
7
  >
11
- <TableRow
12
- as="tr"
13
- cellAs="td"
8
+ <thead
9
+ class=""
14
10
  >
15
- <TableHeaderCell
16
- as="th"
17
- className=""
18
- content="user.props.full_name"
19
- key="0"
20
- onClick={[Function]}
21
- sorted="ascending"
22
- width={2}
23
- />
24
- <TableHeaderCell
25
- as="th"
26
- className=""
27
- content="user.props.user_name"
28
- key="1"
29
- onClick={[Function]}
30
- sorted={null}
31
- width={2}
32
- />
33
- <TableHeaderCell
34
- as="th"
35
- className=""
36
- content="user.props.email"
37
- key="2"
38
- onClick={[Function]}
39
- sorted={null}
40
- width={2}
41
- />
42
- <TableHeaderCell
43
- as="th"
44
- key="delete_action"
45
- width={1}
46
- />
47
- </TableRow>
48
- </TableHeader>
49
- <TableBody
50
- as="tbody"
51
- >
52
- <TableRow
53
- as="tr"
54
- cellAs="td"
55
- key="4_0"
11
+ <tr
12
+ class=""
13
+ >
14
+ <th
15
+ class="two wide ascending sorted"
16
+ >
17
+ user.props.full_name
18
+ </th>
19
+ <th
20
+ class="two wide"
21
+ >
22
+ user.props.user_name
23
+ </th>
24
+ <th
25
+ class="two wide"
26
+ >
27
+ user.props.email
28
+ </th>
29
+ <th
30
+ class="one wide"
31
+ />
32
+ </tr>
33
+ </thead>
34
+ <tbody
35
+ class=""
56
36
  >
57
- <TableCell
58
- as="td"
59
- className="pointer"
60
- content={
37
+ <tr
38
+ class=""
39
+ >
40
+ <td
41
+ class="two wide pointer"
42
+ >
61
43
  <a>
62
44
  a user 3
63
45
  </a>
64
- }
65
- key="0"
66
- onClick={[Function]}
67
- width={2}
68
- />
69
- <TableCell
70
- as="td"
71
- content="auser_3"
72
- key="1"
73
- width={2}
74
- />
75
- <TableCell
76
- as="td"
77
- content="test3@test.com"
78
- key="2"
79
- width={2}
80
- />
81
- <TableCell
82
- as="td"
83
- className="pointer"
84
- textAlign="center"
46
+ </td>
47
+ <td
48
+ class="two wide"
49
+ >
50
+ auser_3
51
+ </td>
52
+ <td
53
+ class="two wide"
54
+ >
55
+ test3@test.com
56
+ </td>
57
+ <td
58
+ class="center aligned pointer"
59
+ >
60
+ <button
61
+ class="ui red mini basic icon button"
62
+ >
63
+ <i
64
+ aria-hidden="true"
65
+ class="red trash alternate outline icon"
66
+ />
67
+ </button>
68
+ </td>
69
+ </tr>
70
+ <tr
71
+ class=""
85
72
  >
86
- <ConfirmModal
87
- content="groupUsers.actions.delete.confirmation.content"
88
- header="groupUsers.actions.delete.confirmation.header"
89
- icon="trash"
90
- onClose={[Function]}
91
- onConfirm={[Function]}
92
- onOpen={[Function]}
93
- trigger={
94
- <Button
95
- as="button"
96
- basic={true}
97
- color="red"
98
- icon={true}
99
- size="mini"
100
- >
101
- <Icon
102
- as="i"
103
- color="red"
104
- name="trash alternate outline"
105
- />
106
- </Button>
107
- }
108
- />
109
- </TableCell>
110
- </TableRow>
111
- <TableRow
112
- as="tr"
113
- cellAs="td"
114
- key="9_1"
115
- >
116
- <TableCell
117
- as="td"
118
- className="pointer"
119
- content={
73
+ <td
74
+ class="two wide pointer"
75
+ >
120
76
  <a>
121
77
  user 1
122
78
  </a>
123
- }
124
- key="0"
125
- onClick={[Function]}
126
- width={2}
127
- />
128
- <TableCell
129
- as="td"
130
- content="user 1"
131
- key="1"
132
- width={2}
133
- />
134
- <TableCell
135
- as="td"
136
- content="test1@test.com"
137
- key="2"
138
- width={2}
139
- />
140
- <TableCell
141
- as="td"
142
- className="pointer"
143
- textAlign="center"
79
+ </td>
80
+ <td
81
+ class="two wide"
82
+ >
83
+ user 1
84
+ </td>
85
+ <td
86
+ class="two wide"
87
+ >
88
+ test1@test.com
89
+ </td>
90
+ <td
91
+ class="center aligned pointer"
92
+ >
93
+ <button
94
+ class="ui red mini basic icon button"
95
+ >
96
+ <i
97
+ aria-hidden="true"
98
+ class="red trash alternate outline icon"
99
+ />
100
+ </button>
101
+ </td>
102
+ </tr>
103
+ <tr
104
+ class=""
144
105
  >
145
- <ConfirmModal
146
- content="groupUsers.actions.delete.confirmation.content"
147
- header="groupUsers.actions.delete.confirmation.header"
148
- icon="trash"
149
- onClose={[Function]}
150
- onConfirm={[Function]}
151
- onOpen={[Function]}
152
- trigger={
153
- <Button
154
- as="button"
155
- basic={true}
156
- color="red"
157
- icon={true}
158
- size="mini"
159
- >
160
- <Icon
161
- as="i"
162
- color="red"
163
- name="trash alternate outline"
164
- />
165
- </Button>
166
- }
167
- />
168
- </TableCell>
169
- </TableRow>
170
- <TableRow
171
- as="tr"
172
- cellAs="td"
173
- key="3_2"
174
- >
175
- <TableCell
176
- as="td"
177
- className="pointer"
178
- content={
106
+ <td
107
+ class="two wide pointer"
108
+ >
179
109
  <a>
180
110
  user 2
181
111
  </a>
182
- }
183
- key="0"
184
- onClick={[Function]}
185
- width={2}
186
- />
187
- <TableCell
188
- as="td"
189
- content="user 2"
190
- key="1"
191
- width={2}
192
- />
193
- <TableCell
194
- as="td"
195
- content="test2@test.com"
196
- key="2"
197
- width={2}
198
- />
199
- <TableCell
200
- as="td"
201
- className="pointer"
202
- textAlign="center"
203
- >
204
- <ConfirmModal
205
- content="groupUsers.actions.delete.confirmation.content"
206
- header="groupUsers.actions.delete.confirmation.header"
207
- icon="trash"
208
- onClose={[Function]}
209
- onConfirm={[Function]}
210
- onOpen={[Function]}
211
- trigger={
212
- <Button
213
- as="button"
214
- basic={true}
215
- color="red"
216
- icon={true}
217
- size="mini"
218
- >
219
- <Icon
220
- as="i"
221
- color="red"
222
- name="trash alternate outline"
223
- />
224
- </Button>
225
- }
226
- />
227
- </TableCell>
228
- </TableRow>
229
- </TableBody>
230
- </Table>
112
+ </td>
113
+ <td
114
+ class="two wide"
115
+ >
116
+ user 2
117
+ </td>
118
+ <td
119
+ class="two wide"
120
+ >
121
+ test2@test.com
122
+ </td>
123
+ <td
124
+ class="center aligned pointer"
125
+ >
126
+ <button
127
+ class="ui red mini basic icon button"
128
+ >
129
+ <i
130
+ aria-hidden="true"
131
+ class="red trash alternate outline icon"
132
+ />
133
+ </button>
134
+ </td>
135
+ </tr>
136
+ </tbody>
137
+ </table>
138
+ </div>
231
139
  `;
@@ -21,5 +21,5 @@ export {
21
21
  GroupUsersTable,
22
22
  GroupsLoader,
23
23
  GroupsSearchLoader,
24
- NewGroup
24
+ NewGroup,
25
25
  };
@@ -4,7 +4,7 @@ import { testSaga } from "redux-saga-test-plan";
4
4
  import { apiJsonPut, JSON_OPTS } from "@truedat/core/services/api";
5
5
  import {
6
6
  deleteGroupUserSaga,
7
- deleteGroupUserRequestSaga
7
+ deleteGroupUserRequestSaga,
8
8
  } from "../deleteGroupUser";
9
9
  import { deleteGroupUser } from "../../routines";
10
10
  import { API_GROUP } from "../../api";
@@ -30,16 +30,16 @@ describe("sagas: deleteGroupUserRequestSaga", () => {
30
30
  });
31
31
 
32
32
  describe("sagas: deleteGroupUserSaga", () => {
33
- const group = { id: 1, name: "g1" };
34
- const user = { id: 2 };
35
- const groupUsers = [{ id: 2 }, { id: 3 }, { id: 4 }, { id: 5 }];
33
+ const group = { id: "1", name: "g1" };
34
+ const user = { id: "2" };
35
+ const groupUsers = [{ id: "2" }, { id: "3" }, { id: "4" }, { id: "5" }];
36
36
  const payload = { group, user, groupUsers };
37
37
 
38
- const url = compile(API_GROUP)({ id: group.id });
38
+ const url = compile(API_GROUP)({ id: `${group.id}` });
39
39
  const meta = { group_id: group.id };
40
40
  const updatedGroup = {
41
41
  ...group,
42
- user_ids: _.map("id")(_.differenceBy("id", groupUsers, [user]))
42
+ user_ids: _.map("id")(_.differenceBy("id", groupUsers, [user])),
43
43
  };
44
44
  const requestData = { group: updatedGroup };
45
45
 
@@ -9,7 +9,7 @@ const toApiPath = compile(API_GROUP);
9
9
  export function* deleteGroupSaga({ payload }) {
10
10
  try {
11
11
  const group = payload;
12
- const url = toApiPath(group);
12
+ const url = toApiPath({ id: `${group.id}` });
13
13
  yield put(deleteGroup.request());
14
14
  const { data } = yield call(apiJsonDelete, url, JSON_OPTS);
15
15
  yield put(deleteGroup.success(data));
@@ -10,9 +10,9 @@ export function* deleteGroupUserSaga({ payload }) {
10
10
  const { group, user, groupUsers } = payload;
11
11
  const updatedGroup = {
12
12
  ...group,
13
- user_ids: _.map("id")(_.differenceBy("id", groupUsers, [user]))
13
+ user_ids: _.map("id")(_.differenceBy("id", groupUsers, [user])),
14
14
  };
15
- const url = compile(API_GROUP)(group);
15
+ const url = compile(API_GROUP)({ id: `${group.id}` });
16
16
  const requestData = { group: updatedGroup };
17
17
  const meta = { group_id: group.id };
18
18
  yield put({ meta, ...deleteGroupUser.request() });
@@ -9,7 +9,7 @@ const toApiPath = compile(API_GROUP);
9
9
  export function* fetchGroupSaga({ payload }) {
10
10
  try {
11
11
  const { id } = payload;
12
- const url = toApiPath({ id });
12
+ const url = toApiPath({ id: `${id}` });
13
13
  yield put(fetchGroup.request());
14
14
  const { data } = yield call(apiJson, url, JSON_OPTS);
15
15
  yield put(fetchGroup.success(data));
@@ -6,7 +6,7 @@ import { API_GROUP } from "../api";
6
6
 
7
7
  export function* updateGroupSaga({ payload: group }) {
8
8
  try {
9
- const url = compile(API_GROUP)(group);
9
+ const url = compile(API_GROUP)({ id: `${group.id}` });
10
10
  const requestData = { group };
11
11
  yield put(updateGroup.request());
12
12
  const { data } = yield call(apiJsonPut, url, requestData, JSON_OPTS);
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
2
  import { Header, Icon, Container, Segment } from "semantic-ui-react";
4
3
  import { connect } from "react-redux";
@@ -1,5 +1,4 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { connect } from "react-redux";
5
4
  import { Header, List, Checkbox, Segment } from "semantic-ui-react";
@@ -1,8 +1,8 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
2
+ import { Component } from "react";
3
3
  import PropTypes from "prop-types";
4
4
  import { FormattedMessage, useIntl } from "react-intl";
5
- import { Link } from "react-router-dom";
5
+ import { Link } from "react-router";
6
6
  import { connect } from "react-redux";
7
7
  import {
8
8
  Form,
@@ -16,24 +16,29 @@ import { ROLES } from "@truedat/core/routes";
16
16
  import { deleteRole, updateRole } from "../routines";
17
17
  import PermissionGroup from "./PermissionGroup";
18
18
 
19
- class RoleName extends React.Component {
19
+ class RoleName extends Component {
20
20
  state = {
21
21
  editing: false,
22
22
  name: null,
23
23
  };
24
+
24
25
  componentDidMount() {
25
26
  this.setState(this.props);
26
27
  }
28
+
27
29
  handleChange = (_, { value }) => this.setState({ name: value });
30
+
28
31
  handleSubmit = () => {
29
32
  this.props.updateName(this.state.name);
30
33
  this.setState({ editing: false });
31
34
  };
35
+
32
36
  handleKeyDown = (e) => {
33
37
  if (e.key === "Escape") {
34
38
  this.setState({ editing: false, name: this.props.name });
35
39
  }
36
40
  };
41
+
37
42
  render() {
38
43
  const { name, editing } = this.state;
39
44
  return editing ? (
@@ -1,8 +1,7 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
2
  import { Button, Card, Label, Icon } from "semantic-ui-react";
4
3
  import { connect } from "react-redux";
5
- import { Link } from "react-router-dom";
4
+ import { Link } from "react-router";
6
5
  import { FormattedMessage } from "react-intl";
7
6
  import { ConfirmModal } from "@truedat/core/components";
8
7
  import { linkTo } from "@truedat/core/routes";
@@ -10,7 +9,7 @@ import { deleteRole } from "../routines";
10
9
 
11
10
  export const RoleCards = ({ deleteRole, roles }) => (
12
11
  <Card.Group>
13
- {roles.map((role, i) => (
12
+ {roles?.map((role, i) => (
14
13
  <Card key={i}>
15
14
  <Card.Content>
16
15
  <Card.Header as={Link} to={linkTo.ROLE({ id: role.id })}>
@@ -1,6 +1,5 @@
1
1
  import _ from "lodash/fp";
2
2
  import PropTypes from "prop-types";
3
- import React from "react";
4
3
  import { useForm, Controller } from "react-hook-form";
5
4
  import { Button, Form } from "semantic-ui-react";
6
5
  import { useIntl } from "react-intl";
@@ -17,6 +16,7 @@ export const RoleForm = ({ role, isSubmitting, onSubmit }) => {
17
16
  },
18
17
  });
19
18
  const { errors, isDirty, isValid } = formState;
19
+
20
20
  return (
21
21
  <Form onSubmit={handleSubmit(onSubmit)}>
22
22
  <Controller
@@ -1,8 +1,7 @@
1
- import React from "react";
1
+ import { useEffect } from "react";
2
2
  import PropTypes from "prop-types";
3
- import { compose } from "redux";
4
- import { connect } from "react-redux";
5
- import { withRouter } from "react-router-dom";
3
+ import { useParams } from "react-router";
4
+ import { useDispatch, useSelector } from "react-redux";
6
5
  import { Loading } from "@truedat/core/components";
7
6
  import {
8
7
  fetchPermissions,
@@ -11,44 +10,32 @@ import {
11
10
  clearRoles,
12
11
  } from "../routines";
13
12
 
14
- class RoleLoader extends React.Component {
15
- static propTypes = {
16
- fetchPermissions: PropTypes.func,
17
- fetchRole: PropTypes.func,
18
- fetchRolePermissions: PropTypes.func,
19
- roleLoading: PropTypes.bool,
20
- match: PropTypes.object,
21
- };
13
+ const RoleLoader = () => {
14
+ const dispatch = useDispatch();
15
+ const roleLoading = useSelector((state) => state.roleLoading);
16
+ const { id } = useParams();
22
17
 
23
- componentDidMount() {
24
- const { fetchPermissions, fetchRole, fetchRolePermissions, match } =
25
- this.props;
26
- const { id } = match.params;
18
+ useEffect(() => {
27
19
  if (id) {
28
- fetchPermissions();
29
- fetchRole({ id });
30
- fetchRolePermissions({ id });
20
+ dispatch(fetchPermissions());
21
+ dispatch(fetchRole({ id }));
22
+ dispatch(fetchRolePermissions({ id }));
31
23
  }
32
- }
33
24
 
34
- render() {
35
- const { roleLoading } = this.props;
36
- if (roleLoading) {
37
- return <Loading />;
38
- } else {
39
- return null;
40
- }
41
- }
42
- }
25
+ return () => {
26
+ dispatch(clearRoles());
27
+ };
28
+ }, [dispatch, id]);
29
+
30
+ return roleLoading ? <Loading /> : null;
31
+ };
43
32
 
44
- const mapStateToProps = ({ roleLoading }) => ({ roleLoading });
33
+ RoleLoader.propTypes = {
34
+ fetchPermissions: PropTypes.func,
35
+ fetchRole: PropTypes.func,
36
+ fetchRolePermissions: PropTypes.func,
37
+ roleLoading: PropTypes.bool,
38
+ match: PropTypes.object,
39
+ };
45
40
 
46
- export default compose(
47
- withRouter,
48
- connect(mapStateToProps, {
49
- fetchPermissions,
50
- fetchRole,
51
- fetchRolePermissions,
52
- clearRoles,
53
- })
54
- )(RoleLoader);
41
+ export default RoleLoader;
@@ -1,41 +1,38 @@
1
1
  import React from "react";
2
- import { Route, Switch } from "react-router-dom";
3
- import { Unauthorized } from "@truedat/core/components";
4
- import { useAuthorized } from "@truedat/core/hooks";
5
- import { ROLE, ROLES, ROLES_NEW } from "@truedat/core/routes";
2
+ import { Route, Routes } from "react-router";
3
+ import { ProtectedRoute } from "@truedat/core/router";
4
+ import { path } from "@truedat/core/routesTree";
6
5
  import NewRole from "./NewRole";
7
6
  import Roles from "./Roles";
8
7
  import Role from "./Role";
9
8
  import RolesLoader from "./RolesLoader";
10
9
  import RoleLoader from "./RoleLoader";
11
10
 
12
- const AuthorizedRoutes = () => (
13
- <>
14
- <Route path={ROLES} component={RolesLoader} exact />
15
- <Route path={ROLES} component={Roles} exact />
16
- <Switch>
17
- <Route path={ROLES_NEW} render={() => <NewRole />} exact />
18
- <Route
19
- path={ROLE}
20
- render={() => (
21
- <>
22
- <RoleLoader />
23
- <Role />
24
- </>
25
- )}
26
- />
27
- </Switch>
28
- </>
29
- );
30
-
31
- export const RoleRoutes = () => {
32
- const authorized = useAuthorized();
11
+ export default function RoleRoutes() {
33
12
  return (
34
- <Route
35
- path={ROLES}
36
- render={() => (authorized ? <AuthorizedRoutes /> : <Unauthorized />)}
37
- />
13
+ <Routes>
14
+ <Route path={path("roles")} element={<ProtectedRoute />}>
15
+ <Route
16
+ index
17
+ element={
18
+ <>
19
+ <RolesLoader />
20
+ <Roles />
21
+ </>
22
+ }
23
+ />
24
+ <Route path={path("roles/new")} element={<NewRole />} />
25
+ <Route
26
+ path={path("roles/:id")}
27
+ element={
28
+ <>
29
+ <RoleLoader />
30
+ <Role />
31
+ </>
32
+ }
33
+ />
34
+ </Route>
35
+ <Route path="*" element={null} />
36
+ </Routes>
38
37
  );
39
- };
40
-
41
- export default RoleRoutes;
38
+ }