Merge pull request #3063 from yichengq/fix-create-root

etcdserver/auth: fix return value when creating root user
This commit is contained in:
Yicheng Qin 2015-06-29 10:29:23 -07:00
commit 4430a80c0f

View File

@ -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
}