|
|
@@ -141,7 +141,7 @@ func DeleteAttachment(ctx *context.Context) { |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func DownloadUserIsOrg(ctx *context.Context, attach *models.Attachment) bool { |
|
|
|
func DownloadUserIsOrgOrCollaboration(ctx *context.Context, attach *models.Attachment) bool { |
|
|
|
dataset, err := models.GetDatasetByID(attach.DatasetID) |
|
|
|
if err != nil { |
|
|
|
log.Info("query dataset error") |
|
|
@@ -154,10 +154,15 @@ func DownloadUserIsOrg(ctx *context.Context, attach *models.Attachment) bool { |
|
|
|
if repo.Owner.IsOrganization() { |
|
|
|
//log.Info("ower is org.") |
|
|
|
if repo.Owner.IsUserPartOfOrg(ctx.User.ID) { |
|
|
|
log.Info("user may visit the attach.") |
|
|
|
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 |
|
|
@@ -190,7 +195,7 @@ func GetAttachment(ctx *context.Context) { |
|
|
|
|
|
|
|
if repository == nil { //If not linked |
|
|
|
//if !(ctx.IsSigned && attach.UploaderID == ctx.User.ID) && attach.IsPrivate { //We block if not the uploader |
|
|
|
if !(ctx.IsSigned && attach.UploaderID == ctx.User.ID) && !DownloadUserIsOrg(ctx, attach) { //We block if not the uploader |
|
|
|
if !(ctx.IsSigned && attach.UploaderID == ctx.User.ID) && !DownloadUserIsOrgOrCollaboration(ctx, attach) { //We block if not the uploader |
|
|
|
ctx.Error(http.StatusNotFound) |
|
|
|
return |
|
|
|
} |
|
|
|