Răsfoiți Sursa

extend create user group req to accomodate users

abhishek9686 1 an în urmă
părinte
comite
c2134abaef
2 a modificat fișierele cu 21 adăugiri și 5 ștergeri
  1. 16 5
      controllers/user.go
  2. 5 0
      models/user_mgmt.go

+ 16 - 5
controllers/user.go

@@ -128,25 +128,36 @@ func getUserGroup(w http.ResponseWriter, r *http.Request) {
 //			Responses:
 //				200: userBodyResponse
 func createUserGroup(w http.ResponseWriter, r *http.Request) {
-	var userGroup models.UserGroup
-	err := json.NewDecoder(r.Body).Decode(&userGroup)
+	var userGroupReq models.CreateGroupReq
+	err := json.NewDecoder(r.Body).Decode(&userGroupReq.Group)
 	if err != nil {
 		slog.Error("error decoding request body", "error",
 			err.Error())
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
 		return
 	}
-	err = logic.ValidateCreateGroupReq(userGroup)
+	err = logic.ValidateCreateGroupReq(userGroupReq.Group)
 	if err != nil {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
 		return
 	}
-	err = logic.CreateUserGroup(userGroup)
+	err = logic.CreateUserGroup(userGroupReq.Group)
 	if err != nil {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
 		return
 	}
-	logic.ReturnSuccessResponseWithJson(w, r, userGroup, "created user group")
+	for _, userID := range userGroupReq.Members {
+		user, err := logic.GetUser(userID)
+		if err != nil {
+			continue
+		}
+		if len(user.UserGroups) == 0 {
+			user.UserGroups = make(map[models.UserGroupID]struct{})
+		}
+		user.UserGroups[userGroupReq.Group.ID] = struct{}{}
+		logic.UpsertUser(*user)
+	}
+	logic.ReturnSuccessResponseWithJson(w, r, userGroupReq.Group, "created user group")
 }
 
 // swagger:route PUT /api/v1/user/group user updateUserGroup

+ 5 - 0
models/user_mgmt.go

@@ -109,6 +109,11 @@ type UserRolePermissionTemplate struct {
 	GlobalLevelAccess   map[RsrcType]map[RsrcID]RsrcPermissionScope `json:"global_level_access"`
 }
 
+type CreateGroupReq struct {
+	Group   UserGroup `json:"user_group"`
+	Members []string  `json:"members"`
+}
+
 type UserGroup struct {
 	ID           UserGroupID                         `json:"id"`
 	PlatformRole UserRole                            `json:"platform_role"`