@@ -9,6 +9,9 @@ import { formatUnknownError } from 'utils/formatUnknownError';
9
9
import useToast from 'hooks/useToast' ;
10
10
import { useScimSettingsApi } from 'hooks/api/actions/useScimSettingsApi/useScimSettingsApi' ;
11
11
import { useScimSettings } from 'hooks/api/getters/useScimSettings/useScimSettings' ;
12
+ import { ScimDeleteEntityDialog } from './ScimDeleteUsersDialog' ;
13
+ import useAdminUsersApi from 'hooks/api/actions/useAdminUsersApi/useAdminUsersApi' ;
14
+ import { useGroupApi } from 'hooks/api/actions/useGroupApi/useGroupApi' ;
12
15
13
16
const StyledContainer = styled ( 'div' ) ( ( { theme } ) => ( {
14
17
padding : theme . spacing ( 3 ) ,
@@ -25,8 +28,12 @@ export const ScimSettings = () => {
25
28
const { setToastData, setToastApiError } = useToast ( ) ;
26
29
const [ newToken , setNewToken ] = useState ( '' ) ;
27
30
const [ tokenGenerationDialog , setTokenGenerationDialog ] = useState ( false ) ;
31
+ const [ deleteGroupsDialog , setDeleteGroupsDialog ] = useState ( false ) ;
32
+ const [ deleteUsersDialog , setDeleteUsersDialog ] = useState ( false ) ;
28
33
const [ tokenDialog , setTokenDialog ] = useState ( false ) ;
29
34
const { settings, refetch } = useScimSettings ( ) ;
35
+ const { deleteScimUsers } = useAdminUsersApi ( ) ;
36
+ const { deleteScimGroups } = useGroupApi ( ) ;
30
37
const [ enabled , setEnabled ] = useState ( settings . enabled ?? true ) ;
31
38
32
39
useEffect ( ( ) => {
@@ -40,6 +47,34 @@ export const ScimSettings = () => {
40
47
setTokenGenerationDialog ( true ) ;
41
48
} ;
42
49
50
+ const onDeleteScimGroups = async ( ) => {
51
+ try {
52
+ await deleteScimGroups ( ) ;
53
+ setToastData ( {
54
+ text : 'Scim Groups have been deleted' ,
55
+ type : 'success' ,
56
+ } ) ;
57
+ setDeleteGroupsDialog ( false ) ;
58
+ refetch ( ) ;
59
+ } catch ( error : unknown ) {
60
+ setToastApiError ( formatUnknownError ( error ) ) ;
61
+ }
62
+ } ;
63
+
64
+ const onDeleteScimUsers = async ( ) => {
65
+ try {
66
+ await deleteScimUsers ( ) ;
67
+ setToastData ( {
68
+ text : 'Scim Users have been deleted' ,
69
+ type : 'success' ,
70
+ } ) ;
71
+ setDeleteUsersDialog ( false ) ;
72
+ refetch ( ) ;
73
+ } catch ( error : unknown ) {
74
+ setToastApiError ( formatUnknownError ( error ) ) ;
75
+ }
76
+ } ;
77
+
43
78
const onGenerateNewTokenConfirm = async ( ) => {
44
79
setTokenGenerationDialog ( false ) ;
45
80
const token = await generateNewToken ( ) ;
@@ -138,6 +173,57 @@ export const ScimSettings = () => {
138
173
/>
139
174
</ Grid >
140
175
</ Grid >
176
+
177
+ < Grid container spacing = { 3 } >
178
+ < Grid item md = { 10.5 } mb = { 2 } >
179
+ < StyledTitleDiv >
180
+ < strong > Delete SCIM Users</ strong >
181
+ </ StyledTitleDiv >
182
+ < p >
183
+ This will remove all SCIM users from the Unleash
184
+ database. This action cannot be undone through
185
+ Unleash but the upstream SCIM provider may re sync
186
+ these users.
187
+ </ p >
188
+ </ Grid >
189
+ < Grid item md = { 1.5 } >
190
+ < Button
191
+ variant = 'outlined'
192
+ color = 'error'
193
+ disabled = { loading }
194
+ onClick = { ( ) => {
195
+ setDeleteUsersDialog ( true ) ;
196
+ } }
197
+ >
198
+ Delete Users
199
+ </ Button >
200
+ </ Grid >
201
+ < Grid item md = { 10.5 } mb = { 2 } >
202
+ < StyledTitleDiv >
203
+ < strong > Delete SCIM Groups</ strong >
204
+ </ StyledTitleDiv >
205
+ < p >
206
+ This will remove all SCIM groups from the Unleash
207
+ database. This action cannot be undone through
208
+ Unleash but the upstream SCIM provider may re sync
209
+ these groups. Note that this may affect the
210
+ permissions of users present in those groups.
211
+ </ p >
212
+ </ Grid >
213
+ < Grid item md = { 1.5 } >
214
+ < Button
215
+ variant = 'outlined'
216
+ color = 'error'
217
+ disabled = { loading }
218
+ onClick = { ( ) => {
219
+ setDeleteGroupsDialog ( true ) ;
220
+ } }
221
+ >
222
+ Delete Groups
223
+ </ Button >
224
+ </ Grid >
225
+ </ Grid >
226
+
141
227
< ScimTokenGenerationDialog
142
228
open = { tokenGenerationDialog }
143
229
setOpen = { setTokenGenerationDialog }
@@ -148,6 +234,20 @@ export const ScimSettings = () => {
148
234
setOpen = { setTokenDialog }
149
235
token = { newToken }
150
236
/>
237
+
238
+ < ScimDeleteEntityDialog
239
+ open = { deleteUsersDialog }
240
+ closeDialog = { ( ) => setDeleteUsersDialog ( false ) }
241
+ deleteEntities = { onDeleteScimUsers }
242
+ entityType = 'Users'
243
+ />
244
+
245
+ < ScimDeleteEntityDialog
246
+ open = { deleteGroupsDialog }
247
+ closeDialog = { ( ) => setDeleteGroupsDialog ( false ) }
248
+ deleteEntities = { onDeleteScimGroups }
249
+ entityType = 'Groups'
250
+ />
151
251
</ StyledContainer >
152
252
</ >
153
253
) ;
0 commit comments