From be09a0f60f959ea908de7b6ac7495fc3e3dc4029 Mon Sep 17 00:00:00 2001 From: Mickael Kerjean Date: Thu, 16 Sep 2021 23:21:36 +1000 Subject: [PATCH] fix (access): UI should show/hide according to plugin meta --- server/ctrl/files.go | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/server/ctrl/files.go b/server/ctrl/files.go index 37715935..29bffbfd 100644 --- a/server/ctrl/files.go +++ b/server/ctrl/files.go @@ -285,15 +285,33 @@ func FileCat(ctx App, res http.ResponseWriter, req *http.Request) { } func FileAccess(ctx App, res http.ResponseWriter, req *http.Request) { + path, err := PathBuilder(ctx, req.URL.Query().Get("path")) + if err != nil { + Log.Debug("access::path '%s'", err.Error()) + SendErrorResult(res, err) + return + } + var perms Metadata = Metadata{} + if obj, ok := ctx.Backend.(interface{ Meta(path string) Metadata }); ok { + perms = obj.Meta(path) + } + allowed := []string{} if model.CanRead(&ctx) { - allowed = append(allowed, "GET") + if perms.CanSee == nil || *perms.CanSee == true { + allowed = append(allowed, "GET") + } } if model.CanEdit(&ctx) { - allowed = append(allowed, "PUT") + if (perms.CanCreateFile == nil || *perms.CanCreateFile == true) && + (perms.CanCreateDirectory == nil || *perms.CanCreateDirectory == true) { + allowed = append(allowed, "PUT") + } } if model.CanUpload(&ctx) { - allowed = append(allowed, "POST") + if perms.CanUpload == nil || *perms.CanUpload == true { + allowed = append(allowed, "POST") + } } header := res.Header() header.Set("Allow", strings.Join(allowed, ", "))