Skip to content

Commit

Permalink
Handle the case when owner is nil
Browse files Browse the repository at this point in the history
  • Loading branch information
ishank011 committed Nov 3, 2021
1 parent c57eec5 commit ef7889b
Showing 1 changed file with 14 additions and 7 deletions.
21 changes: 14 additions & 7 deletions internal/http/services/owncloud/ocdav/propfind.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import (
"github.com/cs3org/reva/internal/http/services/owncloud/ocs/conversions"
"github.com/cs3org/reva/pkg/appctx"
ctxpkg "github.com/cs3org/reva/pkg/ctx"
"github.com/cs3org/reva/pkg/errtypes"
rtrace "github.com/cs3org/reva/pkg/trace"
"github.com/cs3org/reva/pkg/utils"
"github.com/rs/zerolog"
Expand Down Expand Up @@ -481,10 +482,12 @@ func (s *svc) mdToPropResponse(ctx context.Context, pf *propfindXML, md *provide
)
sublog.Debug().Interface("role", role).Str("dav-permissions", wdp).Msg("converted PermissionSet")
}

var ownerUsername, ownerDisplayName string
owner, err := s.getOwnerInfo(ctx, md.Owner)
if err != nil {
sublog.Err(err).Interface("owner", owner).Msg("error getting owner info")
return nil, err
if err == nil {
ownerUsername = owner.Username
ownerDisplayName = owner.DisplayName
}

propstatOK := propstatXML{
Expand Down Expand Up @@ -680,8 +683,8 @@ func (s *svc) mdToPropResponse(ctx context.Context, pf *propfindXML, md *provide
propstatNotFound.Prop = append(propstatNotFound.Prop, s.newProp("oc:size", ""))
}
case "owner-id": // phoenix only
if md.Owner != nil {
propstatOK.Prop = append(propstatOK.Prop, s.newProp("oc:owner-id", owner.Username))
if ownerUsername != "" {
propstatOK.Prop = append(propstatOK.Prop, s.newProp("oc:owner-id", ownerUsername))
} else {
propstatNotFound.Prop = append(propstatNotFound.Prop, s.newProp("oc:owner-id", ""))
}
Expand Down Expand Up @@ -747,8 +750,8 @@ func (s *svc) mdToPropResponse(ctx context.Context, pf *propfindXML, md *provide
propstatNotFound.Prop = append(propstatNotFound.Prop, s.newProp("oc:"+pf.Prop[i].Local, ""))
}
case "owner-display-name": // phoenix only
if md.Owner != nil {
propstatOK.Prop = append(propstatOK.Prop, s.newProp("oc:owner-display-name", owner.DisplayName))
if ownerDisplayName != "" {
propstatOK.Prop = append(propstatOK.Prop, s.newProp("oc:owner-display-name", ownerDisplayName))
} else {
propstatNotFound.Prop = append(propstatNotFound.Prop, s.newProp("oc:owner-display-name", ""))
}
Expand Down Expand Up @@ -905,6 +908,10 @@ func quoteEtag(etag string) string {
}

func (s *svc) getOwnerInfo(ctx context.Context, owner *userv1beta1.UserId) (*userv1beta1.User, error) {
if owner == nil {
return nil, errtypes.NotFound("owner is nil")
}

if isCurrentUserOwner(ctx, owner) {
return ctxpkg.ContextMustGetUser(ctx), nil
}
Expand Down

0 comments on commit ef7889b

Please sign in to comment.