From 50edf91308564798bf571532c5e5556c3cae7870 Mon Sep 17 00:00:00 2001 From: Roman Perekhod Date: Wed, 8 Jan 2025 14:31:10 +0100 Subject: [PATCH] Allow to accepted invite after it was once deleted --- changelog/unreleased/ocm-accept-invite.md | 6 ++++++ .../ocminvitemanager/ocminvitemanager.go | 16 ++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 changelog/unreleased/ocm-accept-invite.md diff --git a/changelog/unreleased/ocm-accept-invite.md b/changelog/unreleased/ocm-accept-invite.md new file mode 100644 index 0000000000..3b00d44a2e --- /dev/null +++ b/changelog/unreleased/ocm-accept-invite.md @@ -0,0 +1,6 @@ +Bugfix: Allow to accepted invite after it was once deleted + +Allowed to accepted invite even after it was once deleted on the invite receiver or invite creation side. + +https://github.com/cs3org/reva/pull/5031 +https://github.com/owncloud/ocis/issues/10813 diff --git a/internal/grpc/services/ocminvitemanager/ocminvitemanager.go b/internal/grpc/services/ocminvitemanager/ocminvitemanager.go index 328cb2b75f..ec36801334 100644 --- a/internal/grpc/services/ocminvitemanager/ocminvitemanager.go +++ b/internal/grpc/services/ocminvitemanager/ocminvitemanager.go @@ -222,12 +222,14 @@ func (s *service) ForwardInvite(ctx context.Context, req *invitepb.ForwardInvite Mail: remoteUser.Email, DisplayName: remoteUser.Name, }); err != nil { - if !errors.Is(err, invite.ErrUserAlreadyAccepted) { - // skip error if user was already accepted + if errors.Is(err, invite.ErrUserAlreadyAccepted) { return &invitepb.ForwardInviteResponse{ - Status: status.NewInternal(ctx, err.Error()), + Status: status.NewAlreadyExists(ctx, err, err.Error()), }, nil } + return &invitepb.ForwardInviteResponse{ + Status: status.NewInternal(ctx, err.Error()), + }, nil } return &invitepb.ForwardInviteResponse{ @@ -276,14 +278,12 @@ func (s *service) AcceptInvite(ctx context.Context, req *invitepb.AcceptInviteRe remoteUser := req.GetRemoteUser() if err := s.repo.AddRemoteUser(ctx, token.GetUserId(), remoteUser); err != nil { - if errors.Is(err, invite.ErrUserAlreadyAccepted) { + if !errors.Is(err, invite.ErrUserAlreadyAccepted) { + // skip error if user was already accepted return &invitepb.AcceptInviteResponse{ - Status: status.NewAlreadyExists(ctx, err, err.Error()), + Status: status.NewInternal(ctx, err.Error()), }, nil } - return &invitepb.AcceptInviteResponse{ - Status: status.NewInternal(ctx, err.Error()), - }, nil } return &invitepb.AcceptInviteResponse{