mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	
				
					committed by
					
						
						techknowlogick
					
				
			
			
				
	
			
			
			
						parent
						
							297e619074
						
					
				
				
					commit
					8670decafb
				
			
							
								
								
									
										4
									
								
								Gopkg.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								Gopkg.lock
									
									
									
										generated
									
									
									
								
							@@ -11,11 +11,11 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  branch = "master"
 | 
				
			||||||
  digest = "1:bf4f822f636b99ac7d4f8fa5210a7439bacaf8d1f15d5783956bdd5dd2069bdc"
 | 
					  digest = "1:b194da40b41ae99546dfeec5a85f1fec2a6c51350d438e511ef90f4293c6dcd7"
 | 
				
			||||||
  name = "code.gitea.io/sdk"
 | 
					  name = "code.gitea.io/sdk"
 | 
				
			||||||
  packages = ["gitea"]
 | 
					  packages = ["gitea"]
 | 
				
			||||||
  pruneopts = "NUT"
 | 
					  pruneopts = "NUT"
 | 
				
			||||||
  revision = "11c860c8e49a23be26e6d6c6a039a46ad2ae1d27"
 | 
					  revision = "4f96d9ac89886e78c50de8c835ebe87461578a5e"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  digest = "1:3fcef06a1a6561955c94af6c7757a6fa37605eb653f0d06ab960e5bb80092195"
 | 
					  digest = "1:3fcef06a1a6561955c94af6c7757a6fa37605eb653f0d06ab960e5bb80092195"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,6 +40,14 @@ func (t *Team) getUnits(e Engine) (err error) {
 | 
				
			|||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// GetUnitNames returns the team units names
 | 
				
			||||||
 | 
					func (t *Team) GetUnitNames() (res []string) {
 | 
				
			||||||
 | 
						for _, u := range t.Units {
 | 
				
			||||||
 | 
							res = append(res, Units[u.Type].NameKey)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// HasWriteAccess returns true if team has at least write level access mode.
 | 
					// HasWriteAccess returns true if team has at least write level access mode.
 | 
				
			||||||
func (t *Team) HasWriteAccess() bool {
 | 
					func (t *Team) HasWriteAccess() bool {
 | 
				
			||||||
	return t.Authorize >= AccessModeWrite
 | 
						return t.Authorize >= AccessModeWrite
 | 
				
			||||||
@@ -367,6 +375,24 @@ func UpdateTeam(t *Team, authChanged bool) (err error) {
 | 
				
			|||||||
		return fmt.Errorf("update: %v", err)
 | 
							return fmt.Errorf("update: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// update units for team
 | 
				
			||||||
 | 
						if len(t.Units) > 0 {
 | 
				
			||||||
 | 
							for _, unit := range t.Units {
 | 
				
			||||||
 | 
								unit.TeamID = t.ID
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							// Delete team-unit.
 | 
				
			||||||
 | 
							if _, err := sess.
 | 
				
			||||||
 | 
								Where("team_id=?", t.ID).
 | 
				
			||||||
 | 
								Delete(new(TeamUnit)); err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if _, err = sess.Insert(&t.Units); err != nil {
 | 
				
			||||||
 | 
								sess.Rollback()
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Update access for team members if needed.
 | 
						// Update access for team members if needed.
 | 
				
			||||||
	if authChanged {
 | 
						if authChanged {
 | 
				
			||||||
		if err = t.getRepositories(sess); err != nil {
 | 
							if err = t.getRepositories(sess); err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package models
 | 
					package models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// UnitType is Unit's Type
 | 
					// UnitType is Unit's Type
 | 
				
			||||||
type UnitType int
 | 
					type UnitType int
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -137,3 +141,16 @@ var (
 | 
				
			|||||||
		UnitTypeExternalWiki:    UnitExternalWiki,
 | 
							UnitTypeExternalWiki:    UnitExternalWiki,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FindUnitTypes give the unit key name and return unit
 | 
				
			||||||
 | 
					func FindUnitTypes(nameKeys ...string) (res []UnitType) {
 | 
				
			||||||
 | 
						for _, key := range nameKeys {
 | 
				
			||||||
 | 
							for t, u := range Units {
 | 
				
			||||||
 | 
								if strings.EqualFold(key, u.NameKey) {
 | 
				
			||||||
 | 
									res = append(res, t)
 | 
				
			||||||
 | 
									break
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -196,5 +196,6 @@ func ToTeam(team *models.Team) *api.Team {
 | 
				
			|||||||
		Name:        team.Name,
 | 
							Name:        team.Name,
 | 
				
			||||||
		Description: team.Description,
 | 
							Description: team.Description,
 | 
				
			||||||
		Permission:  team.Authorize.String(),
 | 
							Permission:  team.Authorize.String(),
 | 
				
			||||||
 | 
							Units:       team.GetUnitNames(),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -89,6 +89,20 @@ func CreateTeam(ctx *context.APIContext, form api.CreateTeamOption) {
 | 
				
			|||||||
		Description: form.Description,
 | 
							Description: form.Description,
 | 
				
			||||||
		Authorize:   models.ParseAccessMode(form.Permission),
 | 
							Authorize:   models.ParseAccessMode(form.Permission),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						unitTypes := models.FindUnitTypes(form.Units...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if team.Authorize < models.AccessModeOwner {
 | 
				
			||||||
 | 
							var units = make([]*models.TeamUnit, 0, len(form.Units))
 | 
				
			||||||
 | 
							for _, tp := range unitTypes {
 | 
				
			||||||
 | 
								units = append(units, &models.TeamUnit{
 | 
				
			||||||
 | 
									OrgID: ctx.Org.Organization.ID,
 | 
				
			||||||
 | 
									Type:  tp,
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							team.Units = units
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err := models.NewTeam(team); err != nil {
 | 
						if err := models.NewTeam(team); err != nil {
 | 
				
			||||||
		if models.IsErrTeamAlreadyExist(err) {
 | 
							if models.IsErrTeamAlreadyExist(err) {
 | 
				
			||||||
			ctx.Error(422, "", err)
 | 
								ctx.Error(422, "", err)
 | 
				
			||||||
@@ -127,6 +141,19 @@ func EditTeam(ctx *context.APIContext, form api.EditTeamOption) {
 | 
				
			|||||||
	team.Name = form.Name
 | 
						team.Name = form.Name
 | 
				
			||||||
	team.Description = form.Description
 | 
						team.Description = form.Description
 | 
				
			||||||
	team.Authorize = models.ParseAccessMode(form.Permission)
 | 
						team.Authorize = models.ParseAccessMode(form.Permission)
 | 
				
			||||||
 | 
						unitTypes := models.FindUnitTypes(form.Units...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if team.Authorize < models.AccessModeOwner {
 | 
				
			||||||
 | 
							var units = make([]*models.TeamUnit, 0, len(form.Units))
 | 
				
			||||||
 | 
							for _, tp := range unitTypes {
 | 
				
			||||||
 | 
								units = append(units, &models.TeamUnit{
 | 
				
			||||||
 | 
									OrgID: ctx.Org.Organization.ID,
 | 
				
			||||||
 | 
									Type:  tp,
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							team.Units = units
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err := models.UpdateTeam(team, true); err != nil {
 | 
						if err := models.UpdateTeam(team, true); err != nil {
 | 
				
			||||||
		ctx.Error(500, "EditTeam", err)
 | 
							ctx.Error(500, "EditTeam", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6128,6 +6128,22 @@
 | 
				
			|||||||
            "admin"
 | 
					            "admin"
 | 
				
			||||||
          ],
 | 
					          ],
 | 
				
			||||||
          "x-go-name": "Permission"
 | 
					          "x-go-name": "Permission"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "units": {
 | 
				
			||||||
 | 
					          "type": "array",
 | 
				
			||||||
 | 
					          "enum": [
 | 
				
			||||||
 | 
					            "repo.code",
 | 
				
			||||||
 | 
					            "repo.issues",
 | 
				
			||||||
 | 
					            "repo.ext_issues",
 | 
				
			||||||
 | 
					            "repo.wiki",
 | 
				
			||||||
 | 
					            "repo.pulls",
 | 
				
			||||||
 | 
					            "repo.releases",
 | 
				
			||||||
 | 
					            "repo.ext_wiki"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "string"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "x-go-name": "Units"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea"
 | 
					      "x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea"
 | 
				
			||||||
@@ -6503,6 +6519,22 @@
 | 
				
			|||||||
            "admin"
 | 
					            "admin"
 | 
				
			||||||
          ],
 | 
					          ],
 | 
				
			||||||
          "x-go-name": "Permission"
 | 
					          "x-go-name": "Permission"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "units": {
 | 
				
			||||||
 | 
					          "type": "array",
 | 
				
			||||||
 | 
					          "enum": [
 | 
				
			||||||
 | 
					            "repo.code",
 | 
				
			||||||
 | 
					            "repo.issues",
 | 
				
			||||||
 | 
					            "repo.ext_issues",
 | 
				
			||||||
 | 
					            "repo.wiki",
 | 
				
			||||||
 | 
					            "repo.pulls",
 | 
				
			||||||
 | 
					            "repo.releases",
 | 
				
			||||||
 | 
					            "repo.ext_wiki"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "string"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "x-go-name": "Units"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea"
 | 
					      "x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea"
 | 
				
			||||||
@@ -7550,6 +7582,22 @@
 | 
				
			|||||||
            "owner"
 | 
					            "owner"
 | 
				
			||||||
          ],
 | 
					          ],
 | 
				
			||||||
          "x-go-name": "Permission"
 | 
					          "x-go-name": "Permission"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "units": {
 | 
				
			||||||
 | 
					          "type": "array",
 | 
				
			||||||
 | 
					          "enum": [
 | 
				
			||||||
 | 
					            "repo.code",
 | 
				
			||||||
 | 
					            "repo.issues",
 | 
				
			||||||
 | 
					            "repo.ext_issues",
 | 
				
			||||||
 | 
					            "repo.wiki",
 | 
				
			||||||
 | 
					            "repo.pulls",
 | 
				
			||||||
 | 
					            "repo.releases",
 | 
				
			||||||
 | 
					            "repo.ext_wiki"
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "string"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "x-go-name": "Units"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea"
 | 
					      "x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										7
									
								
								vendor/code.gitea.io/sdk/gitea/org_team.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/code.gitea.io/sdk/gitea/org_team.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,4 +1,5 @@
 | 
				
			|||||||
// Copyright 2016 The Gogs Authors. All rights reserved.
 | 
					// Copyright 2016 The Gogs Authors. All rights reserved.
 | 
				
			||||||
 | 
					// Copyright 2018 The Gitea Authors. All rights reserved.
 | 
				
			||||||
// Use of this source code is governed by a MIT-style
 | 
					// Use of this source code is governed by a MIT-style
 | 
				
			||||||
// license that can be found in the LICENSE file.
 | 
					// license that can be found in the LICENSE file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -11,6 +12,8 @@ type Team struct {
 | 
				
			|||||||
	Description string `json:"description"`
 | 
						Description string `json:"description"`
 | 
				
			||||||
	// enum: none,read,write,admin,owner
 | 
						// enum: none,read,write,admin,owner
 | 
				
			||||||
	Permission string `json:"permission"`
 | 
						Permission string `json:"permission"`
 | 
				
			||||||
 | 
						// enum: repo.code,repo.issues,repo.ext_issues,repo.wiki,repo.pulls,repo.releases,repo.ext_wiki
 | 
				
			||||||
 | 
						Units []string `json:"units"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CreateTeamOption options for creating a team
 | 
					// CreateTeamOption options for creating a team
 | 
				
			||||||
@@ -20,6 +23,8 @@ type CreateTeamOption struct {
 | 
				
			|||||||
	Description string `json:"description" binding:"MaxSize(255)"`
 | 
						Description string `json:"description" binding:"MaxSize(255)"`
 | 
				
			||||||
	// enum: read,write,admin
 | 
						// enum: read,write,admin
 | 
				
			||||||
	Permission string `json:"permission"`
 | 
						Permission string `json:"permission"`
 | 
				
			||||||
 | 
						// enum: repo.code,repo.issues,repo.ext_issues,repo.wiki,repo.pulls,repo.releases,repo.ext_wiki
 | 
				
			||||||
 | 
						Units []string `json:"units"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// EditTeamOption options for editing a team
 | 
					// EditTeamOption options for editing a team
 | 
				
			||||||
@@ -29,4 +34,6 @@ type EditTeamOption struct {
 | 
				
			|||||||
	Description string `json:"description" binding:"MaxSize(255)"`
 | 
						Description string `json:"description" binding:"MaxSize(255)"`
 | 
				
			||||||
	// enum: read,write,admin
 | 
						// enum: read,write,admin
 | 
				
			||||||
	Permission string `json:"permission"`
 | 
						Permission string `json:"permission"`
 | 
				
			||||||
 | 
						// enum: repo.code,repo.issues,repo.ext_issues,repo.wiki,repo.pulls,repo.releases,repo.ext_wiki
 | 
				
			||||||
 | 
						Units []string `json:"units"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user