diff options
Diffstat (limited to 'models/org.go')
-rw-r--r-- | models/org.go | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/models/org.go b/models/org.go index ce50670582..31db8e3643 100644 --- a/models/org.go +++ b/models/org.go @@ -507,7 +507,7 @@ func (t *Team) AddRepository(repo *Repository) (err error) { mode := AuthorizeToAccessType(t.Authorize) for _, u := range t.Members { - auth, err := GetHighestAuthorize(t.OrgId, u.Id, t.Id, repo.Id) + auth, err := GetHighestAuthorize(t.OrgId, u.Id, repo.Id, t.Id) if err != nil { sess.Rollback() return err @@ -517,13 +517,7 @@ func (t *Team) AddRepository(repo *Repository) (err error) { UserName: u.LowerName, RepoName: path.Join(repo.Owner.LowerName, repo.LowerName), } - if auth == 0 { - access.Mode = mode - if _, err = sess.Insert(access); err != nil { - sess.Rollback() - return fmt.Errorf("fail to insert access: %v", err) - } - } else if auth < t.Authorize { + if auth < t.Authorize { if err = addAccessWithAuthorize(sess, access, mode); err != nil { sess.Rollback() return err @@ -570,7 +564,7 @@ func (t *Team) RemoveRepository(repoId int64) error { // Remove access to team members. for _, u := range t.Members { - auth, err := GetHighestAuthorize(t.OrgId, u.Id, t.Id, repo.Id) + auth, err := GetHighestAuthorize(t.OrgId, u.Id, repo.Id, t.Id) if err != nil { sess.Rollback() return err @@ -668,7 +662,7 @@ func GetTeamById(teamId int64) (*Team, error) { } // GetHighestAuthorize returns highest repository authorize level for given user and team. -func GetHighestAuthorize(orgId, uid, teamId, repoId int64) (AuthorizeType, error) { +func GetHighestAuthorize(orgId, uid, repoId, teamId int64) (AuthorizeType, error) { ts, err := GetUserTeams(orgId, uid) if err != nil { return 0, err @@ -687,6 +681,7 @@ func GetHighestAuthorize(orgId, uid, teamId, repoId int64) (AuthorizeType, error } } } + return auth, nil } @@ -728,7 +723,7 @@ func UpdateTeam(t *Team, authChanged bool) (err error) { // ORG_WRITABLE is the highest authorize level for now. // Skip checking others if current team has this level. if t.Authorize < ORG_WRITABLE { - auth, err := GetHighestAuthorize(org.Id, u.Id, t.Id, repo.Id) + auth, err := GetHighestAuthorize(t.OrgId, u.Id, repo.Id, t.Id) if err != nil { sess.Rollback() return err @@ -782,7 +777,7 @@ func DeleteTeam(t *Team) error { // Delete all accesses. for _, repo := range t.Repos { for _, u := range t.Members { - auth, err := GetHighestAuthorize(org.Id, u.Id, t.Id, repo.Id) + auth, err := GetHighestAuthorize(t.OrgId, u.Id, repo.Id, t.Id) if err != nil { sess.Rollback() return err @@ -943,7 +938,7 @@ func AddTeamMember(orgId, teamId, uid int64) error { // Give access to team repositories. mode := AuthorizeToAccessType(t.Authorize) for _, repo := range t.Repos { - auth, err := GetHighestAuthorize(orgId, uid, teamId, repo.Id) + auth, err := GetHighestAuthorize(t.OrgId, u.Id, repo.Id, teamId) if err != nil { sess.Rollback() return err @@ -953,14 +948,7 @@ func AddTeamMember(orgId, teamId, uid int64) error { UserName: u.LowerName, RepoName: path.Join(org.LowerName, repo.LowerName), } - // Equal 0 means given access doesn't exist. - if auth == 0 { - access.Mode = mode - if _, err = sess.Insert(access); err != nil { - sess.Rollback() - return fmt.Errorf("fail to insert access: %v", err) - } - } else if auth < t.Authorize { + if auth < t.Authorize { if err = addAccessWithAuthorize(sess, access, mode); err != nil { sess.Rollback() return err @@ -1037,7 +1025,7 @@ func removeTeamMemberWithSess(orgId, teamId, uid int64, sess *xorm.Session) erro // Delete access to team repositories. for _, repo := range t.Repos { - auth, err := GetHighestAuthorize(orgId, uid, teamId, repo.Id) + auth, err := GetHighestAuthorize(t.OrgId, u.Id, repo.Id, teamId) if err != nil { sess.Rollback() return err |