From 9f6ab8e434372528e71addb54df2760d666e4ecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 21 Apr 2021 14:11:44 +0200 Subject: [PATCH] Fix get user share as grantee in json backend (#1650) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- changelog/unreleased/fix-get-user-share-as-grantee.md | 5 +++++ pkg/share/manager/json/json.go | 11 +++++++++++ 2 files changed, 16 insertions(+) create mode 100644 changelog/unreleased/fix-get-user-share-as-grantee.md diff --git a/changelog/unreleased/fix-get-user-share-as-grantee.md b/changelog/unreleased/fix-get-user-share-as-grantee.md new file mode 100644 index 0000000000..423968bb33 --- /dev/null +++ b/changelog/unreleased/fix-get-user-share-as-grantee.md @@ -0,0 +1,5 @@ +Bugfix: Allow fetching shares as the grantee + +The json backend now allows a grantee to fetch a share by id. + +https://github.com/cs3org/reva/pull/1650 \ No newline at end of file diff --git a/pkg/share/manager/json/json.go b/pkg/share/manager/json/json.go index 48f52d6c14..12e96c661a 100644 --- a/pkg/share/manager/json/json.go +++ b/pkg/share/manager/json/json.go @@ -278,6 +278,17 @@ func (m *mgr) get(ctx context.Context, ref *collaboration.ShareReference) (s *co return s, nil } + // or the grantee + if s.Grantee.Type == provider.GranteeType_GRANTEE_TYPE_USER && utils.UserEqual(user.Id, s.Grantee.GetUserId()) { + return s, nil + } else if s.Grantee.Type == provider.GranteeType_GRANTEE_TYPE_GROUP { + // check if all user groups match this share; TODO(labkode): filter shares created by us. + for _, g := range user.Groups { + if g == s.Grantee.GetGroupId().OpaqueId { + return s, nil + } + } + } // we return not found to not disclose information return nil, errtypes.NotFound(ref.String()) }