Browse Source

auth: add put_user

Xiang Li 9 years ago
parent
commit
ae30ab7897
1 changed files with 15 additions and 28 deletions
  1. 15 28
      auth/store.go

+ 15 - 28
auth/store.go

@@ -238,18 +238,12 @@ func (as *authStore) UserAdd(r *pb.AuthUserAddRequest) (*pb.AuthUserAddResponse,
 		return nil, ErrUserAlreadyExist
 		return nil, ErrUserAlreadyExist
 	}
 	}
 
 
-	newUser := authpb.User{
+	newUser := &authpb.User{
 		Name:     []byte(r.Name),
 		Name:     []byte(r.Name),
 		Password: hashed,
 		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)
 	plog.Noticef("added a new user: %s", r.Name)
 
 
@@ -291,18 +285,13 @@ func (as *authStore) UserChangePassword(r *pb.AuthUserChangePasswordRequest) (*p
 		return nil, ErrUserNotFound
 		return nil, ErrUserNotFound
 	}
 	}
 
 
-	updatedUser := authpb.User{
+	updatedUser := &authpb.User{
 		Name:     []byte(r.Name),
 		Name:     []byte(r.Name),
+		Roles:    user.Roles,
 		Password: hashed,
 		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)
 	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)
 	user.Roles = append(user.Roles, r.Role)
 	sort.Sort(sort.StringSlice(user.Roles))
 	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)
 	as.invalidateCachedPerm(r.User)
 
 
@@ -393,12 +377,7 @@ func (as *authStore) UserRevokeRole(r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUs
 		return nil, ErrRoleNotGranted
 		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)
 	as.invalidateCachedPerm(r.Name)
 
 
@@ -675,6 +654,14 @@ func getUser(tx backend.BatchTx, username string) *authpb.User {
 	return 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 {
 func getRole(tx backend.BatchTx, rolename string) *authpb.Role {
 	_, vs := tx.UnsafeRange(authRolesBucketName, []byte(rolename), nil, 0)
 	_, vs := tx.UnsafeRange(authRolesBucketName, []byte(rolename), nil, 0)
 	if len(vs) == 0 {
 	if len(vs) == 0 {