This commit is contained in:
Neeraj Gupta
2025-04-12 14:55:48 +05:30
parent f2736c43c1
commit 4bd31aeea8
3 changed files with 14 additions and 17 deletions

View File

@@ -6,6 +6,7 @@ import (
"github.com/ente-io/museum/pkg/controller"
"github.com/ente-io/museum/pkg/controller/cast"
"github.com/ente-io/museum/pkg/controller/collections"
"github.com/ente-io/museum/pkg/utils/auth"
"github.com/ente-io/museum/pkg/utils/handler"
"github.com/ente-io/stacktrace"
"github.com/gin-gonic/gin"
@@ -136,7 +137,8 @@ func (h *CastHandler) getFileForType(c *gin.Context, objectType ente.ObjectType)
handler.Error(c, stacktrace.Propagate(ente.ErrBadRequest, ""))
return
}
url, err := h.FileCtrl.GetCastFileUrl(c, fileID, objectType)
castCtx := auth.GetCastCtx(c)
url, err := h.FileCtrl.GetPublicOrCastFileURL(c, fileID, objectType, castCtx.CollectionID)
if err != nil {
handler.Error(c, stacktrace.Propagate(err, ""))
return

View File

@@ -163,7 +163,8 @@ func (h *PublicCollectionHandler) getFileForType(c *gin.Context, objectType ente
handler.Error(c, stacktrace.Propagate(ente.ErrBadRequest, ""))
return
}
url, err := h.FileCtrl.GetPublicFileURL(c, fileID, objectType)
accessContext := auth.MustGetPublicAccessContext(c)
url, err := h.FileCtrl.GetPublicOrCastFileURL(c, fileID, objectType, accessContext.CollectionID)
if err != nil {
handler.Error(c, stacktrace.Propagate(err, ""))
return

View File

@@ -376,30 +376,24 @@ func (c *FileController) CleanUpStaleCollectionFiles(userID int64, fileID int64)
}
// GetPublicFileURL verifies permissions and returns a presigned url to the requested file
func (c *FileController) GetPublicFileURL(ctx *gin.Context, fileID int64, objType ente.ObjectType) (string, error) {
accessContext := auth.MustGetPublicAccessContext(ctx)
accessible, err := c.CollectionRepo.DoesFileExistInCollections(fileID, []int64{accessContext.CollectionID})
if err != nil {
// GetPublicOrCastFileURL verifies permissions and returns a presigned url to the requested file
func (c *FileController) GetPublicOrCastFileURL(ctx *gin.Context, fileID int64, objType ente.ObjectType, collectionID int64) (string, error) {
// validate that the given fileID is present in the corresponding collection for public album or cast session
if err := c.DoesFileExistInCollection(ctx, fileID, collectionID); err != nil {
return "", stacktrace.Propagate(err, "")
}
if !accessible {
return "", stacktrace.Propagate(ente.ErrPermissionDenied, "")
}
return c.getSignedURLForType(ctx, fileID, objType)
}
// GetCastFileUrl verifies permissions and returns a presigned url to the requested file
func (c *FileController) GetCastFileUrl(ctx *gin.Context, fileID int64, objType ente.ObjectType) (string, error) {
castCtx := auth.GetCastCtx(ctx)
accessible, err := c.CollectionRepo.DoesFileExistInCollections(fileID, []int64{castCtx.CollectionID})
func (c *FileController) DoesFileExistInCollection(ctx *gin.Context, fileID int64, collectionID int64) error {
accessible, err := c.CollectionRepo.DoesFileExistInCollections(fileID, []int64{collectionID})
if err != nil {
return "", stacktrace.Propagate(err, "")
return stacktrace.Propagate(err, "")
}
if !accessible {
return "", stacktrace.Propagate(ente.ErrPermissionDenied, "")
return stacktrace.Propagate(ente.ErrPermissionDenied, "")
}
return c.getSignedURLForType(ctx, fileID, objType)
return nil
}
func (c *FileController) getSignedURLForType(ctx *gin.Context, fileID int64, objType ente.ObjectType) (string, error) {