Mohammed Nafees 3 лет назад
Родитель
Сommit
27afa09dd7
1 измененных файлов с 27 добавлено и 6 удалено
  1. 27 6
      api/server/handlers/project/update_collaborator_roles.go

+ 27 - 6
api/server/handlers/project/update_collaborator_roles.go

@@ -98,10 +98,17 @@ func (p *UpdateCollaboratorRolesHandler) ServeHTTP(w http.ResponseWriter, r *htt
 
 	if len(userRoles) == 0 {
 		for _, uid := range request.RoleUIDs {
-			userIDs := rolesMap[uid].GetUserIDs()
+			role, err := p.Repo().ProjectRole().ReadProjectRole(proj.ID, uid)
+
+			if err != nil {
+				p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
+				return
+			}
+
+			userIDs := role.GetUserIDs()
 			userIDs = append(userIDs, userID)
 
-			err := p.Repo().ProjectRole().UpdateUsersInProjectRole(proj.ID, uid, userIDs)
+			err = p.Repo().ProjectRole().UpdateUsersInProjectRole(proj.ID, uid, userIDs)
 
 			if err != nil {
 				p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
@@ -127,10 +134,17 @@ func (p *UpdateCollaboratorRolesHandler) ServeHTTP(w http.ResponseWriter, r *htt
 		}
 
 		for _, uid := range rolesToAdd {
-			userIDs := rolesMap[uid].GetUserIDs()
+			role, err := p.Repo().ProjectRole().ReadProjectRole(proj.ID, uid)
+
+			if err != nil {
+				p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
+				return
+			}
+
+			userIDs := role.GetUserIDs()
 			userIDs = append(userIDs, userID)
 
-			err := p.Repo().ProjectRole().UpdateUsersInProjectRole(proj.ID, uid, userIDs)
+			err = p.Repo().ProjectRole().UpdateUsersInProjectRole(proj.ID, uid, userIDs)
 
 			if err != nil {
 				p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
@@ -139,7 +153,14 @@ func (p *UpdateCollaboratorRolesHandler) ServeHTTP(w http.ResponseWriter, r *htt
 		}
 
 		for _, uid := range rolesToRemove {
-			userIDs := rolesMap[uid].GetUserIDs()
+			role, err := p.Repo().ProjectRole().ReadProjectRole(proj.ID, uid)
+
+			if err != nil {
+				p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
+				return
+			}
+
+			userIDs := role.GetUserIDs()
 			var newUserIDs []uint
 
 			for _, id := range userIDs {
@@ -148,7 +169,7 @@ func (p *UpdateCollaboratorRolesHandler) ServeHTTP(w http.ResponseWriter, r *htt
 				}
 			}
 
-			err := p.Repo().ProjectRole().UpdateUsersInProjectRole(proj.ID, uid, newUserIDs)
+			err = p.Repo().ProjectRole().UpdateUsersInProjectRole(proj.ID, uid, newUserIDs)
 
 			if err != nil {
 				p.HandleAPIError(w, r, apierrors.NewErrInternal(err))