mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdserver/auth: fix return value when creating root user
Before: ``` $ curl http://127.0.0.1:4001/v2/auth/users/root -XPUT -d '{"user": "root", "password": "root"}' {"user":"root","roles":null} ``` After: ``` {"user":"root","roles":["root"]} ```
This commit is contained in:
parent
3e455ed104
commit
2e41b4f9e1
@ -160,20 +160,10 @@ func (s *Store) GetUser(name string) (User, error) {
|
||||
if err != nil {
|
||||
return u, err
|
||||
}
|
||||
// Require that root always has a root role.
|
||||
// Attach root role to root user.
|
||||
if u.User == "root" {
|
||||
inRoles := false
|
||||
for _, r := range u.Roles {
|
||||
if r == RootRoleName {
|
||||
inRoles = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !inRoles {
|
||||
u.Roles = append(u.Roles, RootRoleName)
|
||||
}
|
||||
u = attachRootRole(u)
|
||||
}
|
||||
|
||||
return u, nil
|
||||
}
|
||||
|
||||
@ -191,6 +181,10 @@ func (s *Store) CreateOrUpdateUser(user User) (out User, created bool, err error
|
||||
}
|
||||
|
||||
func (s *Store) CreateUser(user User) (User, error) {
|
||||
// Attach root role to root user.
|
||||
if user.User == "root" {
|
||||
user = attachRootRole(user)
|
||||
}
|
||||
u, err := s.createUserInternal(user)
|
||||
if err == nil {
|
||||
plog.Noticef("created user %s", user.User)
|
||||
@ -604,3 +598,17 @@ func prefixMatch(pattern string, key string) (match bool, err error) {
|
||||
}
|
||||
return strings.HasPrefix(key, pattern[:len(pattern)-1]), nil
|
||||
}
|
||||
|
||||
func attachRootRole(u User) User {
|
||||
inRoles := false
|
||||
for _, r := range u.Roles {
|
||||
if r == RootRoleName {
|
||||
inRoles = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !inRoles {
|
||||
u.Roles = append(u.Roles, RootRoleName)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user