Merge pull request #3063 from yichengq/fix-create-root
etcdserver/auth: fix return value when creating root user
This commit is contained in:
@ -160,20 +160,10 @@ func (s *Store) GetUser(name string) (User, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return u, err
|
return u, err
|
||||||
}
|
}
|
||||||
// Require that root always has a root role.
|
// Attach root role to root user.
|
||||||
if u.User == "root" {
|
if u.User == "root" {
|
||||||
inRoles := false
|
u = attachRootRole(u)
|
||||||
for _, r := range u.Roles {
|
|
||||||
if r == RootRoleName {
|
|
||||||
inRoles = true
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if !inRoles {
|
|
||||||
u.Roles = append(u.Roles, RootRoleName)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return u, nil
|
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) {
|
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)
|
u, err := s.createUserInternal(user)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
plog.Noticef("created user %s", user.User)
|
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
|
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
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user