aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--models/repo_permission.go9
-rw-r--r--models/repo_permission_test.go11
-rw-r--r--routers/org/teams.go2
3 files changed, 20 insertions, 2 deletions
diff --git a/models/repo_permission.go b/models/repo_permission.go
index 9dd7cc559d..418cd77f2d 100644
--- a/models/repo_permission.go
+++ b/models/repo_permission.go
@@ -151,6 +151,15 @@ func getUserRepoPermission(e Engine, repo *Repository, user *User) (perm Permiss
return
}
+ // if user in an owner team
+ for _, team := range teams {
+ if team.Authorize >= AccessModeOwner {
+ perm.AccessMode = AccessModeOwner
+ perm.UnitsMode = nil
+ return
+ }
+ }
+
for _, u := range repo.Units {
var found bool
for _, team := range teams {
diff --git a/models/repo_permission_test.go b/models/repo_permission_test.go
index fd55ae5e52..0f350e62aa 100644
--- a/models/repo_permission_test.go
+++ b/models/repo_permission_test.go
@@ -219,6 +219,17 @@ func TestRepoPermissionPrivateOrgRepo(t *testing.T) {
assert.True(t, perm.CanWrite(unit.Type))
}
+ // update team information and then check permission
+ team := AssertExistsAndLoadBean(t, &Team{ID: 5}).(*Team)
+ err = UpdateTeamUnits(team, nil)
+ assert.NoError(t, err)
+ perm, err = GetUserRepoPermission(repo, owner)
+ assert.NoError(t, err)
+ for _, unit := range repo.Units {
+ assert.True(t, perm.CanRead(unit.Type))
+ assert.True(t, perm.CanWrite(unit.Type))
+ }
+
// org member team tester
tester := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User)
perm, err = GetUserRepoPermission(repo, tester)
diff --git a/routers/org/teams.go b/routers/org/teams.go
index 80309dff44..1c09737997 100644
--- a/routers/org/teams.go
+++ b/routers/org/teams.go
@@ -288,8 +288,6 @@ func EditTeamPost(ctx *context.Context, form auth.CreateTeamForm) {
})
}
models.UpdateTeamUnits(t, units)
- } else {
- models.UpdateTeamUnits(t, nil)
}
if ctx.HasError() {