| @@ -88,6 +88,11 @@ func maxAccessMode(modes ...AccessMode) AccessMode { | |||||
| return max | return max | ||||
| } | } | ||||
| func (repo *Repository) recalculateTeamAccesses(e Engine, mode AccessMode) error { | |||||
| return nil | |||||
| } | |||||
| func (repo *Repository) recalculateAccesses(e Engine) error { | func (repo *Repository) recalculateAccesses(e Engine) error { | ||||
| accessMap := make(map[int64]AccessMode, 20) | accessMap := make(map[int64]AccessMode, 20) | ||||
| @@ -111,6 +116,8 @@ func (repo *Repository) recalculateAccesses(e Engine) error { | |||||
| for _, team := range repo.Owner.Teams { | for _, team := range repo.Owner.Teams { | ||||
| if !(team.IsOwnerTeam() || team.HasRepository(repo)) { | if !(team.IsOwnerTeam() || team.HasRepository(repo)) { | ||||
| continue | continue | ||||
| } else if team.IsOwnerTeam() { | |||||
| team.Authorize = ACCESS_MODE_OWNER | |||||
| } | } | ||||
| if err = team.getMembers(e); err != nil { | if err = team.getMembers(e); err != nil { | ||||
| @@ -129,22 +136,20 @@ func (repo *Repository) recalculateAccesses(e Engine) error { | |||||
| newAccesses := make([]Access, 0, len(accessMap)) | newAccesses := make([]Access, 0, len(accessMap)) | ||||
| for userID, mode := range accessMap { | for userID, mode := range accessMap { | ||||
| if userID == repo.OwnerId || mode <= minMode { | |||||
| if mode < minMode { | |||||
| continue | continue | ||||
| } | } | ||||
| newAccesses = append(newAccesses, Access{ | newAccesses = append(newAccesses, Access{ | ||||
| UserID: userID, | UserID: userID, | ||||
| RepoID: repo.Id, | RepoID: repo.Id, | ||||
| Mode: mode}) | |||||
| Mode: mode, | |||||
| }) | |||||
| } | } | ||||
| // Delete old accesses for repository | |||||
| // Delete old accesses and insert new ones for repository. | |||||
| if _, err = e.Delete(&Access{RepoID: repo.Id}); err != nil { | if _, err = e.Delete(&Access{RepoID: repo.Id}); err != nil { | ||||
| return err | return err | ||||
| } | |||||
| // And insert the new ones | |||||
| if _, err = e.Insert(newAccesses); err != nil { | |||||
| } else if _, err = e.Insert(newAccesses); err != nil { | |||||
| return err | return err | ||||
| } | } | ||||