Skip to content

Commit 67ef494

Browse files
labkodeishank011
andauthored
[cbox-commit-7] Revert "Populate owner data in the ocs and ocdav services (#2233)" (#3056)
This reverts commit 8dc78c6. Co-authored-by: Ishank Arora <[email protected]>
1 parent 3c18cd0 commit 67ef494

File tree

4 files changed

+23
-80
lines changed

4 files changed

+23
-80
lines changed

changelog/1.18.0_2022-02-11/ocs-user-data.md

-3
This file was deleted.

internal/http/services/owncloud/ocdav/ocdav.go

+6-11
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import (
2828
"strings"
2929
"time"
3030

31-
"github.com/ReneKroon/ttlcache/v2"
3231
gateway "github.com/cs3org/go-cs3apis/cs3/gateway/v1beta1"
3332
userpb "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1"
3433
"github.com/cs3org/reva/pkg/appctx"
@@ -117,12 +116,11 @@ func (c *Config) init() {
117116
}
118117

119118
type svc struct {
120-
c *Config
121-
webDavHandler *WebDavHandler
122-
davHandler *DavHandler
123-
favoritesManager favorite.Manager
124-
client *http.Client
125-
userIdentifierCache *ttlcache.Cache
119+
c *Config
120+
webDavHandler *WebDavHandler
121+
davHandler *DavHandler
122+
favoritesManager favorite.Manager
123+
client *http.Client
126124
}
127125

128126
func getFavoritesManager(c *Config) (favorite.Manager, error) {
@@ -154,11 +152,8 @@ func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error)
154152
rhttp.Timeout(time.Duration(conf.Timeout*int64(time.Second))),
155153
rhttp.Insecure(conf.Insecure),
156154
),
157-
favoritesManager: fm,
158-
userIdentifierCache: ttlcache.NewCache(),
155+
favoritesManager: fm,
159156
}
160-
_ = s.userIdentifierCache.SetTTL(60 * time.Second)
161-
162157
// initialize handlers and set default configs
163158
if err := s.webDavHandler.init(conf.WebdavNamespace, true); err != nil {
164159
return nil, err

internal/http/services/owncloud/ocdav/propfind.go

+16-50
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ import (
4242
"github.com/cs3org/reva/internal/http/services/owncloud/ocs/conversions"
4343
"github.com/cs3org/reva/pkg/appctx"
4444
ctxpkg "github.com/cs3org/reva/pkg/ctx"
45-
"github.com/cs3org/reva/pkg/errtypes"
4645
"github.com/cs3org/reva/pkg/publicshare"
4746
"github.com/cs3org/reva/pkg/share"
4847
rtrace "github.com/cs3org/reva/pkg/trace"
@@ -659,13 +658,6 @@ func (s *svc) mdToPropResponse(ctx context.Context, pf *propfindXML, md *provide
659658
// TODO return other properties ... but how do we put them in a namespace?
660659
} else {
661660
// otherwise return only the requested properties
662-
var ownerUsername, ownerDisplayName string
663-
owner, err := s.getOwnerInfo(ctx, md.Owner)
664-
if err == nil {
665-
ownerUsername = owner.Username
666-
ownerDisplayName = owner.DisplayName
667-
}
668-
669661
for i := range pf.Prop {
670662
switch pf.Prop[i].Space {
671663
case _nsOwncloud:
@@ -755,8 +747,14 @@ func (s *svc) mdToPropResponse(ctx context.Context, pf *propfindXML, md *provide
755747
propstatNotFound.Prop = append(propstatNotFound.Prop, s.newProp("oc:size", ""))
756748
}
757749
case "owner-id": // phoenix only
758-
if ownerUsername != "" {
759-
propstatOK.Prop = append(propstatOK.Prop, s.newProp("oc:owner-id", ownerUsername))
750+
if md.Owner != nil {
751+
if isCurrentUserOwner(ctx, md.Owner) {
752+
u := ctxpkg.ContextMustGetUser(ctx)
753+
propstatOK.Prop = append(propstatOK.Prop, s.newProp("oc:owner-id", u.Username))
754+
} else {
755+
sublog.Debug().Msg("TODO fetch user username")
756+
propstatNotFound.Prop = append(propstatNotFound.Prop, s.newProp("oc:owner-id", ""))
757+
}
760758
} else {
761759
propstatNotFound.Prop = append(propstatNotFound.Prop, s.newProp("oc:owner-id", ""))
762760
}
@@ -838,8 +836,14 @@ func (s *svc) mdToPropResponse(ctx context.Context, pf *propfindXML, md *provide
838836
propstatNotFound.Prop = append(propstatNotFound.Prop, s.newProp("oc:"+pf.Prop[i].Local, ""))
839837
}
840838
case "owner-display-name": // phoenix only
841-
if ownerDisplayName != "" {
842-
propstatOK.Prop = append(propstatOK.Prop, s.newProp("oc:owner-display-name", ownerDisplayName))
839+
if md.Owner != nil {
840+
if isCurrentUserOwner(ctx, md.Owner) {
841+
u := ctxpkg.ContextMustGetUser(ctx)
842+
propstatOK.Prop = append(propstatOK.Prop, s.newProp("oc:owner-display-name", u.DisplayName))
843+
} else {
844+
sublog.Debug().Msg("TODO fetch user displayname")
845+
propstatNotFound.Prop = append(propstatNotFound.Prop, s.newProp("oc:owner-display-name", ""))
846+
}
843847
} else {
844848
propstatNotFound.Prop = append(propstatNotFound.Prop, s.newProp("oc:owner-display-name", ""))
845849
}
@@ -1013,44 +1017,6 @@ func quoteEtag(etag string) string {
10131017
return `"` + strings.Trim(etag, `"`) + `"`
10141018
}
10151019

1016-
func (s *svc) getOwnerInfo(ctx context.Context, owner *userv1beta1.UserId) (*userv1beta1.User, error) {
1017-
if owner == nil {
1018-
return nil, errtypes.NotFound("owner is nil")
1019-
}
1020-
1021-
if isCurrentUserOwner(ctx, owner) {
1022-
return ctxpkg.ContextMustGetUser(ctx), nil
1023-
}
1024-
1025-
log := appctx.GetLogger(ctx)
1026-
if idIf, err := s.userIdentifierCache.Get(owner.OpaqueId); err == nil {
1027-
log.Debug().Msg("cache hit")
1028-
return idIf.(*userv1beta1.User), nil
1029-
}
1030-
1031-
client, err := s.getClient()
1032-
if err != nil {
1033-
log.Error().Err(err).Msg("error getting grpc client")
1034-
return nil, err
1035-
}
1036-
1037-
res, err := client.GetUser(ctx, &userv1beta1.GetUserRequest{UserId: owner})
1038-
if err != nil {
1039-
log.Err(err).Msg("could not look up user")
1040-
return nil, err
1041-
}
1042-
if res.GetStatus().GetCode() != rpc.Code_CODE_OK {
1043-
log.Err(err).Msg("get user call failed")
1044-
return nil, err
1045-
}
1046-
if res.User == nil {
1047-
log.Debug().Msg("user not found")
1048-
return nil, err
1049-
}
1050-
_ = s.userIdentifierCache.Set(owner.OpaqueId, res.User)
1051-
return res.User, nil
1052-
}
1053-
10541020
// a file is only yours if you are the owner
10551021
func isCurrentUserOwner(ctx context.Context, owner *userv1beta1.UserId) bool {
10561022
contextUser, ok := ctxpkg.ContextGetUser(ctx)

internal/http/services/owncloud/ocs/handlers/cloud/users/users.go

+1-16
Original file line numberDiff line numberDiff line change
@@ -49,22 +49,7 @@ func (h *Handler) Init(c *config.Config) {
4949
// GetGroups handles GET requests on /cloud/users/groups
5050
// TODO: implement
5151
func (h *Handler) GetGroups(w http.ResponseWriter, r *http.Request) {
52-
ctx := r.Context()
53-
54-
user := chi.URLParam(r, "userid")
55-
// FIXME use ldap to fetch user info
56-
u, ok := ctxpkg.ContextGetUser(ctx)
57-
if !ok {
58-
response.WriteOCSError(w, r, response.MetaServerError.StatusCode, "missing user in context", fmt.Errorf("missing user in context"))
59-
return
60-
}
61-
if user != u.Username {
62-
// FIXME allow fetching other users info? only for admins
63-
response.WriteOCSError(w, r, http.StatusForbidden, "user id mismatch", fmt.Errorf("%s tried to access %s user info endpoint", u.Id.OpaqueId, user))
64-
return
65-
}
66-
67-
response.WriteOCSSuccess(w, r, &Groups{Groups: u.Groups})
52+
response.WriteOCSSuccess(w, r, &Groups{})
6853
}
6954

7055
// Quota holds quota information

0 commit comments

Comments
 (0)