@@ -73,6 +73,13 @@ func (bh *BlobHandler) HandleDeleteObject(c echo.Context) error {
7373 return c .JSON (http .StatusUnprocessableEntity , errMsg .Error ())
7474 }
7575
76+ httpCode , err := bh .CheckUserS3Permission (c , bucket , key , []string {"write" })
77+ if err != nil {
78+ errMsg := fmt .Errorf ("error while checking for user permission: %s" , err )
79+ log .Error (errMsg .Error ())
80+ return c .JSON (httpCode , errMsg .Error ())
81+ }
82+
7683 // If the key is not a folder, proceed with deleting a single object
7784 keyExist , err := s3Ctrl .KeyExists (bucket , key )
7885 if err != nil {
@@ -103,6 +110,7 @@ func (bh *BlobHandler) HandleDeleteObject(c echo.Context) error {
103110}
104111
105112func (bh * BlobHandler ) HandleDeletePrefix (c echo.Context ) error {
113+
106114 bucket := c .QueryParam ("bucket" )
107115 s3Ctrl , err := bh .GetController (bucket )
108116 if err != nil {
@@ -119,6 +127,14 @@ func (bh *BlobHandler) HandleDeletePrefix(c echo.Context) error {
119127 if ! strings .HasSuffix (prefix , "/" ) {
120128 prefix = prefix + "/"
121129 }
130+
131+ httpCode , err := bh .CheckUserS3Permission (c , bucket , prefix , []string {"write" })
132+ if err != nil {
133+ errMsg := fmt .Errorf ("error while checking for user permission: %s" , err )
134+ log .Error (errMsg .Error ())
135+ return c .JSON (httpCode , errMsg .Error ())
136+ }
137+
122138 err = s3Ctrl .RecursivelyDeleteObjects (bucket , prefix )
123139 if err != nil {
124140 if strings .Contains (err .Error (), "prefix not found" ) {
@@ -190,7 +206,13 @@ func (bh *BlobHandler) HandleDeleteObjectsByList(c echo.Context) error {
190206 keys := make ([]string , 0 , len (deleteRequest .Keys ))
191207 for _ , p := range deleteRequest .Keys {
192208 s3Path := strings .TrimPrefix (p , "/" )
193- key := aws .String (s3Path )
209+
210+ httpCode , err := bh .CheckUserS3Permission (c , bucket , s3Path , []string {"write" })
211+ if err != nil {
212+ errMsg := fmt .Errorf ("error while checking for user permission: %s" , err )
213+ log .Error (errMsg .Error ())
214+ return c .JSON (httpCode , errMsg .Error ())
215+ }
194216
195217 // Check if the key exists before appending it to the keys list
196218 keyExists , err := s3Ctrl .KeyExists (bucket , s3Path )
@@ -205,6 +227,7 @@ func (bh *BlobHandler) HandleDeleteObjectsByList(c echo.Context) error {
205227 return c .JSON (http .StatusNotFound , errMsg .Error ())
206228 }
207229
230+ key := aws .String (s3Path )
208231 keys = append (keys , * key )
209232 }
210233
0 commit comments