diff --git a/modules/repofiles/content.go b/modules/repofiles/content.go index aed98c33a..838bfabdc 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 d409a2848..02a7de9b5 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,