[server][api] /fs/share

This commit is contained in:
Abhishek Shroff
2024-11-10 15:28:40 +05:30
parent f4c631d2f2
commit 26f5e4d2b4
2 changed files with 40 additions and 0 deletions

View File

@@ -22,5 +22,6 @@ func SetupRoutes(r *gin.RouterGroup) {
group.POST("/mv/:id", handleMvRequest)
group.POST("/cp/:id", handleCpRequest)
group.DELETE("/rm/:id", handleRmRequest)
group.POST("/share/:id", handleShareRequest)
group.PUT("/upload/:id", handleUploadRequest)
}

View File

@@ -0,0 +1,39 @@
package fs
import (
"github.com/gin-gonic/gin"
"github.com/google/uuid"
"github.com/shroff/phylum/server/internal/api/auth"
"github.com/shroff/phylum/server/internal/core/fs"
)
type shareParams struct {
Username string `json:"username" binding:"required"`
Permissions fs.Permission `json:"permission" binding:"required"`
}
func handleShareRequest(c *gin.Context) {
var params shareParams
err := c.ShouldBindJSON(&params)
if err != nil || params.Username == "" {
panic(errInvalidParams)
}
resourceID, err := uuid.Parse(c.Param("id"))
if err != nil {
panic(errResourceIDInvalid)
}
fs := auth.GetFileSystem(c)
r, err := fs.ResourceByID(resourceID)
if err != nil {
panic(err)
}
r, err = r.UpdatePermissions(params.Username, params.Permissions)
if err != nil {
panic(err)
}
c.JSON(200, r.Info)
}