@@ -36,6 +36,21 @@ type User struct {
3636 Revoke []string `json:"revoke,omitempty"`
3737}
3838
39+ // userListEntry is the user representation given by the server for ListUsers
40+ type userListEntry struct {
41+ User string `json:"user"`
42+ Roles []Role `json:"roles"`
43+ }
44+
45+ type UserRoles struct {
46+ User string `json:"user"`
47+ Roles []Role `json:"roles"`
48+ }
49+
50+ type userName struct {
51+ User string `json:"user"`
52+ }
53+
3954func v2AuthURL (ep url.URL , action string , name string ) * url.URL {
4055 if name != "" {
4156 ep .Path = path .Join (ep .Path , defaultV2AuthPrefix , action , name )
@@ -78,9 +93,9 @@ func (s *httpAuthAPI) enableDisable(ctx context.Context, req httpAction) error {
7893 if err != nil {
7994 return err
8095 }
81- if err : = assertStatusCode (resp .StatusCode , http .StatusOK , http .StatusCreated ); err != nil {
96+ if err = assertStatusCode (resp .StatusCode , http .StatusOK , http .StatusCreated ); err != nil {
8297 var sec authError
83- err : = json .Unmarshal (body , & sec )
98+ err = json .Unmarshal (body , & sec )
8499 if err != nil {
85100 return err
86101 }
@@ -117,25 +132,25 @@ func NewAuthUserAPI(c Client) AuthUserAPI {
117132}
118133
119134type AuthUserAPI interface {
120- // Add a user.
135+ // AddUser adds a user.
121136 AddUser (ctx context.Context , username string , password string ) error
122137
123- // Remove a user.
138+ // RemoveUser removes a user.
124139 RemoveUser (ctx context.Context , username string ) error
125140
126- // Get user details.
141+ // GetUser retrieves user details.
127142 GetUser (ctx context.Context , username string ) (* User , error )
128143
129- // Grant a user some permission roles.
144+ // GrantUser grants a user some permission roles.
130145 GrantUser (ctx context.Context , username string , roles []string ) (* User , error )
131146
132- // Revoke some permission roles from a user.
147+ // RevokeUser revokes some permission roles from a user.
133148 RevokeUser (ctx context.Context , username string , roles []string ) (* User , error )
134149
135- // Change the user's password.
150+ // ChangePassword changes the user's password.
136151 ChangePassword (ctx context.Context , username string , password string ) (* User , error )
137152
138- // List users.
153+ // ListUsers lists the users.
139154 ListUsers (ctx context.Context ) ([]string , error )
140155}
141156
@@ -179,22 +194,28 @@ func (u *httpAuthUserAPI) ListUsers(ctx context.Context) ([]string, error) {
179194 if err != nil {
180195 return nil , err
181196 }
182- if err : = assertStatusCode (resp .StatusCode , http .StatusOK ); err != nil {
197+ if err = assertStatusCode (resp .StatusCode , http .StatusOK ); err != nil {
183198 var sec authError
184- err : = json .Unmarshal (body , & sec )
199+ err = json .Unmarshal (body , & sec )
185200 if err != nil {
186201 return nil , err
187202 }
188203 return nil , sec
189204 }
205+
190206 var userList struct {
191- Users []string `json:"users"`
207+ Users []userListEntry `json:"users"`
192208 }
193- err = json . Unmarshal ( body , & userList )
194- if err != nil {
209+
210+ if err = json . Unmarshal ( body , & userList ); err != nil {
195211 return nil , err
196212 }
197- return userList .Users , nil
213+
214+ ret := make ([]string , 0 , len (userList .Users ))
215+ for _ , u := range userList .Users {
216+ ret = append (ret , u .User )
217+ }
218+ return ret , nil
198219}
199220
200221func (u * httpAuthUserAPI ) AddUser (ctx context.Context , username string , password string ) error {
@@ -221,9 +242,9 @@ func (u *httpAuthUserAPI) addRemoveUser(ctx context.Context, req *authUserAPIAct
221242 if err != nil {
222243 return err
223244 }
224- if err : = assertStatusCode (resp .StatusCode , http .StatusOK , http .StatusCreated ); err != nil {
245+ if err = assertStatusCode (resp .StatusCode , http .StatusOK , http .StatusCreated ); err != nil {
225246 var sec authError
226- err : = json .Unmarshal (body , & sec )
247+ err = json .Unmarshal (body , & sec )
227248 if err != nil {
228249 return err
229250 }
@@ -280,18 +301,24 @@ func (u *httpAuthUserAPI) modUser(ctx context.Context, req *authUserAPIAction) (
280301 if err != nil {
281302 return nil , err
282303 }
283- if err : = assertStatusCode (resp .StatusCode , http .StatusOK ); err != nil {
304+ if err = assertStatusCode (resp .StatusCode , http .StatusOK ); err != nil {
284305 var sec authError
285- err : = json .Unmarshal (body , & sec )
306+ err = json .Unmarshal (body , & sec )
286307 if err != nil {
287308 return nil , err
288309 }
289310 return nil , sec
290311 }
291312 var user User
292- err = json .Unmarshal (body , & user )
293- if err != nil {
294- return nil , err
313+ if err = json .Unmarshal (body , & user ); err != nil {
314+ var userR UserRoles
315+ if urerr := json .Unmarshal (body , & userR ); urerr != nil {
316+ return nil , err
317+ }
318+ user .User = userR .User
319+ for _ , r := range userR .Roles {
320+ user .Roles = append (user .Roles , r .Role )
321+ }
295322 }
296323 return & user , nil
297324}
0 commit comments