@@ -11,12 +11,14 @@ import CheckIcon from '@material-ui/icons/Check';
11
11
import IconButton from '@material-ui/core/IconButton' ;
12
12
import SaveIcon from '@material-ui/icons/Save' ;
13
13
import PersonAddIcon from '@material-ui/icons/PersonAdd' ;
14
+ import VpnKeyIcon from '@material-ui/icons/VpnKey' ;
14
15
15
16
import { withAuthenticatedContext , AuthenticatedContextProps } from '../authentication' ;
16
17
import { RestFormProps , FormActions , FormButton , extractEventValue } from '../components' ;
17
18
18
19
import UserForm from './UserForm' ;
19
20
import { SecuritySettings , User } from './types' ;
21
+ import GenerateToken from './GenerateToken' ;
20
22
21
23
function compareUsers ( a : User , b : User ) {
22
24
if ( a . username < b . username ) {
@@ -33,6 +35,7 @@ type ManageUsersFormProps = RestFormProps<SecuritySettings> & AuthenticatedConte
33
35
type ManageUsersFormState = {
34
36
creating : boolean ;
35
37
user ?: User ;
38
+ generateTokenFor ?: string ;
36
39
}
37
40
38
41
class ManageUsersForm extends React . Component < ManageUsersFormProps , ManageUsersFormState > {
@@ -66,6 +69,18 @@ class ManageUsersForm extends React.Component<ManageUsersFormProps, ManageUsersF
66
69
this . props . setData ( { ...data , users } ) ;
67
70
}
68
71
72
+ closeGenerateToken = ( ) => {
73
+ this . setState ( {
74
+ generateTokenFor : undefined
75
+ } ) ;
76
+ }
77
+
78
+ generateToken = ( user : User ) => {
79
+ this . setState ( {
80
+ generateTokenFor : user . username
81
+ } ) ;
82
+ }
83
+
69
84
startEditingUser = ( user : User ) => {
70
85
this . setState ( {
71
86
creating : false ,
@@ -103,7 +118,7 @@ class ManageUsersForm extends React.Component<ManageUsersFormProps, ManageUsersF
103
118
104
119
render ( ) {
105
120
const { width, data } = this . props ;
106
- const { user, creating } = this . state ;
121
+ const { user, creating, generateTokenFor } = this . state ;
107
122
return (
108
123
< Fragment >
109
124
< ValidatorForm onSubmit = { this . onSubmit } >
@@ -125,6 +140,9 @@ class ManageUsersForm extends React.Component<ManageUsersFormProps, ManageUsersF
125
140
{ user . admin ? < CheckIcon /> : < CloseIcon /> }
126
141
</ TableCell >
127
142
< TableCell align = "center" >
143
+ < IconButton size = "small" aria-label = "Generate Token" onClick = { ( ) => this . generateToken ( user ) } >
144
+ < VpnKeyIcon />
145
+ </ IconButton >
128
146
< IconButton size = "small" aria-label = "Delete" onClick = { ( ) => this . removeUser ( user ) } >
129
147
< DeleteIcon />
130
148
</ IconButton >
@@ -162,6 +180,9 @@ class ManageUsersForm extends React.Component<ManageUsersFormProps, ManageUsersF
162
180
</ FormButton >
163
181
</ FormActions >
164
182
</ ValidatorForm >
183
+ {
184
+ generateTokenFor && < GenerateToken username = { generateTokenFor } onClose = { this . closeGenerateToken } />
185
+ }
165
186
{
166
187
user &&
167
188
< UserForm
0 commit comments