Merge pull request #5625 from xiang90/put_user

auth: add put_user
This commit is contained in:
Xiang Li 2016-06-10 12:10:21 -07:00 committed by GitHub
commit aa56e47712

View File

@ -238,18 +238,12 @@ func (as *authStore) UserAdd(r *pb.AuthUserAddRequest) (*pb.AuthUserAddResponse,
return nil, ErrUserAlreadyExist
}
newUser := authpb.User{
newUser := &authpb.User{
Name: []byte(r.Name),
Password: hashed,
}
marshaledUser, merr := newUser.Marshal()
if merr != nil {
plog.Errorf("failed to marshal a new user data: %s", merr)
return nil, merr
}
tx.UnsafePut(authUsersBucketName, []byte(r.Name), marshaledUser)
putUser(tx, newUser)
plog.Noticef("added a new user: %s", r.Name)
@ -291,18 +285,13 @@ func (as *authStore) UserChangePassword(r *pb.AuthUserChangePasswordRequest) (*p
return nil, ErrUserNotFound
}
updatedUser := authpb.User{
updatedUser := &authpb.User{
Name: []byte(r.Name),
Roles: user.Roles,
Password: hashed,
}
marshaledUser, merr := updatedUser.Marshal()
if merr != nil {
plog.Errorf("failed to marshal a new user data: %s", merr)
return nil, merr
}
tx.UnsafePut(authUsersBucketName, []byte(r.Name), marshaledUser)
putUser(tx, updatedUser)
plog.Noticef("changed a password of a user: %s", r.Name)
@ -335,12 +324,7 @@ func (as *authStore) UserGrantRole(r *pb.AuthUserGrantRoleRequest) (*pb.AuthUser
user.Roles = append(user.Roles, r.Role)
sort.Sort(sort.StringSlice(user.Roles))
marshaledUser, merr := user.Marshal()
if merr != nil {
return nil, merr
}
tx.UnsafePut(authUsersBucketName, user.Name, marshaledUser)
putUser(tx, user)
as.invalidateCachedPerm(r.User)
@ -393,12 +377,7 @@ func (as *authStore) UserRevokeRole(r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUs
return nil, ErrRoleNotGranted
}
marshaledUser, merr := updatedUser.Marshal()
if merr != nil {
return nil, merr
}
tx.UnsafePut(authUsersBucketName, updatedUser.Name, marshaledUser)
putUser(tx, updatedUser)
as.invalidateCachedPerm(r.Name)
@ -675,6 +654,14 @@ func getUser(tx backend.BatchTx, username string) *authpb.User {
return user
}
func putUser(tx backend.BatchTx, user *authpb.User) {
b, err := user.Marshal()
if err != nil {
plog.Panicf("failed to marshal user struct (name: %s): %s", user.Name, err)
}
tx.UnsafePut(authUsersBucketName, user.Name, b)
}
func getRole(tx backend.BatchTx, rolename string) *authpb.Role {
_, vs := tx.UnsafeRange(authRolesBucketName, []byte(rolename), nil, 0)
if len(vs) == 0 {