|
@@ -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
|
|
}
|
|
}
|
|
|
|
|