mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
client: if User unmarshal fails, decode user using full roles
Fixes #3702
This commit is contained in:
parent
02d9aa481b
commit
868728e5b5
@ -36,6 +36,11 @@ type User struct {
|
|||||||
Revoke []string `json:"revoke,omitempty"`
|
Revoke []string `json:"revoke,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type UserRoles struct {
|
||||||
|
User string `json:"user"`
|
||||||
|
Roles []Role `json:"roles"`
|
||||||
|
}
|
||||||
|
|
||||||
func v2AuthURL(ep url.URL, action string, name string) *url.URL {
|
func v2AuthURL(ep url.URL, action string, name string) *url.URL {
|
||||||
if name != "" {
|
if name != "" {
|
||||||
ep.Path = path.Join(ep.Path, defaultV2AuthPrefix, action, name)
|
ep.Path = path.Join(ep.Path, defaultV2AuthPrefix, action, name)
|
||||||
@ -289,7 +294,14 @@ func (u *httpAuthUserAPI) modUser(ctx context.Context, req *authUserAPIAction) (
|
|||||||
}
|
}
|
||||||
var user User
|
var user User
|
||||||
if err = json.Unmarshal(body, &user); err != nil {
|
if err = json.Unmarshal(body, &user); err != nil {
|
||||||
return nil, err
|
var userR UserRoles
|
||||||
|
if urerr := json.Unmarshal(body, &userR); urerr != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
user.User = userR.User
|
||||||
|
for _, r := range userR.Roles {
|
||||||
|
user.Roles = append(user.Roles, r.Role)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return &user, nil
|
return &user, nil
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user