diff --git a/changelog/unreleased/fix-status-code.md b/changelog/unreleased/fix-status-code.md new file mode 100644 index 00000000000..0ddd60b1d14 --- /dev/null +++ b/changelog/unreleased/fix-status-code.md @@ -0,0 +1,6 @@ +Bugfix: Fix 500 when open public link + +We fixed a bug that caused nil pointer and Error 500 when open public link from deleted user + +https://github.com/cs3org/reva/pull/4351 +https://github.com/owncloud/ocis/issues/7740 diff --git a/pkg/auth/manager/publicshares/publicshares.go b/pkg/auth/manager/publicshares/publicshares.go index 3ee7edbad98..d7a513362d5 100644 --- a/pkg/auth/manager/publicshares/publicshares.go +++ b/pkg/auth/manager/publicshares/publicshares.go @@ -135,8 +135,15 @@ func (m *manager) Authenticate(ctx context.Context, token, secret string) (*user getUserResponse, err := gwConn.GetUser(ctx, &userprovider.GetUserRequest{ UserId: publicShareResponse.GetShare().GetCreator(), }) - if err != nil { + switch { + case err != nil: return nil, nil, err + case getUserResponse.GetStatus().GetCode() == rpcv1beta1.Code_CODE_NOT_FOUND: + return nil, nil, errtypes.NotFound(getUserResponse.GetStatus().GetMessage()) + case getUserResponse.GetStatus().GetCode() == rpcv1beta1.Code_CODE_PERMISSION_DENIED: + return nil, nil, errtypes.InvalidCredentials(getUserResponse.GetStatus().GetMessage()) + case getUserResponse.GetStatus().GetCode() != rpcv1beta1.Code_CODE_OK: + return nil, nil, errtypes.InternalError(getUserResponse.GetStatus().GetMessage()) } owner = getUserResponse.GetUser() }