From 8715816664e1a5218d45e8dfd02275c83d2a7379 Mon Sep 17 00:00:00 2001 From: ychao_1983 Date: Thu, 1 Sep 2022 10:37:38 +0800 Subject: [PATCH] fix-2834 --- models/dataset.go | 10 +++------- models/repo_collaboration.go | 14 ++++++++++++++ routers/repo/dataset.go | 9 ++------- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/models/dataset.go b/models/dataset.go index 22a20e328..4cff4d6d1 100755 --- a/models/dataset.go +++ b/models/dataset.go @@ -130,15 +130,11 @@ func (datasets DatasetList) loadAttachmentAttributes(opts *SearchDatasetOptions) permission = false datasets[i].Repo.GetOwner() - if datasets[i].Repo.Owner.IsOrganization() { - if datasets[i].Repo.Owner.IsUserPartOfOrg(opts.User.ID) { - log.Info("user is member of org.") - permission = true - } - } if !permission { isCollaborator, _ := datasets[i].Repo.IsCollaborator(opts.User.ID) - if isCollaborator ||datasets[i].Repo.IsOwnedBy(opts.User.ID){ + isInRepoTeam,_:=datasets[i].Repo.IsInRepoTeam(opts.User.ID) + + if isCollaborator ||isInRepoTeam { log.Info("Collaborator user may visit the attach.") permission = true } diff --git a/models/repo_collaboration.go b/models/repo_collaboration.go index bc71ad379..f0df0b2ec 100644 --- a/models/repo_collaboration.go +++ b/models/repo_collaboration.go @@ -130,6 +130,20 @@ func (repo *Repository) IsCollaborator(userID int64) (bool, error) { return repo.isCollaborator(x, userID) } +func (repo *Repository) IsInRepoTeam(userID int64) (bool, error) { + teams,err:=repo.GetRepoTeams() + if err!=nil || len(teams)==0{ + return false,err + } + for _,team :=range teams{ + if team.IsMember(userID){ + return true,nil + } + } + return false,nil + +} + func (repo *Repository) changeCollaborationAccessMode(e Engine, uid int64, mode AccessMode) error { // Discard invalid input if mode <= AccessModeNone || mode > AccessModeOwner { diff --git a/routers/repo/dataset.go b/routers/repo/dataset.go index d65a9f2aa..f0e41024b 100755 --- a/routers/repo/dataset.go +++ b/routers/repo/dataset.go @@ -45,15 +45,10 @@ func newFilterPrivateAttachments(ctx *context.Context, list []*models.Attachment repo.GetOwner() } permission := false - if repo.Owner.IsOrganization() && ctx.User != nil { - if repo.Owner.IsUserPartOfOrg(ctx.User.ID) { - log.Info("user is member of org.") - permission = true - } - } if !permission && ctx.User != nil { isCollaborator, _ := repo.IsCollaborator(ctx.User.ID) - if isCollaborator { + isInRepoTeam,_:=repo.IsInRepoTeam(ctx.User.ID) + if isCollaborator ||isInRepoTeam { log.Info("Collaborator user may visit the attach.") permission = true }