forked from forgejo/forgejo
Add units to team (#947)
* add units to team * fix lint * finish team setting backend * finished permission controll on routes * fix import blank line * add unit check on ssh/http pull and push and fix test failed * fix fixtures data * remove unused code
This commit is contained in:
parent
5db5e16ab6
commit
fd6034aaf2
18 changed files with 366 additions and 113 deletions
|
@ -329,8 +329,61 @@ func (repo *Repository) getUnits(e Engine) (err error) {
|
|||
return err
|
||||
}
|
||||
|
||||
func getUnitsByRepoID(e Engine, repoID int64) (units []*RepoUnit, err error) {
|
||||
return units, e.Where("repo_id = ?", repoID).Find(&units)
|
||||
// CheckUnitUser check whether user could visit the unit of this repository
|
||||
func (repo *Repository) CheckUnitUser(userID int64, unitType UnitType) bool {
|
||||
if err := repo.getUnitsByUserID(x, userID); err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
for _, unit := range repo.Units {
|
||||
if unit.Type == unitType {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// LoadUnitsByUserID loads units according userID's permissions
|
||||
func (repo *Repository) LoadUnitsByUserID(userID int64) error {
|
||||
return repo.getUnitsByUserID(x, userID)
|
||||
}
|
||||
|
||||
func (repo *Repository) getUnitsByUserID(e Engine, userID int64) (err error) {
|
||||
if repo.Units != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
err = repo.getUnits(e)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !repo.Owner.IsOrganization() || userID == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
teams, err := getUserTeams(e, repo.OwnerID, userID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var allTypes = make(map[UnitType]struct{}, len(allRepUnitTypes))
|
||||
for _, team := range teams {
|
||||
for _, unitType := range team.UnitTypes {
|
||||
allTypes[unitType] = struct{}{}
|
||||
}
|
||||
}
|
||||
|
||||
// unique
|
||||
var newRepoUnits = make([]*RepoUnit, 0, len(repo.Units))
|
||||
for _, u := range repo.Units {
|
||||
if _, ok := allTypes[u.Type]; ok {
|
||||
newRepoUnits = append(newRepoUnits, u)
|
||||
}
|
||||
}
|
||||
|
||||
repo.Units = newRepoUnits
|
||||
return nil
|
||||
}
|
||||
|
||||
// EnableUnit if this repository enabled some unit
|
||||
|
@ -1595,6 +1648,7 @@ func DeleteRepository(uid, repoID int64) error {
|
|||
&Release{RepoID: repoID},
|
||||
&Collaboration{RepoID: repoID},
|
||||
&PullRequest{BaseRepoID: repoID},
|
||||
&RepoUnit{RepoID: repoID},
|
||||
); err != nil {
|
||||
return fmt.Errorf("deleteBeans: %v", err)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue