diff --git a/pkg/services/object/search/exec.go b/pkg/services/object/search/exec.go index a1737b521..8cc9a9a26 100644 --- a/pkg/services/object/search/exec.go +++ b/pkg/services/object/search/exec.go @@ -119,6 +119,7 @@ func (exec *execCtx) generateTraverser(cnr cid.ID) (*placement.Traverser, bool) } func (exec *execCtx) writeIDList(ids []oid.ID) { + ids = exec.filterAllowedObjectIDs(ids) err := exec.prm.writer.WriteIDs(ids) switch { @@ -134,3 +135,17 @@ func (exec *execCtx) writeIDList(ids []oid.ID) { exec.err = nil } } + +func (exec *execCtx) filterAllowedObjectIDs(objIDs []oid.ID) []oid.ID { + sessionToken := exec.prm.common.SessionToken() + if sessionToken == nil { + return objIDs + } + result := make([]oid.ID, 0, len(objIDs)) + for _, objID := range objIDs { + if sessionToken.AssertObject(objID) { + result = append(result, objID) + } + } + return result +}