From a2f9cadd9f8eba1a469d2d4daae87cd9b5e2881d Mon Sep 17 00:00:00 2001 From: Ralf Haferkamp Date: Thu, 30 Oct 2025 11:50:55 +0100 Subject: [PATCH] feat(collaboration): Set IsAnonymousUser flag for Collabora Closes: #796 --- .../pkg/connector/fileconnector_test.go | 17 +++++++++++++++++ .../pkg/connector/fileinfo/collabora.go | 4 ++++ 2 files changed, 21 insertions(+) diff --git a/services/collaboration/pkg/connector/fileconnector_test.go b/services/collaboration/pkg/connector/fileconnector_test.go index 4a326fe448..74efa85f91 100644 --- a/services/collaboration/pkg/connector/fileconnector_test.go +++ b/services/collaboration/pkg/connector/fileconnector_test.go @@ -13,6 +13,7 @@ import ( auth "github.com/cs3org/go-cs3apis/cs3/auth/provider/v1beta1" gateway "github.com/cs3org/go-cs3apis/cs3/gateway/v1beta1" userv1beta1 "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1" + permissions "github.com/cs3org/go-cs3apis/cs3/permissions/v1beta1" link "github.com/cs3org/go-cs3apis/cs3/sharing/link/v1beta1" providerv1beta1 "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1" typesv1beta1 "github.com/cs3org/go-cs3apis/cs3/types/v1beta1" @@ -1800,6 +1801,7 @@ var _ = Describe("FileConnector", func() { BreadcrumbDocName: "test.txt", PostMessageOrigin: "https://cloud.opencloud.test", EnableInsertRemoteImage: true, + IsAnonymousUser: true, } response, err := fc.CheckFileInfo(ctx) @@ -1936,6 +1938,13 @@ var _ = Describe("FileConnector", func() { } ctx = ctxpkg.ContextSetUser(ctx, u) + gatewayClient.On("CheckPermission", mock.Anything, mock.Anything).Return( + &permissions.CheckPermissionResponse{ + Status: status.NewOK(ctx), + }, + nil, + ) + gatewayClient.On("Stat", mock.Anything, mock.Anything).Times(1).Return(&providerv1beta1.StatResponse{ Status: status.NewOK(ctx), Info: &providerv1beta1.ResourceInfo{ @@ -1984,6 +1993,7 @@ var _ = Describe("FileConnector", func() { BreadcrumbDocName: "test.txt", PostMessageOrigin: "https://cloud.opencloud.test", EnableInsertRemoteImage: true, + IsAdminUser: true, } response, err := fc.CheckFileInfo(ctx) @@ -2010,6 +2020,13 @@ var _ = Describe("FileConnector", func() { } ctx = ctxpkg.ContextSetUser(ctx, u) + gatewayClient.On("CheckPermission", mock.Anything, mock.Anything).Return( + &permissions.CheckPermissionResponse{ + Status: status.NewOK(ctx), + }, + nil, + ) + gatewayClient.On("Stat", mock.Anything, mock.Anything).Times(1).Return(&providerv1beta1.StatResponse{ Status: status.NewOK(ctx), Info: &providerv1beta1.ResourceInfo{ diff --git a/services/collaboration/pkg/connector/fileinfo/collabora.go b/services/collaboration/pkg/connector/fileinfo/collabora.go index fc761395bd..d23e4e1a4b 100644 --- a/services/collaboration/pkg/connector/fileinfo/collabora.go +++ b/services/collaboration/pkg/connector/fileinfo/collabora.go @@ -58,6 +58,8 @@ type Collabora struct { EnableOwnerTermination bool `json:"EnableOwnerTermination,omitempty"` // If set to true, the user has administrator rights in the integration. Some functionality of Collabora Online, such as update check and server audit are supposed to be shown to administrators only. IsAdminUser bool `json:"IsAdminUser"` + // If set to true, some functionality of Collabora which is supposed to be shown to authenticated users only is hidden + IsAnonymousUser bool `json:"IsAnonymousUser,omitempty"` // JSON object that contains additional info about the user, namely the avatar image. //UserExtraInfo -> requires definition, currently not used @@ -135,6 +137,8 @@ func (cinfo *Collabora) SetProperties(props map[string]interface{}) { cinfo.WatermarkText = value.(string) case KeyIsAdminUser: cinfo.IsAdminUser = value.(bool) + case KeyIsAnonymousUser: + cinfo.IsAnonymousUser = value.(bool) case KeyEnableShare: cinfo.EnableShare = value.(bool)