@@ -141,26 +141,18 @@ func GetTeam(ctx *context.APIContext) {
141141 ctx .JSON (http .StatusOK , apiTeam )
142142}
143143
144- func attachTeamUnits (team * organization.Team , units []string ) {
144+ func attachTeamUnits (team * organization.Team , defaultAccessMode perm. AccessMode , units []string ) {
145145 unitTypes , _ := unit_model .FindUnitTypes (units ... )
146146 team .Units = make ([]* organization.TeamUnit , 0 , len (units ))
147147 for _ , tp := range unitTypes {
148148 team .Units = append (team .Units , & organization.TeamUnit {
149149 OrgID : team .OrgID ,
150150 Type : tp ,
151- AccessMode : team . AccessMode ,
151+ AccessMode : defaultAccessMode ,
152152 })
153153 }
154154}
155155
156- func convertUnitsMap (unitsMap map [string ]string ) map [unit_model.Type ]perm.AccessMode {
157- res := make (map [unit_model.Type ]perm.AccessMode , len (unitsMap ))
158- for unitKey , p := range unitsMap {
159- res [unit_model .TypeFromKey (unitKey )] = perm .ParseAccessMode (p )
160- }
161- return res
162- }
163-
164156func attachTeamUnitsMap (team * organization.Team , unitsMap map [string ]string ) {
165157 team .Units = make ([]* organization.TeamUnit , 0 , len (unitsMap ))
166158 for unitKey , p := range unitsMap {
@@ -214,24 +206,22 @@ func CreateTeam(ctx *context.APIContext) {
214206 // "422":
215207 // "$ref": "#/responses/validationError"
216208 form := web .GetForm (ctx ).(* api.CreateTeamOption )
217- p := perm .ParseAccessMode (form .Permission )
218- if p < perm .AccessModeAdmin && len (form .UnitsMap ) > 0 {
219- p = unit_model .MinUnitAccessMode (convertUnitsMap (form .UnitsMap ))
220- }
209+ teamPermission := perm .ParseAccessMode (form .Permission , perm .AccessModeNone , perm .AccessModeAdmin )
221210 team := & organization.Team {
222211 OrgID : ctx .Org .Organization .ID ,
223212 Name : form .Name ,
224213 Description : form .Description ,
225214 IncludesAllRepositories : form .IncludesAllRepositories ,
226215 CanCreateOrgRepo : form .CanCreateOrgRepo ,
227- AccessMode : p ,
216+ AccessMode : teamPermission ,
228217 }
229218
230219 if team .AccessMode < perm .AccessModeAdmin {
231220 if len (form .UnitsMap ) > 0 {
232221 attachTeamUnitsMap (team , form .UnitsMap )
233222 } else if len (form .Units ) > 0 {
234- attachTeamUnits (team , form .Units )
223+ unitPerm := perm .ParseAccessMode (form .Permission , perm .AccessModeRead , perm .AccessModeWrite )
224+ attachTeamUnits (team , unitPerm , form .Units )
235225 } else {
236226 ctx .APIErrorInternal (errors .New ("units permission should not be empty" ))
237227 return
@@ -304,15 +294,10 @@ func EditTeam(ctx *context.APIContext) {
304294 isAuthChanged := false
305295 isIncludeAllChanged := false
306296 if ! team .IsOwnerTeam () && len (form .Permission ) != 0 {
307- // Validate permission level.
308- p := perm .ParseAccessMode (form .Permission )
309- if p < perm .AccessModeAdmin && len (form .UnitsMap ) > 0 {
310- p = unit_model .MinUnitAccessMode (convertUnitsMap (form .UnitsMap ))
311- }
312-
313- if team .AccessMode != p {
297+ teamPermission := perm .ParseAccessMode (form .Permission , perm .AccessModeNone , perm .AccessModeAdmin )
298+ if team .AccessMode != teamPermission {
314299 isAuthChanged = true
315- team .AccessMode = p
300+ team .AccessMode = teamPermission
316301 }
317302
318303 if form .IncludesAllRepositories != nil {
@@ -325,7 +310,8 @@ func EditTeam(ctx *context.APIContext) {
325310 if len (form .UnitsMap ) > 0 {
326311 attachTeamUnitsMap (team , form .UnitsMap )
327312 } else if len (form .Units ) > 0 {
328- attachTeamUnits (team , form .Units )
313+ unitPerm := perm .ParseAccessMode (form .Permission , perm .AccessModeRead , perm .AccessModeWrite )
314+ attachTeamUnits (team , unitPerm , form .Units )
329315 }
330316 } else {
331317 attachAdminTeamUnits (team )
0 commit comments