mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Only serve attachments when linked to issue/release and if accessible by user (#9340)
* test: add current attachement responses * refactor: check if attachement is linked and accessible by user * chore: clean TODO * fix: typo attachement -> attachment * revert un-needed go.sum change * refactor: move models logic to models * fix TestCreateIssueAttachment which was wrongly successful * fix unit tests with unittype added * fix unit tests with changes * use a valid uuid format for pgsql int. test * test: add unit test TestLinkedRepository * refactor: allow uploader to access unlinked attachement * add missing blank line * refactor: move to a separate function repo.GetAttachment * typo * test: remove err test return * refactor: use repo perm for access checking generally + 404 for all reject
This commit is contained in:
		
				
					committed by
					
						 Lauris BH
						Lauris BH
					
				
			
			
				
	
			
			
			
						parent
						
							6a5a2f493a
						
					
				
				
					commit
					8b24073713
				
			| @@ -8,7 +8,6 @@ import ( | ||||
| 	"bytes" | ||||
| 	"encoding/gob" | ||||
| 	"net/http" | ||||
| 	"os" | ||||
| 	"path" | ||||
| 	"text/template" | ||||
| 	"time" | ||||
| @@ -474,34 +473,7 @@ func RegisterRoutes(m *macaron.Macaron) { | ||||
| 			m.Get("/following", user.Following) | ||||
| 		}) | ||||
|  | ||||
| 		m.Get("/attachments/:uuid", func(ctx *context.Context) { | ||||
| 			attach, err := models.GetAttachmentByUUID(ctx.Params(":uuid")) | ||||
| 			if err != nil { | ||||
| 				if models.IsErrAttachmentNotExist(err) { | ||||
| 					ctx.Error(404) | ||||
| 				} else { | ||||
| 					ctx.ServerError("GetAttachmentByUUID", err) | ||||
| 				} | ||||
| 				return | ||||
| 			} | ||||
|  | ||||
| 			fr, err := os.Open(attach.LocalPath()) | ||||
| 			if err != nil { | ||||
| 				ctx.ServerError("Open", err) | ||||
| 				return | ||||
| 			} | ||||
| 			defer fr.Close() | ||||
|  | ||||
| 			if err := attach.IncreaseDownloadCount(); err != nil { | ||||
| 				ctx.ServerError("Update", err) | ||||
| 				return | ||||
| 			} | ||||
|  | ||||
| 			if err = repo.ServeData(ctx, attach.Name, fr); err != nil { | ||||
| 				ctx.ServerError("ServeData", err) | ||||
| 				return | ||||
| 			} | ||||
| 		}) | ||||
| 		m.Get("/attachments/:uuid", repo.GetAttachment) | ||||
| 	}, ignSignIn) | ||||
|  | ||||
| 	m.Group("/attachments", func() { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user