Skip to content

Commit

Permalink
return correct error after assemblepermissions
Browse files Browse the repository at this point in the history
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
  • Loading branch information
butonic committed Jun 15, 2023
1 parent c3eeab9 commit 44de413
Show file tree
Hide file tree
Showing 8 changed files with 32 additions and 34 deletions.
28 changes: 14 additions & 14 deletions pkg/storage/utils/decomposedfs/decomposedfs.go
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,7 @@ func (fs *Decomposedfs) GetQuota(ctx context.Context, ref *provider.Reference) (
rp, err := fs.p.AssemblePermissions(ctx, n)
switch {
case err != nil:
return 0, 0, 0, errtypes.InternalError(err.Error())
return 0, 0, 0, err
case !rp.GetQuota && !fs.p.ListAllSpaces(ctx):
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand Down Expand Up @@ -534,7 +534,7 @@ func (fs *Decomposedfs) GetPathByID(ctx context.Context, id *provider.ResourceId
rp, err := fs.p.AssemblePermissions(ctx, n)
switch {
case err != nil:
return "", errtypes.InternalError(err.Error())
return "", err
case !rp.GetPath:
f := storagespace.FormatResourceID(*id)
if rp.Stat {
Expand Down Expand Up @@ -581,7 +581,7 @@ func (fs *Decomposedfs) CreateDir(ctx context.Context, ref *provider.Reference)
rp, err := fs.p.AssemblePermissions(ctx, n)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !rp.CreateContainer:
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand Down Expand Up @@ -637,7 +637,7 @@ func (fs *Decomposedfs) TouchFile(ctx context.Context, ref *provider.Reference,
rp, err := fs.p.AssemblePermissions(ctx, n)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !rp.InitiateFileUpload:
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand Down Expand Up @@ -680,7 +680,7 @@ func (fs *Decomposedfs) Move(ctx context.Context, oldRef, newRef *provider.Refer
rp, err := fs.p.AssemblePermissions(ctx, oldNode)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !rp.Move:
f, _ := storagespace.FormatReference(oldRef)
if rp.Stat {
Expand All @@ -700,7 +700,7 @@ func (fs *Decomposedfs) Move(ctx context.Context, oldRef, newRef *provider.Refer
rp, err = fs.p.AssemblePermissions(ctx, newNode)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case oldNode.IsDir() && !rp.CreateContainer:
f, _ := storagespace.FormatReference(newRef)
if rp.Stat {
Expand Down Expand Up @@ -746,7 +746,7 @@ func (fs *Decomposedfs) GetMD(ctx context.Context, ref *provider.Reference, mdKe
rp, err := fs.p.AssemblePermissions(ctx, node)
switch {
case err != nil:
return nil, errtypes.InternalError(err.Error())
return nil, err
case !rp.Stat:
f, _ := storagespace.FormatReference(ref)
return nil, errtypes.NotFound(f)
Expand Down Expand Up @@ -790,7 +790,7 @@ func (fs *Decomposedfs) ListFolder(ctx context.Context, ref *provider.Reference,
rp, err := fs.p.AssemblePermissions(ctx, n)
switch {
case err != nil:
return nil, errtypes.InternalError(err.Error())
return nil, err
case !rp.ListContainer:
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand Down Expand Up @@ -881,7 +881,7 @@ func (fs *Decomposedfs) Delete(ctx context.Context, ref *provider.Reference) (er
rp, err := fs.p.AssemblePermissions(ctx, node)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !rp.Delete:
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand Down Expand Up @@ -921,7 +921,7 @@ func (fs *Decomposedfs) Download(ctx context.Context, ref *provider.Reference) (
rp, err := fs.p.AssemblePermissions(ctx, node)
switch {
case err != nil:
return nil, errtypes.InternalError(err.Error())
return nil, err
case !rp.InitiateFileDownload:
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand Down Expand Up @@ -952,7 +952,7 @@ func (fs *Decomposedfs) GetLock(ctx context.Context, ref *provider.Reference) (*
rp, err := fs.p.AssemblePermissions(ctx, node)
switch {
case err != nil:
return nil, errtypes.InternalError(err.Error())
return nil, err
case !rp.InitiateFileDownload:
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand All @@ -978,7 +978,7 @@ func (fs *Decomposedfs) SetLock(ctx context.Context, ref *provider.Reference, lo
rp, err := fs.p.AssemblePermissions(ctx, node)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !rp.InitiateFileUpload:
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand Down Expand Up @@ -1008,7 +1008,7 @@ func (fs *Decomposedfs) RefreshLock(ctx context.Context, ref *provider.Reference
rp, err := fs.p.AssemblePermissions(ctx, node)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !rp.InitiateFileUpload:
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand Down Expand Up @@ -1038,7 +1038,7 @@ func (fs *Decomposedfs) Unlock(ctx context.Context, ref *provider.Reference, loc
rp, err := fs.p.AssemblePermissions(ctx, node)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !rp.InitiateFileUpload: // TODO do we need a dedicated permission?
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand Down
10 changes: 5 additions & 5 deletions pkg/storage/utils/decomposedfs/grants.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ func (fs *Decomposedfs) DenyGrant(ctx context.Context, ref *provider.Reference,

switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !rp.DenyGrant:
return errtypes.PermissionDenied(filepath.Join(grantNode.ParentID, grantNode.Name))
}
Expand Down Expand Up @@ -102,7 +102,7 @@ func (fs *Decomposedfs) AddGrant(ctx context.Context, ref *provider.Reference, g
rp, err := fs.p.AssemblePermissions(ctx, grantNode)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !rp.AddGrant:
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand All @@ -128,7 +128,7 @@ func (fs *Decomposedfs) ListGrants(ctx context.Context, ref *provider.Reference)
rp, err := fs.p.AssemblePermissions(ctx, grantNode)
switch {
case err != nil:
return nil, errtypes.InternalError(err.Error())
return nil, err
case !rp.ListGrants && !rp.Stat:
f, _ := storagespace.FormatReference(ref)
return nil, errtypes.NotFound(f)
Expand Down Expand Up @@ -186,7 +186,7 @@ func (fs *Decomposedfs) RemoveGrant(ctx context.Context, ref *provider.Reference
rp, err := fs.p.AssemblePermissions(ctx, grantNode)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !rp.RemoveGrant:
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand Down Expand Up @@ -262,7 +262,7 @@ func (fs *Decomposedfs) UpdateGrant(ctx context.Context, ref *provider.Reference
rp, err := fs.p.AssemblePermissions(ctx, grantNode)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !rp.UpdateGrant:
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand Down
4 changes: 2 additions & 2 deletions pkg/storage/utils/decomposedfs/metadata.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ func (fs *Decomposedfs) SetArbitraryMetadata(ctx context.Context, ref *provider.
rp, err := fs.p.AssemblePermissions(ctx, n)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !rp.InitiateFileUpload: // TODO add explicit SetArbitraryMetadata grant to CS3 api, tracked in https://github.com/cs3org/cs3apis/issues/91
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand Down Expand Up @@ -145,7 +145,7 @@ func (fs *Decomposedfs) UnsetArbitraryMetadata(ctx context.Context, ref *provide
rp, err := fs.p.AssemblePermissions(ctx, n)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !rp.InitiateFileUpload: // TODO use SetArbitraryMetadata grant to CS3 api, tracked in https://github.com/cs3org/cs3apis/issues/91
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand Down
2 changes: 0 additions & 2 deletions pkg/storage/utils/decomposedfs/node/permissions.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,7 @@ func (p *Permissions) AssemblePermissions(ctx context.Context, n *Node) (ap prov

// determine root
rn := n.SpaceRoot

cn := n

ap = provider.ResourcePermissions{}

// for an efficient group lookup convert the list of groups to a map
Expand Down
8 changes: 4 additions & 4 deletions pkg/storage/utils/decomposedfs/recycle.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ func (fs *Decomposedfs) ListRecycle(ctx context.Context, ref *provider.Reference
rp, err := fs.p.AssemblePermissions(ctx, trashnode)
switch {
case err != nil:
return nil, errtypes.InternalError(err.Error())
return nil, err
case !rp.ListRecycle:
if rp.Stat {
return nil, errtypes.PermissionDenied(key)
Expand Down Expand Up @@ -303,7 +303,7 @@ func (fs *Decomposedfs) RestoreRecycleItem(ctx context.Context, ref *provider.Re
rp, err := fs.p.AssemblePermissions(ctx, rn)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !rp.RestoreRecycleItem:
if rp.Stat {
return errtypes.PermissionDenied(key)
Expand All @@ -318,7 +318,7 @@ func (fs *Decomposedfs) RestoreRecycleItem(ctx context.Context, ref *provider.Re
pp, err := fs.p.AssemblePermissions(ctx, parent)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !pp.InitiateFileUpload:
// share receiver cannot restore to a shared resource to which she does not have write permissions.
if rp.Stat {
Expand Down Expand Up @@ -349,7 +349,7 @@ func (fs *Decomposedfs) PurgeRecycleItem(ctx context.Context, ref *provider.Refe
rp, err := fs.p.AssemblePermissions(ctx, rn)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !rp.PurgeRecycle:
if rp.Stat {
return errtypes.PermissionDenied(key)
Expand Down
8 changes: 4 additions & 4 deletions pkg/storage/utils/decomposedfs/revisions.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func (fs *Decomposedfs) ListRevisions(ctx context.Context, ref *provider.Referen
rp, err := fs.p.AssemblePermissions(ctx, n)
switch {
case err != nil:
return nil, errtypes.InternalError(err.Error())
return nil, err
case !rp.ListFileVersions:
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand Down Expand Up @@ -136,7 +136,7 @@ func (fs *Decomposedfs) DownloadRevision(ctx context.Context, ref *provider.Refe
rp, err := fs.p.AssemblePermissions(ctx, n)
switch {
case err != nil:
return nil, errtypes.InternalError(err.Error())
return nil, err
case !rp.ListFileVersions || !rp.InitiateFileDownload: // TODO add explicit permission in the CS3 api?
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand Down Expand Up @@ -190,7 +190,7 @@ func (fs *Decomposedfs) RestoreRevision(ctx context.Context, ref *provider.Refer
rp, err := fs.p.AssemblePermissions(ctx, n)
switch {
case err != nil:
return errtypes.InternalError(err.Error())
return err
case !rp.RestoreFileVersion:
f, _ := storagespace.FormatReference(ref)
if rp.Stat {
Expand Down Expand Up @@ -327,7 +327,7 @@ func (fs *Decomposedfs) getRevisionNode(ctx context.Context, ref *provider.Refer
p, err := fs.p.AssemblePermissions(ctx, n)
switch {
case err != nil:
return nil, errtypes.InternalError(err.Error())
return nil, err
case !hasPermission(&p):
return nil, errtypes.PermissionDenied(filepath.Join(n.ParentID, n.Name))
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/storage/utils/decomposedfs/spaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -554,7 +554,7 @@ func (fs *Decomposedfs) UpdateStorageSpace(ctx context.Context, req *provider.Up
sp, err := fs.p.AssemblePermissions(ctx, spaceNode)
if err != nil {
return &provider.UpdateStorageSpaceResponse{
Status: &v1beta11.Status{Code: v1beta11.Code_CODE_INVALID, Message: err.Error()},
Status: status.NewStatusFromErrType(ctx, "assembling permissions failed", err),
}, nil

}
Expand Down Expand Up @@ -793,7 +793,7 @@ func (fs *Decomposedfs) storageSpaceFromNode(ctx context.Context, n *node.Node,
rp, err := fs.p.AssemblePermissions(ctx, n)
switch {
case err != nil:
return nil, errtypes.InternalError(err.Error())
return nil, err
case !rp.Stat:
return nil, errtypes.NotFound(fmt.Sprintf("space %s not found", n.ID))
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/storage/utils/decomposedfs/upload/processing.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ func New(ctx context.Context, info tusd.FileInfo, lu *lookup.Lookup, tp Tree, p
rp, err := p.AssemblePermissions(ctx, checkNode)
switch {
case err != nil:
return nil, errtypes.InternalError(err.Error())
return nil, err
case !rp.InitiateFileUpload:
return nil, errtypes.PermissionDenied(path)
}
Expand Down

0 comments on commit 44de413

Please sign in to comment.