@@ -141,26 +141,18 @@ func GetTeam(ctx *context.APIContext) {
141
141
ctx .JSON (http .StatusOK , apiTeam )
142
142
}
143
143
144
- func attachTeamUnits (team * organization.Team , units []string ) {
144
+ func attachTeamUnits (team * organization.Team , defaultAccessMode perm. AccessMode , units []string ) {
145
145
unitTypes , _ := unit_model .FindUnitTypes (units ... )
146
146
team .Units = make ([]* organization.TeamUnit , 0 , len (units ))
147
147
for _ , tp := range unitTypes {
148
148
team .Units = append (team .Units , & organization.TeamUnit {
149
149
OrgID : team .OrgID ,
150
150
Type : tp ,
151
- AccessMode : team . AccessMode ,
151
+ AccessMode : defaultAccessMode ,
152
152
})
153
153
}
154
154
}
155
155
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
-
164
156
func attachTeamUnitsMap (team * organization.Team , unitsMap map [string ]string ) {
165
157
team .Units = make ([]* organization.TeamUnit , 0 , len (unitsMap ))
166
158
for unitKey , p := range unitsMap {
@@ -214,24 +206,22 @@ func CreateTeam(ctx *context.APIContext) {
214
206
// "422":
215
207
// "$ref": "#/responses/validationError"
216
208
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 )
221
210
team := & organization.Team {
222
211
OrgID : ctx .Org .Organization .ID ,
223
212
Name : form .Name ,
224
213
Description : form .Description ,
225
214
IncludesAllRepositories : form .IncludesAllRepositories ,
226
215
CanCreateOrgRepo : form .CanCreateOrgRepo ,
227
- AccessMode : p ,
216
+ AccessMode : teamPermission ,
228
217
}
229
218
230
219
if team .AccessMode < perm .AccessModeAdmin {
231
220
if len (form .UnitsMap ) > 0 {
232
221
attachTeamUnitsMap (team , form .UnitsMap )
233
222
} 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 )
235
225
} else {
236
226
ctx .APIErrorInternal (errors .New ("units permission should not be empty" ))
237
227
return
@@ -304,15 +294,10 @@ func EditTeam(ctx *context.APIContext) {
304
294
isAuthChanged := false
305
295
isIncludeAllChanged := false
306
296
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 {
314
299
isAuthChanged = true
315
- team .AccessMode = p
300
+ team .AccessMode = teamPermission
316
301
}
317
302
318
303
if form .IncludesAllRepositories != nil {
@@ -325,7 +310,8 @@ func EditTeam(ctx *context.APIContext) {
325
310
if len (form .UnitsMap ) > 0 {
326
311
attachTeamUnitsMap (team , form .UnitsMap )
327
312
} 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 )
329
315
}
330
316
} else {
331
317
attachAdminTeamUnits (team )
0 commit comments