diff --git a/routers/repo/dataset.go b/routers/repo/dataset.go index baf000a5b..4c1baf740 100755 --- a/routers/repo/dataset.go +++ b/routers/repo/dataset.go @@ -469,6 +469,7 @@ func MyFavoriteDataset(ctx *context.Context) { return } for _, datasetStar := range datasetStars { + DatasetIsCollaborator := DatasetIsCollaborator(ctx, datasetStar.DatasetID) dataset, err := models.GetDatasetByID(datasetStar.DatasetID) if err != nil { return @@ -477,9 +478,7 @@ func MyFavoriteDataset(ctx *context.Context) { if err != nil { return } - isCollaborator, _ := repo.IsCollaborator(ctx.User.ID) - - if repo.OwnerID == ctx.User.ID || isCollaborator || repo.Owner.IsUserPartOfOrg(ctx.User.ID) { + if repo.OwnerID == ctx.User.ID || DatasetIsCollaborator { IsColDatasetIDs = append(IsColDatasetIDs, datasetStar.DatasetID) } else { NotColDatasetIDs = append(NotColDatasetIDs, datasetStar.DatasetID) @@ -611,3 +610,30 @@ func GetDatasetStatus(ctx *context.Context) { "AttachmentStatus": fmt.Sprint(attachment.DecompressState), }) } +func DatasetIsCollaborator(ctx *context.Context, DatasetID int64) bool { + dataset, err := models.GetDatasetByID(DatasetID) + if err != nil { + log.Info("query dataset error") + } else { + repo, err := models.GetRepositoryByID(dataset.RepoID) + if err != nil { + log.Info("query repo error.") + } else { + repo.GetOwner() + if ctx.User != nil { + if repo.Owner.IsOrganization() { + if repo.Owner.IsUserPartOfOrg(ctx.User.ID) { + log.Info("org user may visit the attach.") + return true + } + } + isCollaborator, _ := repo.IsCollaborator(ctx.User.ID) + if isCollaborator { + log.Info("Collaborator user may visit the attach.") + return true + } + } + } + } + return false +}