diff --git a/api/member.go b/api/member.go index 685dc132e..1fe38a1a7 100644 --- a/api/member.go +++ b/api/member.go @@ -142,13 +142,22 @@ func (pma *ProjectMemberAPI) Post() { return } - for _, rid := range req.Roles { - err = dao.AddProjectMember(projectID, userID, int(rid)) - if err != nil { - log.Errorf("Failed to update DB to add project user role, project id: %d, user id: %d, role id: %d", projectID, userID, rid) - pma.RenderError(http.StatusInternalServerError, "Failed to update data in database") - return - } + if len(req.Roles) <= 0 || len(req.Roles) > 1 { + pma.CustomAbort(http.StatusBadRequest, "only one role is supported") + } + + rid := req.Roles[0] + if !(rid == models.PROJECTADMIN || + rid == models.DEVELOPER || + rid == models.GUEST) { + pma.CustomAbort(http.StatusBadRequest, "invalid role") + } + + err = dao.AddProjectMember(projectID, userID, rid) + if err != nil { + log.Errorf("Failed to update DB to add project user role, project id: %d, user id: %d, role id: %d", projectID, userID, rid) + pma.RenderError(http.StatusInternalServerError, "Failed to update data in database") + return } } diff --git a/docs/swagger.yaml b/docs/swagger.yaml index c979e057a..72e68b6f3 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -314,7 +314,7 @@ paths: description: Relevant project ID. - name: roles in: body - description: Role members for adding to relevant project. + description: Role members for adding to relevant project. Only one role is supported in the role list. schema: $ref: '#/definitions/RoleParam' tags: