summaryrefslogtreecommitdiffstats
path: root/routers/routes/routes.go
diff options
context:
space:
mode:
authorsilverwind <me@silverwind.io>2020-10-05 07:49:33 +0200
committerGitHub <noreply@github.com>2020-10-05 01:49:33 -0400
commitcda44750cbdc7a8460666a4f0ac7f652d84a3964 (patch)
tree207745d1b529a0cde5207111d23bfc07c1e0312c /routers/routes/routes.go
parent67a5573310cf23726e3c2ef4651221c6dc150075 (diff)
downloadgitea-cda44750cbdc7a8460666a4f0ac7f652d84a3964.tar.gz
gitea-cda44750cbdc7a8460666a4f0ac7f652d84a3964.zip
Attachments: Add extension support, allow all types for releases (#12465)
* Attachments: Add extension support, allow all types for releases - Add support for file extensions, matching the `accept` attribute of `<input type="file">` - Add support for type wildcard mime types, e.g. `image/*` - Create repository.release.ALLOWED_TYPES setting (default unrestricted) - Change default for attachment.ALLOWED_TYPES to a list of extensions - Split out POST /attachments into two endpoints for issue/pr and releases to prevent circumvention of allowed types check Fixes: https://github.com/go-gitea/gitea/pull/10172 Fixes: https://github.com/go-gitea/gitea/issues/7266 Fixes: https://github.com/go-gitea/gitea/pull/12460 Ref: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#Unique_file_type_specifiers * rename function * extract GET routes out of RepoMustNotBeArchived Co-authored-by: Lauris BH <lauris@nix.lv>
Diffstat (limited to 'routers/routes/routes.go')
-rw-r--r--routers/routes/routes.go19
1 files changed, 12 insertions, 7 deletions
diff --git a/routers/routes/routes.go b/routers/routes/routes.go
index f60af5dad0..97f4e5aeaf 100644
--- a/routers/routes/routes.go
+++ b/routers/routes/routes.go
@@ -512,11 +512,6 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Get("/attachments/:uuid", repo.GetAttachment)
}, ignSignIn)
- m.Group("/attachments", func() {
- m.Post("", repo.UploadAttachment)
- m.Post("/delete", repo.DeleteAttachment)
- }, reqSignIn)
-
m.Group("/:username", func() {
m.Post("/action/:action", user.Action)
}, reqSignIn)
@@ -754,8 +749,11 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Post("/reactions/:action", bindIgnErr(auth.ReactionForm{}), repo.ChangeIssueReaction)
m.Post("/lock", reqRepoIssueWriter, bindIgnErr(auth.IssueLockForm{}), repo.LockIssue)
m.Post("/unlock", reqRepoIssueWriter, repo.UnlockIssue)
- m.Get("/attachments", repo.GetIssueAttachments)
}, context.RepoMustNotBeArchived())
+ m.Group("/:index", func() {
+ m.Get("/attachments", repo.GetIssueAttachments)
+ m.Get("/attachments/:uuid", repo.GetAttachment)
+ })
m.Post("/labels", reqRepoIssuesOrPullsWriter, repo.UpdateIssueLabel)
m.Post("/milestone", reqRepoIssuesOrPullsWriter, repo.UpdateIssueMilestone)
@@ -764,13 +762,17 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Post("/request_review", reqRepoIssuesOrPullsReader, repo.UpdatePullReviewRequest)
m.Post("/status", reqRepoIssuesOrPullsWriter, repo.UpdateIssueStatus)
m.Post("/resolve_conversation", reqRepoIssuesOrPullsReader, repo.UpdateResolveConversation)
+ m.Post("/attachments", repo.UploadIssueAttachment)
+ m.Post("/attachments/remove", repo.DeleteAttachment)
}, context.RepoMustNotBeArchived())
m.Group("/comments/:id", func() {
m.Post("", repo.UpdateCommentContent)
m.Post("/delete", repo.DeleteComment)
m.Post("/reactions/:action", bindIgnErr(auth.ReactionForm{}), repo.ChangeCommentReaction)
- m.Get("/attachments", repo.GetCommentAttachments)
}, context.RepoMustNotBeArchived())
+ m.Group("/comments/:id", func() {
+ m.Get("/attachments", repo.GetCommentAttachments)
+ })
m.Group("/labels", func() {
m.Post("/new", bindIgnErr(auth.CreateLabelForm{}), repo.NewLabel)
m.Post("/edit", bindIgnErr(auth.CreateLabelForm{}), repo.UpdateLabel)
@@ -826,11 +828,14 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Get("/", repo.Releases)
m.Get("/tag/*", repo.SingleRelease)
m.Get("/latest", repo.LatestRelease)
+ m.Get("/attachments/:uuid", repo.GetAttachment)
}, repo.MustBeNotEmpty, context.RepoRefByType(context.RepoRefTag))
m.Group("/releases", func() {
m.Get("/new", repo.NewRelease)
m.Post("/new", bindIgnErr(auth.NewReleaseForm{}), repo.NewReleasePost)
m.Post("/delete", repo.DeleteRelease)
+ m.Post("/attachments", repo.UploadReleaseAttachment)
+ m.Post("/attachments/remove", repo.DeleteAttachment)
}, reqSignIn, repo.MustBeNotEmpty, context.RepoMustNotBeArchived(), reqRepoReleaseWriter, context.RepoRef())
m.Group("/releases", func() {
m.Get("/edit/*", repo.EditRelease)