From 4ddfe0d07acd65c25c6a301faf16f175de0e46bf Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Fri, 24 Apr 2020 18:20:22 +0200 Subject: [PATCH] Fix GetContents(): Dont't ignore Executables (#11192) * Refactor: dont expose help functions * repofiles GetContents: dont ignore executables * CI.restart() --- modules/repofiles/content.go | 2 +- routers/api/v1/repo/file.go | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/repofiles/content.go b/modules/repofiles/content.go index aed98c33a8c..838bfabdc6b 100644 --- a/modules/repofiles/content.go +++ b/modules/repofiles/content.go @@ -159,7 +159,7 @@ func GetContents(repo *models.Repository, treePath, ref string, forList bool) (* } // Now populate the rest of the ContentsResponse based on entry type - if entry.IsRegular() { + if entry.IsRegular() || entry.IsExecutable() { contentsResponse.Type = string(ContentTypeRegular) if blobResponse, err := GetBlobBySHA(repo, entry.ID.String()); err != nil { return nil, err diff --git a/routers/api/v1/repo/file.go b/routers/api/v1/repo/file.go index d409a284896..02a7de9b581 100644 --- a/routers/api/v1/repo/file.go +++ b/routers/api/v1/repo/file.go @@ -155,13 +155,13 @@ func GetEditorconfig(ctx *context.APIContext) { ctx.JSON(http.StatusOK, def) } -// CanWriteFiles returns true if repository is editable and user has proper access level. -func CanWriteFiles(r *context.Repository) bool { +// canWriteFiles returns true if repository is editable and user has proper access level. +func canWriteFiles(r *context.Repository) bool { return r.Permission.CanWrite(models.UnitTypeCode) && !r.Repository.IsMirror && !r.Repository.IsArchived } -// CanReadFiles returns true if repository is readable and user has proper access level. -func CanReadFiles(r *context.Repository) bool { +// canReadFiles returns true if repository is readable and user has proper access level. +func canReadFiles(r *context.Repository) bool { return r.Permission.CanRead(models.UnitTypeCode) } @@ -321,7 +321,7 @@ func UpdateFile(ctx *context.APIContext, apiOpts api.UpdateFileOptions) { // Called from both CreateFile or UpdateFile to handle both func createOrUpdateFile(ctx *context.APIContext, opts *repofiles.UpdateRepoFileOptions) (*api.FileResponse, error) { - if !CanWriteFiles(ctx.Repo) { + if !canWriteFiles(ctx.Repo) { return nil, models.ErrUserDoesNotHaveAccessToRepo{ UserID: ctx.User.ID, RepoName: ctx.Repo.Repository.LowerName, @@ -377,7 +377,7 @@ func DeleteFile(ctx *context.APIContext, apiOpts api.DeleteFileOptions) { // "404": // "$ref": "#/responses/error" - if !CanWriteFiles(ctx.Repo) { + if !canWriteFiles(ctx.Repo) { ctx.Error(http.StatusForbidden, "DeleteFile", models.ErrUserDoesNotHaveAccessToRepo{ UserID: ctx.User.ID, RepoName: ctx.Repo.Repository.LowerName, @@ -474,7 +474,7 @@ func GetContents(ctx *context.APIContext) { // "404": // "$ref": "#/responses/notFound" - if !CanReadFiles(ctx.Repo) { + if !canReadFiles(ctx.Repo) { ctx.Error(http.StatusInternalServerError, "GetContentsOrList", models.ErrUserDoesNotHaveAccessToRepo{ UserID: ctx.User.ID, RepoName: ctx.Repo.Repository.LowerName,