Repository: owncloud/ocis
Pull request #8762 (2024-04-02 12:49:26)

[full-ci] Remove Resharing
Removes resharing from codebase

Backend part of https://github.com/owncloud/ocis/issues/8744

sonarcloud[bot]: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=owncloud_ocis&pullRequest=8762&resolved=false&inNewCodePeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/component_measures?id=owncloud_ocis&pullRequest=8762&metric=new_accepted_issues&view=list)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=owncloud_ocis&pullRequest=8762&resolved=false&inNewCodePeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=owncloud_ocis&pullRequest=8762&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=owncloud_ocis&pullRequest=8762&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762)


sonarcloud[bot]: ## [![Quality Gate Failed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-failed-20px.png 'Quality Gate Failed')](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762) **Quality Gate failed**  
Failed conditions  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/failed-16px.png '') [2 New Bugs](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762) (required ≤ 0)  
  
[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762)

##   
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/light_bulb-16px.png '') Catch issues before they fail your Quality Gate with our IDE extension ![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/sonarlint-16px.png '') [SonarLint](https://www.sonarsource.com/products/sonarlint/features/connected-mode/?referrer=pull-request)


sonarcloud[bot]: ## [![Quality Gate Failed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-failed-20px.png 'Quality Gate Failed')](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762) **Quality Gate failed**  
Failed conditions  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/failed-16px.png '') [1 New Bugs](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762) (required ≤ 0)  
  
[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762)

##   
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/light_bulb-16px.png '') Catch issues before they fail your Quality Gate with our IDE extension ![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/sonarlint-16px.png '') [SonarLint](https://www.sonarsource.com/products/sonarlint/features/connected-mode/?referrer=pull-request)


sonarcloud[bot]: ## [![Quality Gate Failed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-failed-20px.png 'Quality Gate Failed')](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762) **Quality Gate failed**  
Failed conditions  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/failed-16px.png '') [1 New Bugs](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762) (required ≤ 0)  
  
[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762)

##   
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/light_bulb-16px.png '') Catch issues before they fail your Quality Gate with our IDE extension ![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/sonarlint-16px.png '') [SonarLint](https://www.sonarsource.com/products/sonarlint/features/connected-mode/?referrer=pull-request)


sonarcloud[bot]: ## [![Quality Gate Failed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-failed-20px.png 'Quality Gate Failed')](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762) **Quality Gate failed**  
Failed conditions  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/failed-16px.png '') [1 New Bugs](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762) (required ≤ 0)  
  
[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762)

##   
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/light_bulb-16px.png '') Catch issues before they fail your Quality Gate with our IDE extension ![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/sonarlint-16px.png '') [SonarLint](https://www.sonarsource.com/products/sonarlint/features/connected-mode/?referrer=pull-request)


sonarcloud[bot]: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=owncloud_ocis&pullRequest=8762&resolved=false&inNewCodePeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/component_measures?id=owncloud_ocis&pullRequest=8762&metric=new_accepted_issues&view=list)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=owncloud_ocis&pullRequest=8762&resolved=false&inNewCodePeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [87.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=owncloud_ocis&pullRequest=8762&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=owncloud_ocis&pullRequest=8762&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762)


sonarcloud[bot]: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=owncloud_ocis&pullRequest=8762&resolved=false&inNewCodePeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/component_measures?id=owncloud_ocis&pullRequest=8762&metric=new_accepted_issues&view=list)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=owncloud_ocis&pullRequest=8762&resolved=false&inNewCodePeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [87.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=owncloud_ocis&pullRequest=8762&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=owncloud_ocis&pullRequest=8762&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762)


sonarcloud[bot]: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=owncloud_ocis&pullRequest=8762&resolved=false&inNewCodePeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/component_measures?id=owncloud_ocis&pullRequest=8762&metric=new_accepted_issues&view=list)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=owncloud_ocis&pullRequest=8762&resolved=false&inNewCodePeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [87.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=owncloud_ocis&pullRequest=8762&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=owncloud_ocis&pullRequest=8762&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=owncloud_ocis&pullRequest=8762)



Patch:
diff --git a/changelog/unreleased/remove-resharing.md b/changelog/unreleased/remove-resharing.md
new file mode 100644
index 00000000000..495c5ea9e94
--- /dev/null
+++ b/changelog/unreleased/remove-resharing.md
@@ -0,0 +1,5 @@
+Enhancement: Remove resharing
+
+Removed resharing feature from codebase
+
+https://github.com/owncloud/ocis/pull/8762
diff --git a/go.mod b/go.mod
index 2d16503d52d..4be4dc0ede0 100644
--- a/go.mod
+++ b/go.mod
@@ -14,7 +14,7 @@ require (
 	github.com/cenkalti/backoff v2.2.1+incompatible
 	github.com/coreos/go-oidc/v3 v3.10.0
 	github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781
-	github.com/cs3org/reva/v2 v2.19.2-0.20240328104440-9c04f2d8ab7e
+	github.com/cs3org/reva/v2 v2.19.2-0.20240404085416-251ba8d12f6f
 	github.com/dhowden/tag v0.0.0-20230630033851-978a0926ee25
 	github.com/disintegration/imaging v1.6.2
 	github.com/dutchcoders/go-clamd v0.0.0-20170520113014-b970184f4d9e
@@ -67,7 +67,7 @@ require (
 	github.com/olekukonko/tablewriter v0.0.5
 	github.com/onsi/ginkgo v1.16.5
 	github.com/onsi/ginkgo/v2 v2.17.0
-	github.com/onsi/gomega v1.32.0
+	github.com/onsi/gomega v1.31.1
 	github.com/open-policy-agent/opa v0.62.1
 	github.com/orcaman/concurrent-map v1.0.0
 	github.com/owncloud/libre-graph-api-go v1.0.5-0.20240130152355-ac663a9002a1
diff --git a/go.sum b/go.sum
index d9c13e7b071..3896251aac3 100644
--- a/go.sum
+++ b/go.sum
@@ -1022,8 +1022,8 @@ github.com/crewjam/saml v0.4.14 h1:g9FBNx62osKusnFzs3QTN5L9CVA/Egfgm+stJShzw/c=
 github.com/crewjam/saml v0.4.14/go.mod h1:UVSZCf18jJkk6GpWNVqcyQJMD5HsRugBPf4I1nl2mME=
 github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781 h1:BUdwkIlf8IS2FasrrPg8gGPHQPOrQ18MS1Oew2tmGtY=
 github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
-github.com/cs3org/reva/v2 v2.19.2-0.20240328104440-9c04f2d8ab7e h1:WkmwnjiTC9FBDQqJhv4IUBBXDEvqKhlgfaJ1sZ3T3N8=
-github.com/cs3org/reva/v2 v2.19.2-0.20240328104440-9c04f2d8ab7e/go.mod h1:GRUrOp5HbFVwZTgR9bVrMZ/MvVy+Jhxw1PdMmhhKP9E=
+github.com/cs3org/reva/v2 v2.19.2-0.20240404085416-251ba8d12f6f h1:t4jFaaEmPX8J/jvybuvI7aC1TbU2zSGZabUDQvA5Mr8=
+github.com/cs3org/reva/v2 v2.19.2-0.20240404085416-251ba8d12f6f/go.mod h1:GRUrOp5HbFVwZTgR9bVrMZ/MvVy+Jhxw1PdMmhhKP9E=
 github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
 github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
 github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
@@ -1773,8 +1773,8 @@ github.com/onsi/ginkgo/v2 v2.17.0/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3Hig
 github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
 github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
 github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.32.0 h1:JRYU78fJ1LPxlckP6Txi/EYqJvjtMrDC04/MM5XRHPk=
-github.com/onsi/gomega v1.32.0/go.mod h1:a4x4gW6Pz2yK1MAmvluYme5lvYTn61afQ2ETw/8n4Lg=
+github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo=
+github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0=
 github.com/open-policy-agent/opa v0.62.1 h1:UcxBQ0fe6NEjkYc775j4PWoUFFhx4f6yXKIKSTAuTVk=
 github.com/open-policy-agent/opa v0.62.1/go.mod h1:YqiSIIuvKwyomtnnXkJvy0E3KtVKbavjPJ/hNMuOmeM=
 github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg=
diff --git a/services/frontend/pkg/config/config.go b/services/frontend/pkg/config/config.go
index dd125965988..6404c33ccb6 100644
--- a/services/frontend/pkg/config/config.go
+++ b/services/frontend/pkg/config/config.go
@@ -31,7 +31,6 @@ type Config struct {
 	UploadMaxChunkSize             int    `yaml:"upload_max_chunk_size" env:"FRONTEND_UPLOAD_MAX_CHUNK_SIZE" desc:"Sets the max chunk sizes in bytes for uploads via the clients." introductionVersion:"pre5.0"`
 	UploadHTTPMethodOverride       string `yaml:"upload_http_method_override" env:"FRONTEND_UPLOAD_HTTP_METHOD_OVERRIDE" desc:"Advise TUS to replace PATCH requests by POST requests." introductionVersion:"pre5.0"`
 	DefaultUploadProtocol          string `yaml:"default_upload_protocol" env:"FRONTEND_DEFAULT_UPLOAD_PROTOCOL" desc:"The default upload protocol to use in clients. Currently only 'tus' is available. See the developer API documentation for more details about TUS." introductionVersion:"pre5.0"`
-	EnableResharing                bool   `yaml:"enable_resharing" env:"OCIS_ENABLE_RESHARING;FRONTEND_ENABLE_RESHARING" desc:"Changing this value is NOT supported. Enables the support for re-sharing in the clients." introductionVersion:"pre5.0" deprecationVersion:"5.0" deprecationInfo:"Re-sharing will be removed in the future."`
 	EnableFederatedSharingIncoming bool   `yaml:"enable_federated_sharing_incoming" env:"FRONTEND_ENABLE_FEDERATED_SHARING_INCOMING" desc:"Changing this value is NOT supported. Enables support for incoming federated sharing for clients. The backend behaviour is not changed." introductionVersion:"pre5.0"`
 	EnableFederatedSharingOutgoing bool   `yaml:"enable_federated_sharing_outgoing" env:"FRONTEND_ENABLE_FEDERATED_SHARING_OUTGOING" desc:"Changing this value is NOT supported. Enables support for outgoing federated sharing for clients. The backend behaviour is not changed." introductionVersion:"pre5.0"`
 	SearchMinLength                int    `yaml:"search_min_length" env:"FRONTEND_SEARCH_MIN_LENGTH" desc:"Minimum number of characters to enter before a client should start a search for Share receivers. This setting can be used to customize the user experience if e.g too many results are displayed." introductionVersion:"pre5.0"`
diff --git a/services/frontend/pkg/config/defaults/defaultconfig.go b/services/frontend/pkg/config/defaults/defaultconfig.go
index 2364191d009..4f214f457bf 100644
--- a/services/frontend/pkg/config/defaults/defaultconfig.go
+++ b/services/frontend/pkg/config/defaults/defaultconfig.go
@@ -85,7 +85,6 @@ func DefaultConfig() *config.Config {
 		UploadMaxChunkSize:       1e+7,
 		UploadHTTPMethodOverride: "",
 		DefaultUploadProtocol:    "tus",
-		EnableResharing:          false,
 		DefaultLinkPermissions:   1,
 		SearchMinLength:          3,
 		Edition:                  "Community",
diff --git a/services/frontend/pkg/revaconfig/config.go b/services/frontend/pkg/revaconfig/config.go
index f4d43ea2349..769a6f6d1a0 100644
--- a/services/frontend/pkg/revaconfig/config.go
+++ b/services/frontend/pkg/revaconfig/config.go
@@ -229,7 +229,6 @@ func FrontendConfigFromStruct(cfg *config.Config, logger log.Logger) (map[string
 							},
 							"files_sharing": map[string]interface{}{
 								"api_enabled":                       true,
-								"resharing":                         cfg.EnableResharing,
 								"group_sharing":                     true,
 								"sharing_roles":                     true,
 								"deny_access":                       cfg.OCS.EnableDenials,
diff --git a/services/graph/pkg/config/config.go b/services/graph/pkg/config/config.go
index ed2133483c7..6d2bfb426da 100644
--- a/services/graph/pkg/config/config.go
+++ b/services/graph/pkg/config/config.go
@@ -33,8 +33,6 @@ type Config struct {
 	Keycloak       Keycloak       `yaml:"keycloak"`
 	ServiceAccount ServiceAccount `yaml:"service_account"`
 
-	FilesSharing FilesSharing `yaml:"files_sharing"`
-
 	Context context.Context `yaml:"-"`
 }
 
@@ -151,8 +149,3 @@ type ServiceAccount struct {
 	ServiceAccountID     string `yaml:"service_account_id" env:"OCIS_SERVICE_ACCOUNT_ID;GRAPH_SERVICE_ACCOUNT_ID" desc:"The ID of the service account the service should use. See the 'auth-service' service description for more details." introductionVersion:"5.0"`
 	ServiceAccountSecret string `yaml:"service_account_secret" env:"OCIS_SERVICE_ACCOUNT_SECRET;GRAPH_SERVICE_ACCOUNT_SECRET" desc:"The service account secret." introductionVersion:"5.0"`
 }
-
-// FilesSharing is the configuration for the files sharing
-type FilesSharing struct {
-	EnableResharing bool `yaml:"enable_resharing" env:"OCIS_ENABLE_RESHARING;GRAPH_ENABLE_RESHARING" desc:"Changing this value is NOT supported. Enables the support for re-sharing." introductionVersion:"5.0" deprecationVersion:"5.0" deprecationInfo:"Resharing will be removed in the future."`
-}
diff --git a/services/graph/pkg/config/defaults/defaultconfig.go b/services/graph/pkg/config/defaults/defaultconfig.go
index d665b2f206a..6ac2e2ab131 100644
--- a/services/graph/pkg/config/defaults/defaultconfig.go
+++ b/services/graph/pkg/config/defaults/defaultconfig.go
@@ -107,9 +107,6 @@ func DefaultConfig() *config.Config {
 			Cluster:   "ocis-cluster",
 			EnableTLS: false,
 		},
-		FilesSharing: config.FilesSharing{
-			EnableResharing: false,
-		},
 	}
 }
 
diff --git a/services/graph/pkg/service/v0/api_driveitem_permissions.go b/services/graph/pkg/service/v0/api_driveitem_permissions.go
index dc6d4041ee7..1fd6caa56b1 100644
--- a/services/graph/pkg/service/v0/api_driveitem_permissions.go
+++ b/services/graph/pkg/service/v0/api_driveitem_permissions.go
@@ -96,7 +96,7 @@ func (s DriveItemPermissionsService) Invite(ctx context.Context, resourceId stor
 
 	unifiedRolePermissions := []*libregraph.UnifiedRolePermission{{AllowedResourceActions: invite.LibreGraphPermissionsActions}}
 	for _, roleID := range invite.GetRoles() {
-		role, err := unifiedrole.NewUnifiedRoleFromID(roleID, s.config.FilesSharing.EnableResharing)
+		role, err := unifiedrole.NewUnifiedRoleFromID(roleID)
 		if err != nil {
 			s.logger.Debug().Err(err).Interface("role", invite.GetRoles()[0]).Msg("unable to convert requested role")
 			return libregraph.Permission{}, err
@@ -125,7 +125,7 @@ func (s DriveItemPermissionsService) Invite(ctx context.Context, resourceId stor
 	}
 
 	permission := &libregraph.Permission{}
-	if role := unifiedrole.CS3ResourcePermissionsToUnifiedRole(*cs3ResourcePermissions, condition, s.config.FilesSharing.EnableResharing); role != nil {
+	if role := unifiedrole.CS3ResourcePermissionsToUnifiedRole(*cs3ResourcePermissions, condition); role != nil {
 		permission.Roles = []string{role.GetId()}
 	}
 
@@ -246,7 +246,6 @@ func (s DriveItemPermissionsService) ListPermissions(ctx context.Context, itemID
 			unifiedrole.GetApplicableRoleDefinitionsForActions(
 				allowedActions,
 				condition,
-				s.config.FilesSharing.EnableResharing,
 				false,
 			),
 		),
diff --git a/services/graph/pkg/service/v0/api_drives_drive_item.go b/services/graph/pkg/service/v0/api_drives_drive_item.go
index deb1f3ee3cd..76c2516ffb2 100644
--- a/services/graph/pkg/service/v0/api_drives_drive_item.go
+++ b/services/graph/pkg/service/v0/api_drives_drive_item.go
@@ -34,19 +34,17 @@ type DrivesDriveItemProvider interface {
 
 // DrivesDriveItemService contains the production business logic for everything that relates to drives
 type DrivesDriveItemService struct {
-	logger           log.Logger
-	gatewaySelector  pool.Selectable[gateway.GatewayAPIClient]
-	identityCache    identity.IdentityCache
-	resharingEnabled bool
+	logger          log.Logger
+	gatewaySelector pool.Selectable[gateway.GatewayAPIClient]
+	identityCache   identity.IdentityCache
 }
 
 // NewDrivesDriveItemService creates a new DrivesDriveItemService
-func NewDrivesDriveItemService(logger log.Logger, gatewaySelector pool.Selectable[gateway.GatewayAPIClient], identityCache identity.IdentityCache, resharing bool) (DrivesDriveItemService, error) {
+func NewDrivesDriveItemService(logger log.Logger, gatewaySelector pool.Selectable[gateway.GatewayAPIClient], identityCache identity.IdentityCache) (DrivesDriveItemService, error) {
 	return DrivesDriveItemService{
-		logger:           log.Logger{Logger: logger.With().Str("graph api", "DrivesDriveItemService").Logger()},
-		gatewaySelector:  gatewaySelector,
-		identityCache:    identityCache,
-		resharingEnabled: resharing,
+		logger:          log.Logger{Logger: logger.With().Str("graph api", "DrivesDriveItemService").Logger()},
+		gatewaySelector: gatewaySelector,
+		identityCache:   identityCache,
 	}, nil
 }
 
@@ -211,8 +209,8 @@ func (s DrivesDriveItemService) MountShare(ctx context.Context, resourceID stora
 		return libregraph.DriveItem{}, errors.Join(errs...)
 	}
 
-	// As the accepted shares are all for the same resource they should collapse to a single drive-item
-	items, err := cs3ReceivedSharesToDriveItems(ctx, &s.logger, gatewayClient, s.identityCache, s.resharingEnabled, acceptedShares)
+	// As the accepted shares are all for the same resource they should collapse to a single driveitem
+	items, err := cs3ReceivedSharesToDriveItems(ctx, &s.logger, gatewayClient, s.identityCache, acceptedShares)
 	switch {
 	case err != nil:
 		return libregraph.DriveItem{}, nil
diff --git a/services/graph/pkg/service/v0/base.go b/services/graph/pkg/service/v0/base.go
index 95919137966..e1bec910931 100644
--- a/services/graph/pkg/service/v0/base.go
+++ b/services/graph/pkg/service/v0/base.go
@@ -165,7 +165,7 @@ func (g BaseGraphService) cs3SpacePermissionsToLibreGraph(ctx context.Context, s
 			p.SetExpirationDateTime(time.Unix(int64(exp.GetSeconds()), int64(exp.GetNanos())))
 		}
 
-		if role := unifiedrole.CS3ResourcePermissionsToUnifiedRole(*perm, unifiedrole.UnifiedRoleConditionOwner, false); role != nil {
+		if role := unifiedrole.CS3ResourcePermissionsToUnifiedRole(*perm, unifiedrole.UnifiedRoleConditionOwner); role != nil {
 			switch apiVersion {
 			case APIVersion_1:
 				if r := unifiedrole.GetLegacyName(*role); r != "" {
@@ -354,7 +354,6 @@ func (g BaseGraphService) cs3UserShareToPermission(ctx context.Context, share *c
 	role := unifiedrole.CS3ResourcePermissionsToUnifiedRole(
 		*share.GetPermissions().GetPermissions(),
 		condition,
-		g.config.FilesSharing.EnableResharing,
 	)
 	if role != nil {
 		perm.SetRoles([]string{role.GetId()})
@@ -627,7 +626,7 @@ func (g BaseGraphService) updateUserShare(ctx context.Context, permissionID stri
 	var permissionsUpdated, ok bool
 	if roles, ok = newPermission.GetRolesOk(); ok && len(roles) > 0 {
 		for _, roleID := range roles {
-			role, err := unifiedrole.NewUnifiedRoleFromID(roleID, g.config.FilesSharing.EnableResharing)
+			role, err := unifiedrole.NewUnifiedRoleFromID(roleID)
 			if err != nil {
 				g.logger.Debug().Err(err).Interface("role", role).Msg("unable to convert requested role")
 				return nil, err
diff --git a/services/graph/pkg/service/v0/l10n/locale/bg/LC_MESSAGES/graph.po b/services/graph/pkg/service/v0/l10n/locale/bg/LC_MESSAGES/graph.po
deleted file mode 100644
index 1f9090f501d..00000000000
--- a/services/graph/pkg/service/v0/l10n/locale/bg/LC_MESSAGES/graph.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# Translators:
-# Martin <github@diemattels.at>, 2024
-# 
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: EMAIL\n"
-"POT-Creation-Date: 2024-04-05 00:41+0000\n"
-"PO-Revision-Date: 2024-04-04 00:17+0000\n"
-"Last-Translator: Martin <github@diemattels.at>, 2024\n"
-"Language-Team: Bulgarian (https://app.transifex.com/owncloud-org/teams/6149/bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#. text for the readme.md file
-#: pkg/service/v0/spacetemplates.go:37
-msgid "Here you can add a description for this Space."
-msgstr "Тук можете да добавите описание на това пространство."
diff --git a/services/graph/pkg/service/v0/l10n/locale/de/LC_MESSAGES/graph.po b/services/graph/pkg/service/v0/l10n/locale/de/LC_MESSAGES/graph.po
deleted file mode 100644
index 131b9e2506c..00000000000
--- a/services/graph/pkg/service/v0/l10n/locale/de/LC_MESSAGES/graph.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# Translators:
-# Martin <github@diemattels.at>, 2024
-# 
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: EMAIL\n"
-"POT-Creation-Date: 2024-04-05 00:41+0000\n"
-"PO-Revision-Date: 2024-04-04 00:17+0000\n"
-"Last-Translator: Martin <github@diemattels.at>, 2024\n"
-"Language-Team: German (https://app.transifex.com/owncloud-org/teams/6149/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#. text for the readme.md file
-#: pkg/service/v0/spacetemplates.go:37
-msgid "Here you can add a description for this Space."
-msgstr "Hier können Sie eine Beschreibung für diesen Space einfügen."
diff --git a/services/graph/pkg/service/v0/l10n/locale/es/LC_MESSAGES/graph.po b/services/graph/pkg/service/v0/l10n/locale/es/LC_MESSAGES/graph.po
deleted file mode 100644
index 2b494c474d5..00000000000
--- a/services/graph/pkg/service/v0/l10n/locale/es/LC_MESSAGES/graph.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# Translators:
-# Martin <github@diemattels.at>, 2024
-# 
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: EMAIL\n"
-"POT-Creation-Date: 2024-04-05 00:41+0000\n"
-"PO-Revision-Date: 2024-04-04 00:17+0000\n"
-"Last-Translator: Martin <github@diemattels.at>, 2024\n"
-"Language-Team: Spanish (https://app.transifex.com/owncloud-org/teams/6149/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
-
-#. text for the readme.md file
-#: pkg/service/v0/spacetemplates.go:37
-msgid "Here you can add a description for this Space."
-msgstr "Aquí puede añadir una descripción para este espacio."
diff --git a/services/graph/pkg/service/v0/l10n/locale/fr/LC_MESSAGES/graph.po b/services/graph/pkg/service/v0/l10n/locale/fr/LC_MESSAGES/graph.po
deleted file mode 100644
index ecc3ecc4944..00000000000
--- a/services/graph/pkg/service/v0/l10n/locale/fr/LC_MESSAGES/graph.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# Translators:
-# Ldm Public <ldmpub@gmail.com>, 2024
-# 
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: EMAIL\n"
-"POT-Creation-Date: 2024-04-05 00:41+0000\n"
-"PO-Revision-Date: 2024-04-04 00:17+0000\n"
-"Last-Translator: Ldm Public <ldmpub@gmail.com>, 2024\n"
-"Language-Team: French (https://app.transifex.com/owncloud-org/teams/6149/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
-
-#. text for the readme.md file
-#: pkg/service/v0/spacetemplates.go:37
-msgid "Here you can add a description for this Space."
-msgstr "Vous pouvez ajouter une description pour cet Espace ici."
diff --git a/services/graph/pkg/service/v0/l10n/locale/ja_JP/LC_MESSAGES/graph.po b/services/graph/pkg/service/v0/l10n/locale/ja_JP/LC_MESSAGES/graph.po
deleted file mode 100644
index 7e64f6fbaa0..00000000000
--- a/services/graph/pkg/service/v0/l10n/locale/ja_JP/LC_MESSAGES/graph.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# Translators:
-# hoshi1800 <hoshi1800@gmail.com>, 2024
-# 
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: EMAIL\n"
-"POT-Creation-Date: 2024-04-05 00:41+0000\n"
-"PO-Revision-Date: 2024-04-04 00:17+0000\n"
-"Last-Translator: hoshi1800 <hoshi1800@gmail.com>, 2024\n"
-"Language-Team: Japanese (Japan) (https://app.transifex.com/owncloud-org/teams/6149/ja_JP/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja_JP\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#. text for the readme.md file
-#: pkg/service/v0/spacetemplates.go:37
-msgid "Here you can add a description for this Space."
-msgstr "ここでこのスペースの説明を追加できます。"
diff --git a/services/graph/pkg/service/v0/l10n/locale/ko/LC_MESSAGES/graph.po b/services/graph/pkg/service/v0/l10n/locale/ko/LC_MESSAGES/graph.po
deleted file mode 100644
index 12d18d08621..00000000000
--- a/services/graph/pkg/service/v0/l10n/locale/ko/LC_MESSAGES/graph.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# Translators:
-# Martin <github@diemattels.at>, 2024
-# 
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: EMAIL\n"
-"POT-Creation-Date: 2024-04-05 00:41+0000\n"
-"PO-Revision-Date: 2024-04-04 00:17+0000\n"
-"Last-Translator: Martin <github@diemattels.at>, 2024\n"
-"Language-Team: Korean (https://app.transifex.com/owncloud-org/teams/6149/ko/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ko\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#. text for the readme.md file
-#: pkg/service/v0/spacetemplates.go:37
-msgid "Here you can add a description for this Space."
-msgstr "여기에 이 스페이스 대한 설명을 추가할 수 있습니다."
diff --git a/services/graph/pkg/service/v0/l10n/locale/nl/LC_MESSAGES/graph.po b/services/graph/pkg/service/v0/l10n/locale/nl/LC_MESSAGES/graph.po
deleted file mode 100644
index a987b2076a4..00000000000
--- a/services/graph/pkg/service/v0/l10n/locale/nl/LC_MESSAGES/graph.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# Translators:
-# 2a344c4626711d8707658672303caf6a_6d7f053, 2024
-# 
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: EMAIL\n"
-"POT-Creation-Date: 2024-04-05 00:41+0000\n"
-"PO-Revision-Date: 2024-04-04 00:17+0000\n"
-"Last-Translator: 2a344c4626711d8707658672303caf6a_6d7f053, 2024\n"
-"Language-Team: Dutch (https://app.transifex.com/owncloud-org/teams/6149/nl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#. text for the readme.md file
-#: pkg/service/v0/spacetemplates.go:37
-msgid "Here you can add a description for this Space."
-msgstr "Hier kan u een beschrijving toevoegen voor deze Space."
diff --git a/services/graph/pkg/service/v0/l10n/locale/ru/LC_MESSAGES/graph.po b/services/graph/pkg/service/v0/l10n/locale/ru/LC_MESSAGES/graph.po
deleted file mode 100644
index 9359465f5fd..00000000000
--- a/services/graph/pkg/service/v0/l10n/locale/ru/LC_MESSAGES/graph.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# Translators:
-# Alex <hostspepc@gmail.com>, 2024
-# 
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: EMAIL\n"
-"POT-Creation-Date: 2024-04-05 00:41+0000\n"
-"PO-Revision-Date: 2024-04-04 00:17+0000\n"
-"Last-Translator: Alex <hostspepc@gmail.com>, 2024\n"
-"Language-Team: Russian (https://app.transifex.com/owncloud-org/teams/6149/ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
-
-#. text for the readme.md file
-#: pkg/service/v0/spacetemplates.go:37
-msgid "Here you can add a description for this Space."
-msgstr "Здесь вы можете добавить описание этого пространства."
diff --git a/services/graph/pkg/service/v0/l10n/locale/sq/LC_MESSAGES/graph.po b/services/graph/pkg/service/v0/l10n/locale/sq/LC_MESSAGES/graph.po
deleted file mode 100644
index 9298a2a7390..00000000000
--- a/services/graph/pkg/service/v0/l10n/locale/sq/LC_MESSAGES/graph.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# Translators:
-# Besnik Bleta <besnik@programeshqip.org>, 2024
-# 
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: EMAIL\n"
-"POT-Creation-Date: 2024-04-05 00:41+0000\n"
-"PO-Revision-Date: 2024-04-04 00:17+0000\n"
-"Last-Translator: Besnik Bleta <besnik@programeshqip.org>, 2024\n"
-"Language-Team: Albanian (https://app.transifex.com/owncloud-org/teams/6149/sq/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sq\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#. text for the readme.md file
-#: pkg/service/v0/spacetemplates.go:37
-msgid "Here you can add a description for this Space."
-msgstr "Këtu mund të shtoni një përshkrim për këtë Hapësirë."
diff --git a/services/graph/pkg/service/v0/l10n/locale/tr/LC_MESSAGES/graph.po b/services/graph/pkg/service/v0/l10n/locale/tr/LC_MESSAGES/graph.po
deleted file mode 100644
index 004d6e72d39..00000000000
--- a/services/graph/pkg/service/v0/l10n/locale/tr/LC_MESSAGES/graph.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# Translators:
-# Martin <github@diemattels.at>, 2024
-# 
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: EMAIL\n"
-"POT-Creation-Date: 2024-04-05 00:41+0000\n"
-"PO-Revision-Date: 2024-04-04 00:17+0000\n"
-"Last-Translator: Martin <github@diemattels.at>, 2024\n"
-"Language-Team: Turkish (https://app.transifex.com/owncloud-org/teams/6149/tr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#. text for the readme.md file
-#: pkg/service/v0/spacetemplates.go:37
-msgid "Here you can add a description for this Space."
-msgstr "Buraya bu Alan için bir açıklama ekleyebilirsiniz."
diff --git a/services/graph/pkg/service/v0/l10n/locale/vi/LC_MESSAGES/graph.po b/services/graph/pkg/service/v0/l10n/locale/vi/LC_MESSAGES/graph.po
deleted file mode 100644
index 9605aa37be5..00000000000
--- a/services/graph/pkg/service/v0/l10n/locale/vi/LC_MESSAGES/graph.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# Translators:
-# Nguyễn Tiến Trình <tunglam062000@gmail.com>, 2024
-# 
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: EMAIL\n"
-"POT-Creation-Date: 2024-04-05 00:41+0000\n"
-"PO-Revision-Date: 2024-04-04 00:17+0000\n"
-"Last-Translator: Nguyễn Tiến Trình <tunglam062000@gmail.com>, 2024\n"
-"Language-Team: Vietnamese (https://app.transifex.com/owncloud-org/teams/6149/vi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#. text for the readme.md file
-#: pkg/service/v0/spacetemplates.go:37
-msgid "Here you can add a description for this Space."
-msgstr "Ở đây bạn có thể thêm mô tả cho không gian này."
diff --git a/services/graph/pkg/service/v0/l10n/locale/zh/LC_MESSAGES/graph.po b/services/graph/pkg/service/v0/l10n/locale/zh/LC_MESSAGES/graph.po
deleted file mode 100644
index 12c2c65dde1..00000000000
--- a/services/graph/pkg/service/v0/l10n/locale/zh/LC_MESSAGES/graph.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# Translators:
-# Martin <github@diemattels.at>, 2024
-# 
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: EMAIL\n"
-"POT-Creation-Date: 2024-04-05 00:41+0000\n"
-"PO-Revision-Date: 2024-04-04 00:17+0000\n"
-"Last-Translator: Martin <github@diemattels.at>, 2024\n"
-"Language-Team: Chinese (https://app.transifex.com/owncloud-org/teams/6149/zh/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#. text for the readme.md file
-#: pkg/service/v0/spacetemplates.go:37
-msgid "Here you can add a description for this Space."
-msgstr "在此处添加此空间的描述。"
diff --git a/services/graph/pkg/service/v0/l10n/locale/zh_HK/LC_MESSAGES/graph.po b/services/graph/pkg/service/v0/l10n/locale/zh_HK/LC_MESSAGES/graph.po
deleted file mode 100644
index 6dff64597a4..00000000000
--- a/services/graph/pkg/service/v0/l10n/locale/zh_HK/LC_MESSAGES/graph.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# Translators:
-# Ann Li <dn.annli@gmail.com>, 2024
-# 
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: EMAIL\n"
-"POT-Creation-Date: 2024-04-05 00:41+0000\n"
-"PO-Revision-Date: 2024-04-04 00:17+0000\n"
-"Last-Translator: Ann Li <dn.annli@gmail.com>, 2024\n"
-"Language-Team: Chinese (Hong Kong) (https://app.transifex.com/owncloud-org/teams/6149/zh_HK/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_HK\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#. text for the readme.md file
-#: pkg/service/v0/spacetemplates.go:37
-msgid "Here you can add a description for this Space."
-msgstr "你可以在此添加這空間的描述"
diff --git a/services/graph/pkg/service/v0/rolemanagement.go b/services/graph/pkg/service/v0/rolemanagement.go
index 549fbbab8e8..d092421bcfe 100644
--- a/services/graph/pkg/service/v0/rolemanagement.go
+++ b/services/graph/pkg/service/v0/rolemanagement.go
@@ -15,7 +15,7 @@ import (
 // GetRoleDefinitions a list of permission roles than can be used when sharing with users or groups
 func (g Graph) GetRoleDefinitions(w http.ResponseWriter, r *http.Request) {
 	render.Status(r, http.StatusOK)
-	render.JSON(w, r, unifiedrole.GetBuiltinRoleDefinitionList(g.config.FilesSharing.EnableResharing))
+	render.JSON(w, r, unifiedrole.GetBuiltinRoleDefinitionList())
 }
 
 // GetRoleDefinition a permission role than can be used when sharing with users or groups
@@ -27,7 +27,7 @@ func (g Graph) GetRoleDefinition(w http.ResponseWriter, r *http.Request) {
 		errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest, "unescaping role id failed")
 		return
 	}
-	role, err := getRoleDefinition(roleID, g.config.FilesSharing.EnableResharing)
+	role, err := getRoleDefinition(roleID)
 	if err != nil {
 		logger.Debug().Str("roleID", roleID).Msg("could not get role: not found")
 		errorcode.ItemNotFound.Render(w, r, http.StatusNotFound, err.Error())
@@ -37,8 +37,8 @@ func (g Graph) GetRoleDefinition(w http.ResponseWriter, r *http.Request) {
 	render.JSON(w, r, role)
 }
 
-func getRoleDefinition(roleID string, resharing bool) (*libregraph.UnifiedRoleDefinition, error) {
-	roleList := unifiedrole.GetBuiltinRoleDefinitionList(resharing)
+func getRoleDefinition(roleID string) (*libregraph.UnifiedRoleDefinition, error) {
+	roleList := unifiedrole.GetBuiltinRoleDefinitionList()
 	for _, role := range roleList {
 		if role != nil && role.Id != nil && *role.Id == roleID {
 			return role, nil
diff --git a/services/graph/pkg/service/v0/service.go b/services/graph/pkg/service/v0/service.go
index df4e99aadf5..6c4cc35e15f 100644
--- a/services/graph/pkg/service/v0/service.go
+++ b/services/graph/pkg/service/v0/service.go
@@ -199,7 +199,7 @@ func NewService(opts ...Option) (Graph, error) {
 		requireAdmin = options.RequireAdminMiddleware
 	}
 
-	drivesDriveItemService, err := NewDrivesDriveItemService(options.Logger, options.GatewaySelector, identityCache, options.Config.FilesSharing.EnableResharing)
+	drivesDriveItemService, err := NewDrivesDriveItemService(options.Logger, options.GatewaySelector, identityCache)
 	if err != nil {
 		return svc, err
 	}
diff --git a/services/graph/pkg/service/v0/sharedwithme.go b/services/graph/pkg/service/v0/sharedwithme.go
index e23ca660bd4..42d02d76c55 100644
--- a/services/graph/pkg/service/v0/sharedwithme.go
+++ b/services/graph/pkg/service/v0/sharedwithme.go
@@ -39,5 +39,5 @@ func (g Graph) listSharedWithMe(ctx context.Context) ([]libregraph.DriveItem, er
 		return nil, *errCode
 	}
 
-	return cs3ReceivedSharesToDriveItems(ctx, g.logger, gatewayClient, g.identityCache, g.config.FilesSharing.EnableResharing, listReceivedSharesResponse.GetShares())
+	return cs3ReceivedSharesToDriveItems(ctx, g.logger, gatewayClient, g.identityCache, listReceivedSharesResponse.GetShares())
 }
diff --git a/services/graph/pkg/service/v0/utils.go b/services/graph/pkg/service/v0/utils.go
index ec8e6ce6a8b..55311185b67 100644
--- a/services/graph/pkg/service/v0/utils.go
+++ b/services/graph/pkg/service/v0/utils.go
@@ -142,7 +142,6 @@ func cs3ReceivedSharesToDriveItems(ctx context.Context,
 	logger *log.Logger,
 	gatewayClient gateway.GatewayAPIClient,
 	identityCache identity.IdentityCache,
-	resharing bool,
 	receivedShares []*collaboration.ReceivedShare) ([]libregraph.DriveItem, error) {
 
 	ch := make(chan libregraph.DriveItem)
@@ -178,8 +177,7 @@ func cs3ReceivedSharesToDriveItems(ctx context.Context,
 				return errCode
 			}
 
-			driveItem, err := fillDriveItemPropertiesFromReceivedShare(ctx, logger, identityCache,
-				resharing, receivedShares)
+			driveItem, err := fillDriveItemPropertiesFromReceivedShare(ctx, logger, identityCache, receivedShares)
 			if err != nil {
 				return err
 			}
@@ -315,8 +313,7 @@ func cs3ReceivedSharesToDriveItems(ctx context.Context,
 }
 
 func fillDriveItemPropertiesFromReceivedShare(ctx context.Context, logger *log.Logger,
-	identityCache identity.IdentityCache, resharing bool,
-	receivedShares []*collaboration.ReceivedShare) (*libregraph.DriveItem, error) {
+	identityCache identity.IdentityCache, receivedShares []*collaboration.ReceivedShare) (*libregraph.DriveItem, error) {
 
 	driveItem := libregraph.NewDriveItem()
 	permissions := make([]libregraph.Permission, 0, len(receivedShares))
@@ -330,7 +327,7 @@ func fillDriveItemPropertiesFromReceivedShare(ctx context.Context, logger *log.L
 			oldestReceivedShare = receivedShare
 		}
 
-		permission, err := cs3ReceivedShareToLibreGraphPermissions(ctx, logger, identityCache, resharing, receivedShare)
+		permission, err := cs3ReceivedShareToLibreGraphPermissions(ctx, logger, identityCache, receivedShare)
 		if err != nil {
 			return driveItem, err
 		}
@@ -390,7 +387,7 @@ func fillDriveItemPropertiesFromReceivedShare(ctx context.Context, logger *log.L
 }
 
 func cs3ReceivedShareToLibreGraphPermissions(ctx context.Context, logger *log.Logger,
-	identityCache identity.IdentityCache, resharing bool, receivedShare *collaboration.ReceivedShare) (*libregraph.Permission, error) {
+	identityCache identity.IdentityCache, receivedShare *collaboration.ReceivedShare) (*libregraph.Permission, error) {
 	permission := libregraph.NewPermission()
 	if id := receivedShare.GetShare().GetId().GetOpaqueId(); id != "" {
 		permission.SetId(id)
@@ -404,7 +401,6 @@ func cs3ReceivedShareToLibreGraphPermissions(ctx context.Context, logger *log.Lo
 		role := unifiedrole.CS3ResourcePermissionsToUnifiedRole(
 			*permissionSet,
 			unifiedrole.UnifiedRoleConditionGrantee,
-			resharing,
 		)
 
 		if role != nil {
diff --git a/services/graph/pkg/unifiedrole/unifiedrole.go b/services/graph/pkg/unifiedrole/unifiedrole.go
index 7438d67701f..91c3dfa3634 100644
--- a/services/graph/pkg/unifiedrole/unifiedrole.go
+++ b/services/graph/pkg/unifiedrole/unifiedrole.go
@@ -69,8 +69,8 @@ var legacyNames map[string]string = map[string]string{
 }
 
 // NewViewerUnifiedRole creates a viewer role. `sharing` indicates if sharing permission should be added
-func NewViewerUnifiedRole(sharing bool) *libregraph.UnifiedRoleDefinition {
-	r := conversions.NewViewerRole(sharing)
+func NewViewerUnifiedRole() *libregraph.UnifiedRoleDefinition {
+	r := conversions.NewViewerRole()
 	return &libregraph.UnifiedRoleDefinition{
 		Id:          proto.String(UnifiedRoleViewerID),
 		Description: proto.String("View and download."),
@@ -103,8 +103,8 @@ func NewSpaceViewerUnifiedRole() *libregraph.UnifiedRoleDefinition {
 }
 
 // NewEditorUnifiedRole creates an editor role. `sharing` indicates if sharing permission should be added
-func NewEditorUnifiedRole(sharing bool) *libregraph.UnifiedRoleDefinition {
-	r := conversions.NewEditorRole(sharing)
+func NewEditorUnifiedRole() *libregraph.UnifiedRoleDefinition {
+	r := conversions.NewEditorRole()
 	return &libregraph.UnifiedRoleDefinition{
 		Id:          proto.String(UnifiedRoleEditorID),
 		Description: proto.String("View, download, upload, edit, add and delete."),
@@ -137,8 +137,8 @@ func NewSpaceEditorUnifiedRole() *libregraph.UnifiedRoleDefinition {
 }
 
 // NewFileEditorUnifiedRole creates a file-editor role
-func NewFileEditorUnifiedRole(sharing bool) *libregraph.UnifiedRoleDefinition {
-	r := conversions.NewFileEditorRole(sharing)
+func NewFileEditorUnifiedRole() *libregraph.UnifiedRoleDefinition {
+	r := conversions.NewFileEditorRole()
 	return &libregraph.UnifiedRoleDefinition{
 		Id:          proto.String(UnifiedRoleFileEditorID),
 		Description: proto.String("View, download and edit."),
@@ -188,8 +188,8 @@ func NewManagerUnifiedRole() *libregraph.UnifiedRoleDefinition {
 }
 
 // NewUnifiedRoleFromID returns a unified role definition from the provided id
-func NewUnifiedRoleFromID(id string, resharing bool) (*libregraph.UnifiedRoleDefinition, error) {
-	for _, definition := range GetBuiltinRoleDefinitionList(resharing) {
+func NewUnifiedRoleFromID(id string) (*libregraph.UnifiedRoleDefinition, error) {
+	for _, definition := range GetBuiltinRoleDefinitionList() {
 		if definition.GetId() != id {
 			continue
 		}
@@ -200,13 +200,13 @@ func NewUnifiedRoleFromID(id string, resharing bool) (*libregraph.UnifiedRoleDef
 	return nil, errors.New("role not found")
 }
 
-func GetBuiltinRoleDefinitionList(resharing bool) []*libregraph.UnifiedRoleDefinition {
+func GetBuiltinRoleDefinitionList() []*libregraph.UnifiedRoleDefinition {
 	return []*libregraph.UnifiedRoleDefinition{
-		NewViewerUnifiedRole(resharing),
+		NewViewerUnifiedRole(),
 		NewSpaceViewerUnifiedRole(),
-		NewEditorUnifiedRole(resharing),
+		NewEditorUnifiedRole(),
 		NewSpaceEditorUnifiedRole(),
-		NewFileEditorUnifiedRole(resharing),
+		NewFileEditorUnifiedRole(),
 		NewUploaderUnifiedRole(),
 		NewManagerUnifiedRole(),
 	}
@@ -214,8 +214,8 @@ func GetBuiltinRoleDefinitionList(resharing bool) []*libregraph.UnifiedRoleDefin
 
 // GetApplicableRoleDefinitionsForActions returns a list of role definitions
 // that match the provided actions and constraints
-func GetApplicableRoleDefinitionsForActions(actions []string, constraints string, resharing, descending bool) []*libregraph.UnifiedRoleDefinition {
-	builtin := GetBuiltinRoleDefinitionList(resharing)
+func GetApplicableRoleDefinitionsForActions(actions []string, constraints string, descending bool) []*libregraph.UnifiedRoleDefinition {
+	builtin := GetBuiltinRoleDefinitionList()
 	definitions := make([]*libregraph.UnifiedRoleDefinition, 0, len(builtin))
 
 	for _, definition := range builtin {
@@ -402,14 +402,14 @@ func GetLegacyName(role libregraph.UnifiedRoleDefinition) string {
 
 // CS3ResourcePermissionsToUnifiedRole tries to find the UnifiedRoleDefinition that matches the supplied
 // CS3 ResourcePermissions and constraints.
-func CS3ResourcePermissionsToUnifiedRole(p provider.ResourcePermissions, constraints string, resharing bool) *libregraph.UnifiedRoleDefinition {
+func CS3ResourcePermissionsToUnifiedRole(p provider.ResourcePermissions, constraints string) *libregraph.UnifiedRoleDefinition {
 	actionSet := map[string]struct{}{}
 	for _, action := range CS3ResourcePermissionsToLibregraphActions(p) {
 		actionSet[action] = struct{}{}
 	}
 
 	var res *libregraph.UnifiedRoleDefinition
-	for _, uRole := range GetBuiltinRoleDefinitionList(resharing) {
+	for _, uRole := range GetBuiltinRoleDefinitionList() {
 		matchFound := false
 		for _, uPerm := range uRole.GetRolePermissions() {
 			if uPerm.GetCondition() != constraints {
@@ -448,6 +448,10 @@ func displayName(role *conversions.Role) *string {
 	if role == nil {
 		return nil
 	}
+
+	// linter wants this to be a var
+	canEdit := "Can edit"
+
 	var displayName string
 	switch role.Name {
 	case conversions.RoleViewer:
@@ -455,11 +459,11 @@ func displayName(role *conversions.Role) *string {
 	case conversions.RoleSpaceViewer:
 		displayName = "Can view"
 	case conversions.RoleEditor:
-		displayName = "Can edit"
+		displayName = canEdit
 	case conversions.RoleSpaceEditor:
-		displayName = "Can edit"
+		displayName = canEdit
 	case conversions.RoleFileEditor:
-		displayName = "Can edit"
+		displayName = canEdit
 	case conversions.RoleUploader:
 		displayName = "Can upload"
 	case conversions.RoleManager:
diff --git a/services/graph/pkg/validate/libregraph.go b/services/graph/pkg/validate/libregraph.go
index a727a5bbff1..fa316d141a6 100644
--- a/services/graph/pkg/validate/libregraph.go
+++ b/services/graph/pkg/validate/libregraph.go
@@ -84,8 +84,8 @@ func rolesAndActions(sl validator.StructLevel, roles, actions []string, allowEmp
 	var availableRoles []string
 	var availableActions []string
 	for _, definition := range append(
-		unifiedrole.GetBuiltinRoleDefinitionList(true),
-		unifiedrole.GetBuiltinRoleDefinitionList(false)...,
+		unifiedrole.GetBuiltinRoleDefinitionList(),
+		unifiedrole.GetBuiltinRoleDefinitionList()...,
 	) {
 		if slices.Contains(availableRoles, definition.GetId()) {
 			continue
diff --git a/services/notifications/pkg/email/l10n/locale/ja_JP/LC_MESSAGES/notifications.po b/services/notifications/pkg/email/l10n/locale/ja_JP/LC_MESSAGES/notifications.po
deleted file mode 100644
index 9b536ebf102..00000000000
--- a/services/notifications/pkg/email/l10n/locale/ja_JP/LC_MESSAGES/notifications.po
+++ /dev/null
@@ -1,119 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# Translators:
-# hoshi1800 <hoshi1800@gmail.com>, 2024
-# 
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: EMAIL\n"
-"POT-Creation-Date: 2024-04-05 00:41+0000\n"
-"PO-Revision-Date: 2023-04-19 11:11+0000\n"
-"Last-Translator: hoshi1800 <hoshi1800@gmail.com>, 2024\n"
-"Language-Team: Japanese (Japan) (https://app.transifex.com/owncloud-org/teams/6149/ja_JP/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja_JP\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#. UnsharedSpace email template, resolves via {{ .CallToAction }}
-#: pkg/email/templates.go:60
-msgid "Click here to check it: {ShareLink}"
-msgstr "ここをクリックして確認してください: {ShareLink}"
-
-#. ShareCreated email template, resolves via {{ .CallToAction }}
-#. SharedSpace email template, resolves via {{ .CallToAction }}
-#: pkg/email/templates.go:18 pkg/email/templates.go:45
-msgid "Click here to view it: {ShareLink}"
-msgstr "ここをクリックして閲覧してください: {ShareLink}"
-
-#. ShareCreated email template, resolves via {{ .Greeting }}
-#: pkg/email/templates.go:14
-msgid "Hello {ShareGrantee}"
-msgstr "こんにちは {ShareGrantee}"
-
-#. ShareExpired email template, resolves via {{ .Greeting }}
-#: pkg/email/templates.go:27
-msgid "Hello {ShareGrantee},"
-msgstr "こんにちは {ShareGrantee}、"
-
-#. SharedSpace email template, resolves via {{ .Greeting }}
-#. UnsharedSpace email template, resolves via {{ .Greeting }}
-#. MembershipExpired email template, resolves via {{ .Greeting }}
-#: pkg/email/templates.go:41 pkg/email/templates.go:54
-#: pkg/email/templates.go:69
-msgid "Hello {SpaceGrantee},"
-msgstr "こんにちは {ShareGrantee}、"
-
-#. MembershipExpired email template, Subject field (resolves directly)
-#: pkg/email/templates.go:67
-msgid "Membership of '{SpaceName}' expired at {ExpiredAt}"
-msgstr "「{SpaceName}」のメンバーシップは {ExpiredAt} に期限が切れました"
-
-#. ShareExpired email template, Subject field (resolves directly)
-#: pkg/email/templates.go:25
-msgid "Share to '{ShareFolder}' expired at {ExpiredAt}"
-msgstr "「{ShareFolder}」への共有は {ExpiredAt} に期限が切れました"
-
-#. MembershipExpired email template, resolves via {{ .MessageBody }}
-#: pkg/email/templates.go:71
-msgid ""
-"Your membership of space {SpaceName} has expired at {ExpiredAt}\n"
-"\n"
-"Even though this membership has expired you still might have access through other shares and/or space memberships"
-msgstr ""
-"あなたのスペース {SpaceName} のメンバーシップは {ExpiredAt} に期限が切れました\n"
-"\n"
-"このメンバーシップの有効期限が切れても、他の共有やスペース メンバーシップを通じてアクセスできる場合があります"
-
-#. ShareExpired email template, resolves via {{ .MessageBody }}
-#: pkg/email/templates.go:29
-msgid ""
-"Your share to {ShareFolder} has expired at {ExpiredAt}\n"
-"\n"
-"Even though this share has been revoked you still might have access through other shares and/or space memberships."
-msgstr ""
-"あなたの {ShareFolder} への共有の有効期限は {ExpiredAt} に切れました\n"
-"\n"
-"この共有が取り消されても、他の共有やスペース メンバーシップを通じてアクセスできる可能性があります。"
-
-#. ShareCreated email template, resolves via {{ .MessageBody }}
-#: pkg/email/templates.go:16
-msgid "{ShareSharer} has shared \"{ShareFolder}\" with you."
-msgstr "{ShareSharer} が「{ShareFolder}」をあなたと共有しています。"
-
-#. ShareCreated email template, Subject field (resolves directly)
-#: pkg/email/templates.go:12
-msgid "{ShareSharer} shared '{ShareFolder}' with you"
-msgstr "{ShareSharer} が「{ShareFolder}」をあなたと共有しました"
-
-#. SharedSpace email template, resolves via {{ .MessageBody }}
-#: pkg/email/templates.go:43
-msgid "{SpaceSharer} has invited you to join \"{SpaceName}\"."
-msgstr "{SpaceShaler} があなたを「{SpaceName}」に招待しています。"
-
-#. UnsharedSpace email template, resolves via {{ .MessageBody }}
-#: pkg/email/templates.go:56
-msgid ""
-"{SpaceSharer} has removed you from \"{SpaceName}\".\n"
-"\n"
-"You might still have access through your other groups or direct membership."
-msgstr ""
-"{SpaceShaler} があなたを「{SpaceName}」から削除しました。\n"
-"\n"
-"他のグループまたは直接のメンバーシップを通じて引き続きアクセスできる可能性があります。"
-
-#. SharedSpace email template, Subject field (resolves directly)
-#: pkg/email/templates.go:39
-msgid "{SpaceSharer} invited you to join {SpaceName}"
-msgstr "{SpaceShaler} が {SpaceName} への参加を招待しました"
-
-#. UnsharedSpace email template, Subject field (resolves directly)
-#: pkg/email/templates.go:52
-msgid "{SpaceSharer} removed you from {SpaceName}"
-msgstr "{SpaceShaler} があなたを {SpaceName} から削除しました"
diff --git a/services/sharing/pkg/config/config.go b/services/sharing/pkg/config/config.go
index 9ba270cb837..3561802b7cc 100644
--- a/services/sharing/pkg/config/config.go
+++ b/services/sharing/pkg/config/config.go
@@ -21,8 +21,6 @@ type Config struct {
 
 	SkipUserGroupsInToken bool `yaml:"skip_user_groups_in_token" env:"SHARING_SKIP_USER_GROUPS_IN_TOKEN" desc:"Disables the loading of user's group memberships from the reva access token." introductionVersion:"pre5.0"`
 
-	EnableResharing bool `yaml:"enable_resharing" env:"OCIS_ENABLE_RESHARING;SHARING_ENABLE_RESHARING" desc:"Changing this value is NOT supported. Enables the support for resharing." introductionVersion:"5.0" deprecationVersion:"5.0" deprecationInfo:"Resharing will be removed in the future."`
-
 	UserSharingDriver              string               `yaml:"user_sharing_driver" env:"SHARING_USER_DRIVER" desc:"Driver to be used to persist shares. Supported values are 'jsoncs3', 'json', 'cs3' (deprecated) and 'owncloudsql'." introductionVersion:"pre5.0"`
 	UserSharingDrivers             UserSharingDrivers   `yaml:"user_sharing_drivers"`
 	PublicSharingDriver            string               `yaml:"public_sharing_driver" env:"SHARING_PUBLIC_DRIVER" desc:"Driver to be used to persist public shares. Supported values are 'jsoncs3', 'json' and 'cs3' (deprecated)." introductionVersion:"pre5.0"`
diff --git a/services/sharing/pkg/config/defaults/defaultconfig.go b/services/sharing/pkg/config/defaults/defaultconfig.go
index 6f0994fa2f5..57026e0b9a3 100644
--- a/services/sharing/pkg/config/defaults/defaultconfig.go
+++ b/services/sharing/pkg/config/defaults/defaultconfig.go
@@ -35,7 +35,6 @@ func DefaultConfig() *config.Config {
 			Name: "sharing",
 		},
 		Reva:              shared.DefaultRevaConfig(),
-		EnableResharing:   false,
 		UserSharingDriver: "jsoncs3",
 		UserSharingDrivers: config.UserSharingDrivers{
 			JSON: config.UserSharingJSONDriver{
diff --git a/services/sharing/pkg/revaconfig/config.go b/services/sharing/pkg/revaconfig/config.go
index d13427f2f0e..8f02b796de4 100644
--- a/services/sharing/pkg/revaconfig/config.go
+++ b/services/sharing/pkg/revaconfig/config.go
@@ -86,7 +86,6 @@ func SharingConfigFromStruct(cfg *config.Config, logger log.Logger) (map[string]
 							},
 						},
 					},
-					"disable_resharing": !cfg.EnableResharing,
 				},
 				"publicshareprovider": map[string]interface{}{
 					"gateway_addr":                       cfg.Reva.Address,
diff --git a/vendor/github.com/cs3org/reva/v2/internal/grpc/services/ocmshareprovider/ocmshareprovider.go b/vendor/github.com/cs3org/reva/v2/internal/grpc/services/ocmshareprovider/ocmshareprovider.go
index 0f68136fdfb..5c5824540c1 100644
--- a/vendor/github.com/cs3org/reva/v2/internal/grpc/services/ocmshareprovider/ocmshareprovider.go
+++ b/vendor/github.com/cs3org/reva/v2/internal/grpc/services/ocmshareprovider/ocmshareprovider.go
@@ -327,7 +327,7 @@ func (s *service) CreateOCMShare(ctx context.Context, req *ocm.CreateOCMShareReq
 		ProviderID: ocmshare.Id.OpaqueId,
 		Owner: formatOCMUser(&userpb.UserId{
 			OpaqueId: info.Owner.OpaqueId,
-			Idp:      s.conf.ProviderDomain, // FIXME: this is not generally true in case of resharing
+			Idp:      s.conf.ProviderDomain,
 		}),
 		Sender: formatOCMUser(&userpb.UserId{
 			OpaqueId: user.Id.OpaqueId,
diff --git a/vendor/github.com/cs3org/reva/v2/internal/grpc/services/publicshareprovider/publicshareprovider.go b/vendor/github.com/cs3org/reva/v2/internal/grpc/services/publicshareprovider/publicshareprovider.go
index 3df749f8823..b987b96acf6 100644
--- a/vendor/github.com/cs3org/reva/v2/internal/grpc/services/publicshareprovider/publicshareprovider.go
+++ b/vendor/github.com/cs3org/reva/v2/internal/grpc/services/publicshareprovider/publicshareprovider.go
@@ -593,7 +593,7 @@ func isInternalLink(req *link.UpdatePublicShareRequest, ps *link.PublicShare) bo
 }
 
 func enforcePassword(canOptOut bool, permissions *provider.ResourcePermissions, conf *config) bool {
-	isReadOnly := conversions.SufficientCS3Permissions(conversions.NewViewerRole(true).CS3ResourcePermissions(), permissions)
+	isReadOnly := conversions.SufficientCS3Permissions(conversions.NewViewerRole().CS3ResourcePermissions(), permissions)
 	if isReadOnly && canOptOut {
 		return false
 	}
diff --git a/vendor/github.com/cs3org/reva/v2/internal/grpc/services/usershareprovider/usershareprovider.go b/vendor/github.com/cs3org/reva/v2/internal/grpc/services/usershareprovider/usershareprovider.go
index 0c503e7cc29..779409faac0 100644
--- a/vendor/github.com/cs3org/reva/v2/internal/grpc/services/usershareprovider/usershareprovider.go
+++ b/vendor/github.com/cs3org/reva/v2/internal/grpc/services/usershareprovider/usershareprovider.go
@@ -55,7 +55,6 @@ type config struct {
 	Drivers               map[string]map[string]interface{} `mapstructure:"drivers"`
 	GatewayAddr           string                            `mapstructure:"gateway_addr"`
 	AllowedPathsForShares []string                          `mapstructure:"allowed_paths_for_shares"`
-	DisableResharing      bool                              `mapstructure:"disable_resharing"`
 }
 
 func (c *config) init() {
@@ -68,7 +67,6 @@ type service struct {
 	sm                    share.Manager
 	gatewaySelector       pool.Selectable[gateway.GatewayAPIClient]
 	allowedPathsForShares []*regexp.Regexp
-	disableResharing      bool
 }
 
 func getShareManager(c *config) (share.Manager, error) {
@@ -129,16 +127,15 @@ func NewDefault(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error
 		return nil, err
 	}
 
-	return New(gatewaySelector, sm, allowedPathsForShares, c.DisableResharing), nil
+	return New(gatewaySelector, sm, allowedPathsForShares), nil
 }
 
 // New creates a new user share provider svc
-func New(gatewaySelector pool.Selectable[gateway.GatewayAPIClient], sm share.Manager, allowedPathsForShares []*regexp.Regexp, disableResharing bool) rgrpc.Service {
+func New(gatewaySelector pool.Selectable[gateway.GatewayAPIClient], sm share.Manager, allowedPathsForShares []*regexp.Regexp) rgrpc.Service {
 	service := &service{
 		sm:                    sm,
 		gatewaySelector:       gatewaySelector,
 		allowedPathsForShares: allowedPathsForShares,
-		disableResharing:      disableResharing,
 	}
 
 	return service
@@ -160,8 +157,8 @@ func (s *service) CreateShare(ctx context.Context, req *collaboration.CreateShar
 	log := appctx.GetLogger(ctx)
 	user := ctxpkg.ContextMustGetUser(ctx)
 
-	// when resharing is disabled grants must not allow grant permissions
-	if s.disableResharing && HasGrantPermissions(req.GetGrant().GetPermissions().GetPermissions()) {
+	// Grants must not allow grant permissions
+	if HasGrantPermissions(req.GetGrant().GetPermissions().GetPermissions()) {
 		return &collaboration.CreateShareResponse{
 			Status: status.NewInvalidArg(ctx, "resharing not supported"),
 		}, nil
@@ -342,8 +339,8 @@ func (s *service) UpdateShare(ctx context.Context, req *collaboration.UpdateShar
 	log := appctx.GetLogger(ctx)
 	user := ctxpkg.ContextMustGetUser(ctx)
 
-	// when resharing is disabled grants must not allow grant permissions
-	if s.disableResharing && HasGrantPermissions(req.GetShare().GetPermissions().GetPermissions()) {
+	// Grants must not allow grant permissions
+	if HasGrantPermissions(req.GetShare().GetPermissions().GetPermissions()) {
 		return &collaboration.UpdateShareResponse{
 			Status: status.NewInvalidArg(ctx, "resharing not supported"),
 		}, nil
diff --git a/vendor/github.com/cs3org/reva/v2/internal/http/services/owncloud/ocs/data/capabilities.go b/vendor/github.com/cs3org/reva/v2/internal/http/services/owncloud/ocs/data/capabilities.go
index 369ca231792..82e2fdf2b9a 100644
--- a/vendor/github.com/cs3org/reva/v2/internal/http/services/owncloud/ocs/data/capabilities.go
+++ b/vendor/github.com/cs3org/reva/v2/internal/http/services/owncloud/ocs/data/capabilities.go
@@ -209,7 +209,6 @@ type CapabilitiesDav struct {
 // CapabilitiesFilesSharing TODO document
 type CapabilitiesFilesSharing struct {
 	APIEnabled                    ocsBool                                  `json:"api_enabled" xml:"api_enabled" mapstructure:"api_enabled"`
-	Resharing                     ocsBool                                  `json:"resharing" xml:"resharing"`
 	GroupSharing                  ocsBool                                  `json:"group_sharing" xml:"group_sharing" mapstructure:"group_sharing"`
 	SharingRoles                  ocsBool                                  `json:"sharing_roles" xml:"sharing_roles" mapstructure:"sharing_roles"`
 	DenyAccess                    ocsBool                                  `json:"deny_access" xml:"deny_access" mapstructure:"deny_access"`
@@ -222,6 +221,8 @@ type CapabilitiesFilesSharing struct {
 	Federation                    *CapabilitiesFilesSharingFederation      `json:"federation" xml:"federation"`
 	Public                        *CapabilitiesFilesSharingPublic          `json:"public" xml:"public"`
 	User                          *CapabilitiesFilesSharingUser            `json:"user" xml:"user"`
+	// TODO: Remove next line once web defaults to resharing=false
+	Resharing ocsBool `json:"resharing" xml:"resharing"`
 }
 
 // CapabilitiesFilesSharingPublic TODO document
diff --git a/vendor/github.com/cs3org/reva/v2/internal/http/services/owncloud/ocs/handlers/apps/sharing/shares/shares.go b/vendor/github.com/cs3org/reva/v2/internal/http/services/owncloud/ocs/handlers/apps/sharing/shares/shares.go
index 694273866e7..4a46ebaa139 100644
--- a/vendor/github.com/cs3org/reva/v2/internal/http/services/owncloud/ocs/handlers/apps/sharing/shares/shares.go
+++ b/vendor/github.com/cs3org/reva/v2/internal/http/services/owncloud/ocs/handlers/apps/sharing/shares/shares.go
@@ -69,8 +69,6 @@ import (
 
 const (
 	storageIDPrefix string = "shared::"
-
-	_resharingDefault bool = false
 )
 
 var (
@@ -92,7 +90,6 @@ type Handler struct {
 	userIdentifierCache                   *ttlcache.Cache
 	statCache                             cache.StatCache
 	deniable                              bool
-	resharing                             bool
 	publicPasswordEnforced                passwordEnforced
 	passwordValidator                     password.Validator
 
@@ -146,7 +143,6 @@ func (h *Handler) Init(c *config.Config) error {
 	h.userIdentifierCache = ttlcache.NewCache()
 	_ = h.userIdentifierCache.SetTTL(time.Second * time.Duration(c.UserIdentifierCacheTTL))
 	h.deniable = c.EnableDenials
-	h.resharing = resharing(c)
 	h.publicPasswordEnforced = publicPwdEnforced(c)
 	h.passwordValidator = passwordPolicies(c)
 
@@ -292,6 +288,12 @@ func (h *Handler) CreateShare(w http.ResponseWriter, r *http.Request) {
 			return
 		}
 
+		// resharing is forbidden
+		if role.CS3ResourcePermissions().GetAddGrant() {
+			response.WriteOCSError(w, r, response.MetaBadRequest.StatusCode, "resharing not supported", nil)
+			return
+		}
+
 		var share *collaboration.Share
 		if shareType == int(conversions.ShareTypeUser) {
 			share, ocsErr = h.createUserShare(w, r, statRes.Info, role, val)
@@ -320,7 +322,7 @@ func (h *Handler) CreateShare(w http.ResponseWriter, r *http.Request) {
 		response.WriteOCSSuccess(w, r, s)
 	case int(conversions.ShareTypePublicLink):
 		// public links default to read only
-		_, _, ocsErr := h.extractPermissions(reqRole, reqPermissions, statRes.Info, conversions.NewViewerRole(h.resharing))
+		_, _, ocsErr := h.extractPermissions(reqRole, reqPermissions, statRes.Info, conversions.NewViewerRole())
 		if ocsErr != nil && ocsErr.Error != conversions.ErrZeroPermission {
 			response.WriteOCSError(w, r, http.StatusForbidden, "No share permission", nil)
 			return
@@ -339,7 +341,7 @@ func (h *Handler) CreateShare(w http.ResponseWriter, r *http.Request) {
 		response.WriteOCSSuccess(w, r, s)
 	case int(conversions.ShareTypeFederatedCloudShare):
 		// federated shares default to read only
-		if role, val, err := h.extractPermissions(reqRole, reqPermissions, statRes.Info, conversions.NewViewerRole(h.resharing)); err == nil {
+		if role, val, err := h.extractPermissions(reqRole, reqPermissions, statRes.Info, conversions.NewViewerRole()); err == nil {
 			h.createFederatedCloudShare(w, r, statRes.Info, role, val)
 		}
 	case int(conversions.ShareTypeSpaceMembershipUser), int(conversions.ShareTypeSpaceMembershipGroup):
@@ -429,7 +431,7 @@ func (h *Handler) extractPermissions(reqRole string, reqPermissions string, ri *
 
 	// the share role overrides the requested permissions
 	if reqRole != "" {
-		role = conversions.RoleFromName(reqRole, h.resharing)
+		role = conversions.RoleFromName(reqRole)
 	}
 
 	// if the role is unknown - fall back to reqPermissions or defaultPermissions
@@ -1685,10 +1687,3 @@ func sufficientPermissions(existing, requested *provider.ResourcePermissions, is
 	rp := conversions.RoleFromResourcePermissions(requested, islink).OCSPermissions()
 	return ep.Contain(rp)
 }
-
-func resharing(c *config.Config) bool {
-	if c != nil && c.Capabilities.Capabilities != nil && c.Capabilities.Capabilities.FilesSharing != nil {
-		return bool(c.Capabilities.Capabilities.FilesSharing.Resharing)
-	}
-	return _resharingDefault
-}
diff --git a/vendor/github.com/cs3org/reva/v2/internal/http/services/sciencemesh/share.go b/vendor/github.com/cs3org/reva/v2/internal/http/services/sciencemesh/share.go
index af51c5e6b4e..c5bc78e5629 100644
--- a/vendor/github.com/cs3org/reva/v2/internal/http/services/sciencemesh/share.go
+++ b/vendor/github.com/cs3org/reva/v2/internal/http/services/sciencemesh/share.go
@@ -150,9 +150,9 @@ func (h *sharesHandler) CreateShare(w http.ResponseWriter, r *http.Request) {
 func getPermissionsByRole(role string) (*providerpb.ResourcePermissions, appprovider.ViewMode) {
 	switch role {
 	case "viewer":
-		return conversions.NewViewerRole(false).CS3ResourcePermissions(), appprovider.ViewMode_VIEW_MODE_READ_ONLY
+		return conversions.NewViewerRole().CS3ResourcePermissions(), appprovider.ViewMode_VIEW_MODE_READ_ONLY
 	case "editor":
-		return conversions.NewEditorRole(false).CS3ResourcePermissions(), appprovider.ViewMode_VIEW_MODE_READ_WRITE
+		return conversions.NewEditorRole().CS3ResourcePermissions(), appprovider.ViewMode_VIEW_MODE_READ_WRITE
 	}
 	return nil, 0
 }
diff --git a/vendor/github.com/cs3org/reva/v2/pkg/cbox/utils/conversions.go b/vendor/github.com/cs3org/reva/v2/pkg/cbox/utils/conversions.go
index a2cc7d18188..b94b50b3b9b 100644
--- a/vendor/github.com/cs3org/reva/v2/pkg/cbox/utils/conversions.go
+++ b/vendor/github.com/cs3org/reva/v2/pkg/cbox/utils/conversions.go
@@ -145,12 +145,12 @@ func SharePermToInt(p *provider.ResourcePermissions) int {
 func IntTosharePerm(p int, itemType string) *provider.ResourcePermissions {
 	switch p {
 	case 1:
-		return conversions.NewViewerRole(false).CS3ResourcePermissions()
+		return conversions.NewViewerRole().CS3ResourcePermissions()
 	case 15:
 		if itemType == "folder" {
-			return conversions.NewEditorRole(false).CS3ResourcePermissions()
+			return conversions.NewEditorRole().CS3ResourcePermissions()
 		}
-		return conversions.NewFileEditorRole(false).CS3ResourcePermissions()
+		return conversions.NewFileEditorRole().CS3ResourcePermissions()
 	case 4:
 		return conversions.NewUploaderRole().CS3ResourcePermissions()
 	default:
diff --git a/vendor/github.com/cs3org/reva/v2/pkg/conversions/role.go b/vendor/github.com/cs3org/reva/v2/pkg/conversions/role.go
index cbde91bffcb..29621c4aaee 100644
--- a/vendor/github.com/cs3org/reva/v2/pkg/conversions/role.go
+++ b/vendor/github.com/cs3org/reva/v2/pkg/conversions/role.go
@@ -141,20 +141,20 @@ func (r *Role) WebDAVPermissions(isDir, isShared, isMountpoint, isPublic bool) s
 }
 
 // RoleFromName creates a role from the name
-func RoleFromName(name string, sharing bool) *Role {
+func RoleFromName(name string) *Role {
 	switch name {
 	case RoleDenied:
 		return NewDeniedRole()
 	case RoleViewer:
-		return NewViewerRole(sharing)
+		return NewViewerRole()
 	case RoleSpaceViewer:
 		return NewSpaceViewerRole()
 	case RoleEditor:
-		return NewEditorRole(sharing)
+		return NewEditorRole()
 	case RoleSpaceEditor:
 		return NewSpaceEditorRole()
 	case RoleFileEditor:
-		return NewFileEditorRole(sharing)
+		return NewFileEditorRole()
 	case RoleUploader:
 		return NewUploaderRole()
 	case RoleManager:
@@ -183,15 +183,11 @@ func NewDeniedRole() *Role {
 }
 
 // NewViewerRole creates a viewer role. `sharing` indicates if sharing permission should be added
-func NewViewerRole(sharing bool) *Role {
+func NewViewerRole() *Role {
 	p := PermissionRead
-	if sharing {
-		p |= PermissionShare
-	}
 	return &Role{
 		Name: RoleViewer,
 		cS3ResourcePermissions: &provider.ResourcePermissions{
-			AddGrant:             sharing,
 			GetPath:              true,
 			GetQuota:             true,
 			InitiateFileDownload: true,
@@ -221,15 +217,11 @@ func NewSpaceViewerRole() *Role {
 }
 
 // NewEditorRole creates an editor role. `sharing` indicates if sharing permission should be added
-func NewEditorRole(sharing bool) *Role {
+func NewEditorRole() *Role {
 	p := PermissionRead | PermissionCreate | PermissionWrite | PermissionDelete
-	if sharing {
-		p |= PermissionShare
-	}
 	return &Role{
 		Name: RoleEditor,
 		cS3ResourcePermissions: &provider.ResourcePermissions{
-			AddGrant:             sharing,
 			CreateContainer:      true,
 			Delete:               true,
 			GetPath:              true,
@@ -271,15 +263,11 @@ func NewSpaceEditorRole() *Role {
 }
 
 // NewFileEditorRole creates a file-editor role
-func NewFileEditorRole(sharing bool) *Role {
+func NewFileEditorRole() *Role {
 	p := PermissionRead | PermissionWrite
-	if sharing {
-		p |= PermissionShare
-	}
 	return &Role{
 		Name: RoleEditor,
 		cS3ResourcePermissions: &provider.ResourcePermissions{
-			AddGrant:             sharing,
 			GetPath:              true,
 			GetQuota:             true,
 			InitiateFileDownload: true,
@@ -378,34 +366,30 @@ func NewManagerRole() *Role {
 // RoleFromOCSPermissions tries to map ocs permissions to a role
 // TODO: rethink using this. ocs permissions cannot be assigned 1:1 to roles
 func RoleFromOCSPermissions(p Permissions, ri *provider.ResourceInfo) *Role {
-	if p == PermissionInvalid {
+	switch {
+	// Invalid
+	case p == PermissionInvalid:
 		return NewNoneRole()
-	}
-
-	if p.Contain(PermissionRead) {
-		if p.Contain(PermissionWrite) && p.Contain(PermissionCreate) && p.Contain(PermissionDelete) {
-			if p.Contain(PermissionShare) {
-				return NewEditorRole(true)
-			}
-
-			if isSpaceRoot(ri) {
-				return NewSpaceEditorRole()
-			}
-		}
-
-		if p == PermissionRead && isSpaceRoot(ri) {
+	// Uploader
+	case p == PermissionCreate:
+		return NewUploaderRole()
+	// Viewer/SpaceViewer
+	case p == PermissionRead:
+		if isSpaceRoot(ri) {
 			return NewSpaceViewerRole()
 		}
-
-		if p == PermissionRead|PermissionShare && !isSpaceRoot(ri) {
-			return NewViewerRole(true)
+		return NewViewerRole()
+	// Editor/SpaceEditor
+	case p.Contain(PermissionRead) && p.Contain(PermissionWrite) && p.Contain(PermissionCreate) && p.Contain(PermissionDelete) && !p.Contain(PermissionShare):
+		if isSpaceRoot(ri) {
+			return NewSpaceEditorRole()
 		}
+
+		return NewEditorRole()
+	// Custom
+	default:
+		return NewLegacyRoleFromOCSPermissions(p)
 	}
-	if p == PermissionCreate {
-		return NewUploaderRole()
-	}
-	// legacy
-	return NewLegacyRoleFromOCSPermissions(p)
 }
 
 func isSpaceRoot(ri *provider.ResourceInfo) bool {
diff --git a/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/eosfs/eosfs.go b/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/eosfs/eosfs.go
index 50f9493f802..2d11ecdfa76 100644
--- a/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/eosfs/eosfs.go
+++ b/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/eosfs/eosfs.go
@@ -83,8 +83,6 @@ const LockTypeKey = "reva.lock.type"
 
 var hiddenReg = regexp.MustCompile(`\.sys\..#.`)
 
-var _resharing = false
-
 func (c *Config) init() {
 	c.Namespace = path.Clean(c.Namespace)
 	if !strings.HasPrefix(c.Namespace, "/") {
@@ -2129,12 +2127,12 @@ func (fs *eosfs) permissionSet(ctx context.Context, eosFileInfo *eosclient.FileI
 			// The role names should not be hardcoded any more as they will come from config in the future
 			if publicShare, ok := u.Opaque.Map["public-share-role"]; ok {
 				if string(publicShare.Value) == "editor" {
-					return conversions.NewEditorRole(_resharing).CS3ResourcePermissions()
+					return conversions.NewEditorRole().CS3ResourcePermissions()
 				} else if string(publicShare.Value) == "uploader" {
 					return conversions.NewUploaderRole().CS3ResourcePermissions()
 				}
 				// Default to viewer role
-				return conversions.NewViewerRole(_resharing).CS3ResourcePermissions()
+				return conversions.NewViewerRole().CS3ResourcePermissions()
 			}
 		}
 
diff --git a/vendor/github.com/onsi/gomega/CHANGELOG.md b/vendor/github.com/onsi/gomega/CHANGELOG.md
index 01ec5245cdc..9a14b81517e 100644
--- a/vendor/github.com/onsi/gomega/CHANGELOG.md
+++ b/vendor/github.com/onsi/gomega/CHANGELOG.md
@@ -1,16 +1,3 @@
-## 1.32.0
-
-### Maintenance
-- Migrate github.com/golang/protobuf to google.golang.org/protobuf [436a197]
-  
-  This release drops the deprecated github.com/golang/protobuf and adopts google.golang.org/protobuf.  Care was taken to ensure the release is backwards compatible (thanks @jbduncan !).  Please open an issue if you run into one.
-
-- chore: test with Go 1.22 (#733) [32ef35e]
-- Bump golang.org/x/net from 0.19.0 to 0.20.0 (#717) [a0d0387]
-- Bump github-pages and jekyll-feed in /docs (#732) [b71e477]
-- docs: fix typo and broken anchor link to gstruct [f460154]
-- docs: fix HaveEach matcher signature [a2862e4]
-
 ## 1.31.1
 
 ### Fixes
diff --git a/vendor/github.com/onsi/gomega/gomega_dsl.go b/vendor/github.com/onsi/gomega/gomega_dsl.go
index ffb81b1feb3..5b46a165815 100644
--- a/vendor/github.com/onsi/gomega/gomega_dsl.go
+++ b/vendor/github.com/onsi/gomega/gomega_dsl.go
@@ -22,7 +22,7 @@ import (
 	"github.com/onsi/gomega/types"
 )
 
-const GOMEGA_VERSION = "1.32.0"
+const GOMEGA_VERSION = "1.31.1"
 
 const nilGomegaPanic = `You are trying to make an assertion, but haven't registered Gomega's fail handler.
 If you're using Ginkgo then you probably forgot to put your assertion in an It().
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 3dfd253a372..439e7d3c562 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -366,7 +366,7 @@ github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1
 github.com/cs3org/go-cs3apis/cs3/storage/registry/v1beta1
 github.com/cs3org/go-cs3apis/cs3/tx/v1beta1
 github.com/cs3org/go-cs3apis/cs3/types/v1beta1
-# github.com/cs3org/reva/v2 v2.19.2-0.20240328104440-9c04f2d8ab7e
+# github.com/cs3org/reva/v2 v2.19.2-0.20240404085416-251ba8d12f6f
 ## explicit; go 1.21
 github.com/cs3org/reva/v2/cmd/revad/internal/grace
 github.com/cs3org/reva/v2/cmd/revad/runtime
@@ -1490,7 +1490,7 @@ github.com/onsi/ginkgo/v2/internal/parallel_support
 github.com/onsi/ginkgo/v2/internal/testingtproxy
 github.com/onsi/ginkgo/v2/reporters
 github.com/onsi/ginkgo/v2/types
-# github.com/onsi/gomega v1.32.0
+# github.com/onsi/gomega v1.31.1
 ## explicit; go 1.20
 github.com/onsi/gomega
 github.com/onsi/gomega/format


Test patch:
diff --git a/services/graph/pkg/service/v0/api_driveitem_permissions_test.go b/services/graph/pkg/service/v0/api_driveitem_permissions_test.go
index 755aacb8903..3c2d25bb829 100644
--- a/services/graph/pkg/service/v0/api_driveitem_permissions_test.go
+++ b/services/graph/pkg/service/v0/api_driveitem_permissions_test.go
@@ -164,13 +164,13 @@ var _ = Describe("DriveItemPermissionsService", func() {
 			driveItemInvite.Recipients = []libregraph.DriveRecipient{
 				{ObjectId: libregraph.PtrString("1"), LibreGraphRecipientType: libregraph.PtrString("user")},
 			}
-			driveItemInvite.Roles = []string{unifiedrole.NewViewerUnifiedRole(true).GetId()}
+			driveItemInvite.Roles = []string{unifiedrole.NewViewerUnifiedRole().GetId()}
 
 			permission, err := driveItemPermissionsService.Invite(context.Background(), driveItemId, driveItemInvite)
 			Expect(err).ToNot(HaveOccurred())
 
 			Expect(permission.GetRoles()).To(HaveLen(1))
-			Expect(permission.GetRoles()[0]).To(Equal(unifiedrole.NewViewerUnifiedRole(true).GetId()))
+			Expect(permission.GetRoles()[0]).To(Equal(unifiedrole.NewViewerUnifiedRole().GetId()))
 		})
 
 		It("fails with wrong role", func() {
@@ -311,7 +311,7 @@ var _ = Describe("DriveItemPermissionsService", func() {
 		It("populates allowedValues for files that are not shared", func() {
 			statResponse.Info = &provider.ResourceInfo{
 				Id:            &itemID,
-				PermissionSet: roleconversions.NewViewerRole(false).CS3ResourcePermissions(),
+				PermissionSet: roleconversions.NewViewerRole().CS3ResourcePermissions(),
 			}
 			gatewayClient.On("Stat", mock.Anything, mock.Anything).Return(statResponse, nil)
 			gatewayClient.On("ListShares", mock.Anything, mock.Anything).Return(listSharesResponse, nil)
@@ -324,13 +324,13 @@ var _ = Describe("DriveItemPermissionsService", func() {
 		It("returns one permission per share", func() {
 			statResponse.Info = &provider.ResourceInfo{
 				Id:            &itemID,
-				PermissionSet: roleconversions.NewEditorRole(false).CS3ResourcePermissions(),
+				PermissionSet: roleconversions.NewEditorRole().CS3ResourcePermissions(),
 			}
 			listSharesResponse.Shares = []*collaboration.Share{
 				{
 					Id: &collaboration.ShareId{OpaqueId: "1"},
 					Permissions: &collaboration.SharePermissions{
-						Permissions: roleconversions.NewViewerRole(false).CS3ResourcePermissions(),
+						Permissions: roleconversions.NewViewerRole().CS3ResourcePermissions(),
 					},
 					ResourceId: &provider.ResourceId{
 						StorageId: "1",
@@ -358,7 +358,7 @@ var _ = Describe("DriveItemPermissionsService", func() {
 						SpaceId:   "spaceid",
 						OpaqueId:  "public-share-opaqueid",
 					},
-					Permissions: &link.PublicSharePermissions{Permissions: roleconversions.NewViewerRole(false).CS3ResourcePermissions()},
+					Permissions: &link.PublicSharePermissions{Permissions: roleconversions.NewViewerRole().CS3ResourcePermissions()},
 				},
 			}
 
@@ -408,7 +408,7 @@ var _ = Describe("DriveItemPermissionsService", func() {
 			gatewayClient.On("ListPublicShares", mock.Anything, mock.Anything).Return(listPublicSharesResponse, nil)
 			statResponse.Info = &provider.ResourceInfo{
 				Id:            listSpacesResponse.StorageSpaces[0].Root,
-				PermissionSet: roleconversions.NewViewerRole(false).CS3ResourcePermissions(),
+				PermissionSet: roleconversions.NewViewerRole().CS3ResourcePermissions(),
 			}
 			gatewayClient.On("Stat", mock.Anything, mock.Anything).Return(statResponse, nil)
 			permissions, err := driveItemPermissionsService.ListSpaceRootPermissions(context.Background(), driveId)
@@ -586,7 +586,7 @@ var _ = Describe("DriveItemPermissionsService", func() {
 					},
 				},
 				Permissions: &collaboration.SharePermissions{
-					Permissions: roleconversions.NewViewerRole(true).CS3ResourcePermissions(),
+					Permissions: roleconversions.NewViewerRole().CS3ResourcePermissions(),
 				},
 			}
 			getShareMockResponse = &collaboration.GetShareResponse{
@@ -798,7 +798,7 @@ var _ = Describe("DriveItemPermissionsService", func() {
 			gatewayClient.On("Stat", mock.Anything, mock.Anything).Return(statResponse, nil)
 			gatewayClient.On("GetUser", mock.Anything, mock.Anything).Return(getUserResponse, nil)
 
-			driveItemPermission.SetRoles([]string{unifiedrole.NewFileEditorUnifiedRole(false).GetId()})
+			driveItemPermission.SetRoles([]string{unifiedrole.NewFileEditorUnifiedRole().GetId()})
 			spaceId := provider.ResourceId{
 				StorageId: "1",
 				SpaceId:   "2",
@@ -980,7 +980,7 @@ var _ = Describe("DriveItemPermissionsApi", func() {
 					ObjectId:                libregraph.PtrString("1"),
 					LibreGraphRecipientType: libregraph.PtrString("user")},
 			},
-			Roles: []string{unifiedrole.NewViewerUnifiedRole(true).GetId()},
+			Roles: []string{unifiedrole.NewViewerUnifiedRole().GetId()},
 		}
 	})
 
diff --git a/services/graph/pkg/service/v0/api_drives_drive_item_test.go b/services/graph/pkg/service/v0/api_drives_drive_item_test.go
index 3b0f482a1bf..c526d49c135 100644
--- a/services/graph/pkg/service/v0/api_drives_drive_item_test.go
+++ b/services/graph/pkg/service/v0/api_drives_drive_item_test.go
@@ -47,7 +47,7 @@ var _ = Describe("DrivesDriveItemService", func() {
 
 		cache := identity.NewIdentityCache(identity.IdentityCacheWithGatewaySelector(gatewaySelector))
 
-		service, err := svc.NewDrivesDriveItemService(logger, gatewaySelector, cache, false)
+		service, err := svc.NewDrivesDriveItemService(logger, gatewaySelector, cache)
 		Expect(err).ToNot(HaveOccurred())
 		drivesDriveItemService = service
 	})
diff --git a/services/graph/pkg/service/v0/sharedbyme_test.go b/services/graph/pkg/service/v0/sharedbyme_test.go
index 9902f23a655..6d4840686a7 100644
--- a/services/graph/pkg/service/v0/sharedbyme_test.go
+++ b/services/graph/pkg/service/v0/sharedbyme_test.go
@@ -52,7 +52,7 @@ var _ = Describe("sharedbyme", func() {
 	)
 	expiration := time.Now()
 
-	editorResourcePermissions := conversions.NewEditorRole(true).CS3ResourcePermissions()
+	editorResourcePermissions := conversions.NewEditorRole().CS3ResourcePermissions()
 	userShare := collaboration.Share{
 		Id: &collaboration.ShareId{
 			OpaqueId: "share-id",
@@ -243,7 +243,6 @@ var _ = Describe("sharedbyme", func() {
 		cfg.TokenManager.JWTSecret = "loremipsum"
 		cfg.Commons = &shared.Commons{}
 		cfg.GRPCClientTLS = &shared.GRPCClientTLS{}
-		cfg.FilesSharing.EnableResharing = true
 
 		svc, _ = service.NewService(
 			service.Config(cfg),
diff --git a/services/graph/pkg/service/v0/sharedwithme_test.go b/services/graph/pkg/service/v0/sharedwithme_test.go
index 6bafe962639..84b00507bab 100644
--- a/services/graph/pkg/service/v0/sharedwithme_test.go
+++ b/services/graph/pkg/service/v0/sharedwithme_test.go
@@ -155,7 +155,7 @@ var _ = Describe("SharedWithMe", func() {
 								OpaqueId: "sh:are:id",
 							},
 							Permissions: &collaborationv1beta1.SharePermissions{
-								Permissions: roleconversions.NewViewerRole(true).CS3ResourcePermissions(),
+								Permissions: roleconversions.NewViewerRole().CS3ResourcePermissions(),
 							},
 							Creator: getUserResponseShareCreator.User.Id,
 							Ctime:   utils.TSNow(),
@@ -351,29 +351,6 @@ var _ = Describe("SharedWithMe", func() {
 			Expect(jsonData.Get("file.mimeType").String()).To(Equal(resourceInfo.MimeType))
 		})
 
-		// that is resharing test. Please delete after disable resharing feature
-		
-		// It("populates the driveItem.remoteItem.permissions properties", func() {
-		// 	resourceInfo := statResponse.Info
-		// 	resourceInfo.PermissionSet = roleconversions.NewViewerRole(false).CS3ResourcePermissions()
-
-		// 	svc.ListSharedWithMe(
-		// 		tape,
-		// 		httptest.NewRequest(http.MethodGet, "/graph/v1beta1/me/drive/sharedWithMe", nil),
-		// 	)
-
-		// 	driveitemJSON := gjson.Get(tape.Body.String(), "value.0")
-		// 	Expect(driveitemJSON.Get("@UI\\.Hidden").Exists()).To(BeTrue())
-		// 	Expect(driveitemJSON.Get("@UI\\.Hidden").Bool()).To(BeFalse())
-		// 	Expect(driveitemJSON.Get("@client\\.synchronize").Exists()).To(BeTrue())
-		// 	Expect(driveitemJSON.Get("@client\\.synchronize").Bool()).To(BeTrue())
-
-		// 	permissionsJSON := driveitemJSON.Get("remoteItem.permissions.0")
-		// 	Expect(permissionsJSON.Get("id").String()).To(Equal(listReceivedSharesResponse.Shares[0].Share.Id.OpaqueId))
-		// 	Expect(permissionsJSON.Get("roles.0").String()).To(Equal(unifiedrole.UnifiedRoleViewerID))
-		// 	Expect(permissionsJSON.Get("invitation.invitedBy.user.id").String()).To(Equal(getUserResponseShareCreator.User.Id.OpaqueId))
-		// })
-
 		It("returns shares created on project space", func() {
 			ownerID := &userv1beta1.UserId{
 				OpaqueId: "project-space-id",
@@ -406,7 +383,7 @@ var _ = Describe("SharedWithMe", func() {
 						OpaqueId: "sh:are:id2",
 					},
 					Permissions: &collaborationv1beta1.SharePermissions{
-						Permissions: roleconversions.NewViewerRole(true).CS3ResourcePermissions(),
+						Permissions: roleconversions.NewViewerRole().CS3ResourcePermissions(),
 					},
 					Creator: getUserResponseShareCreator.User.Id,
 					Ctime:   utils.TSNow(),
diff --git a/services/graph/pkg/unifiedrole/unifiedrole_test.go b/services/graph/pkg/unifiedrole/unifiedrole_test.go
index add5ba63f2d..3c87114ab25 100644
--- a/services/graph/pkg/unifiedrole/unifiedrole_test.go
+++ b/services/graph/pkg/unifiedrole/unifiedrole_test.go
@@ -20,13 +20,13 @@ var _ = Describe("unifiedroles", func() {
 		func(legacyRole *rConversions.Role, unifiedRole *libregraph.UnifiedRoleDefinition, constraints string) {
 			cs3perm := legacyRole.CS3ResourcePermissions()
 
-			r := unifiedrole.CS3ResourcePermissionsToUnifiedRole(*cs3perm, constraints, true)
+			r := unifiedrole.CS3ResourcePermissionsToUnifiedRole(*cs3perm, constraints)
 			Expect(r.GetId()).To(Equal(unifiedRole.GetId()))
 
 		},
-		Entry(rConversions.RoleViewer, rConversions.NewViewerRole(true), unifiedrole.NewViewerUnifiedRole(true), unifiedrole.UnifiedRoleConditionGrantee),
-		Entry(rConversions.RoleEditor, rConversions.NewEditorRole(true), unifiedrole.NewEditorUnifiedRole(true), unifiedrole.UnifiedRoleConditionGrantee),
-		Entry(rConversions.RoleFileEditor, rConversions.NewFileEditorRole(true), unifiedrole.NewFileEditorUnifiedRole(true), unifiedrole.UnifiedRoleConditionGrantee),
+		Entry(rConversions.RoleViewer, rConversions.NewViewerRole(), unifiedrole.NewViewerUnifiedRole(), unifiedrole.UnifiedRoleConditionGrantee),
+		Entry(rConversions.RoleEditor, rConversions.NewEditorRole(), unifiedrole.NewEditorUnifiedRole(), unifiedrole.UnifiedRoleConditionGrantee),
+		Entry(rConversions.RoleFileEditor, rConversions.NewFileEditorRole(), unifiedrole.NewFileEditorUnifiedRole(), unifiedrole.UnifiedRoleConditionGrantee),
 		Entry(rConversions.RoleManager, rConversions.NewManagerRole(), unifiedrole.NewManagerUnifiedRole(), unifiedrole.UnifiedRoleConditionOwner),
 		Entry(rConversions.RoleSpaceViewer, rConversions.NewSpaceViewerRole(), unifiedrole.NewSpaceViewerUnifiedRole(), unifiedrole.UnifiedRoleConditionOwner),
 		Entry(rConversions.RoleSpaceEditor, rConversions.NewSpaceEditorRole(), unifiedrole.NewSpaceEditorUnifiedRole(), unifiedrole.UnifiedRoleConditionOwner),
@@ -49,11 +49,11 @@ var _ = Describe("unifiedroles", func() {
 
 			Expect(permsFromCS3).To(matcher)
 		},
-		Entry(rConversions.RoleViewer, rConversions.NewViewerRole(true), unifiedrole.NewViewerUnifiedRole(true), true),
-		Entry(rConversions.RoleEditor, rConversions.NewEditorRole(true), unifiedrole.NewEditorUnifiedRole(true), true),
-		Entry(rConversions.RoleFileEditor, rConversions.NewFileEditorRole(true), unifiedrole.NewFileEditorUnifiedRole(true), true),
+		Entry(rConversions.RoleViewer, rConversions.NewViewerRole(), unifiedrole.NewViewerUnifiedRole(), true),
+		Entry(rConversions.RoleEditor, rConversions.NewEditorRole(), unifiedrole.NewEditorUnifiedRole(), true),
+		Entry(rConversions.RoleFileEditor, rConversions.NewFileEditorRole(), unifiedrole.NewFileEditorUnifiedRole(), true),
 		Entry(rConversions.RoleManager, rConversions.NewManagerRole(), unifiedrole.NewManagerUnifiedRole(), true),
-		Entry("no match", rConversions.NewFileEditorRole(true), unifiedrole.NewManagerUnifiedRole(), false),
+		Entry("no match", rConversions.NewFileEditorRole(), unifiedrole.NewManagerUnifiedRole(), false),
 	)
 
 	DescribeTable("WeightRoleDefinitions",
@@ -66,25 +66,25 @@ var _ = Describe("unifiedroles", func() {
 
 		Entry("ascending",
 			[]*libregraph.UnifiedRoleDefinition{
-				unifiedrole.NewViewerUnifiedRole(false),
-				unifiedrole.NewFileEditorUnifiedRole(false),
+				unifiedrole.NewViewerUnifiedRole(),
+				unifiedrole.NewFileEditorUnifiedRole(),
 			},
 			false,
 			[]*libregraph.UnifiedRoleDefinition{
-				unifiedrole.NewViewerUnifiedRole(false),
-				unifiedrole.NewFileEditorUnifiedRole(false),
+				unifiedrole.NewViewerUnifiedRole(),
+				unifiedrole.NewFileEditorUnifiedRole(),
 			},
 		),
 
 		Entry("descending",
 			[]*libregraph.UnifiedRoleDefinition{
-				unifiedrole.NewViewerUnifiedRole(false),
-				unifiedrole.NewFileEditorUnifiedRole(false),
+				unifiedrole.NewViewerUnifiedRole(),
+				unifiedrole.NewFileEditorUnifiedRole(),
 			},
 			true,
 			[]*libregraph.UnifiedRoleDefinition{
-				unifiedrole.NewFileEditorUnifiedRole(false),
-				unifiedrole.NewViewerUnifiedRole(false),
+				unifiedrole.NewFileEditorUnifiedRole(),
+				unifiedrole.NewViewerUnifiedRole(),
 			},
 		),
 	)
@@ -108,9 +108,9 @@ var _ = Describe("unifiedroles", func() {
 		}
 
 		DescribeTable("GetApplicableRoleDefinitionsForActions",
-			func(givenActions []string, constraints string, resharing bool, expectedDefinitions []*libregraph.UnifiedRoleDefinition) {
+			func(givenActions []string, constraints string, expectedDefinitions []*libregraph.UnifiedRoleDefinition) {
 
-				generatedDefinitions := unifiedrole.GetApplicableRoleDefinitionsForActions(givenActions, constraints, resharing, false)
+				generatedDefinitions := unifiedrole.GetApplicableRoleDefinitionsForActions(givenActions, constraints, false)
 
 				Expect(len(generatedDefinitions)).To(Equal(len(expectedDefinitions)))
 
@@ -129,90 +129,82 @@ var _ = Describe("unifiedroles", func() {
 
 			Entry(
 				"ViewerUnifiedRole",
-				rolesToAction(unifiedrole.NewViewerUnifiedRole(false)),
+				rolesToAction(unifiedrole.NewViewerUnifiedRole()),
 				unifiedrole.UnifiedRoleConditionGrantee,
-				false,
 				[]*libregraph.UnifiedRoleDefinition{
-					unifiedrole.NewViewerUnifiedRole(false),
+					unifiedrole.NewViewerUnifiedRole(),
 				},
 			),
 
 			Entry(
 				"ViewerUnifiedRole | share",
-				rolesToAction(unifiedrole.NewViewerUnifiedRole(true)),
+				rolesToAction(unifiedrole.NewViewerUnifiedRole()),
 				unifiedrole.UnifiedRoleConditionGrantee,
-				true,
 				[]*libregraph.UnifiedRoleDefinition{
-					unifiedrole.NewViewerUnifiedRole(true),
+					unifiedrole.NewViewerUnifiedRole(),
 				},
 			),
 
 			Entry(
 				"NewFileEditorUnifiedRole",
-				rolesToAction(unifiedrole.NewFileEditorUnifiedRole(false)),
+				rolesToAction(unifiedrole.NewFileEditorUnifiedRole()),
 				unifiedrole.UnifiedRoleConditionGrantee,
-				false,
 				[]*libregraph.UnifiedRoleDefinition{
-					unifiedrole.NewViewerUnifiedRole(false),
-					unifiedrole.NewFileEditorUnifiedRole(false),
+					unifiedrole.NewViewerUnifiedRole(),
+					unifiedrole.NewFileEditorUnifiedRole(),
 				},
 			),
 
 			Entry(
 				"NewFileEditorUnifiedRole - share",
-				rolesToAction(unifiedrole.NewFileEditorUnifiedRole(true)),
+				rolesToAction(unifiedrole.NewFileEditorUnifiedRole()),
 				unifiedrole.UnifiedRoleConditionGrantee,
-				true,
 				[]*libregraph.UnifiedRoleDefinition{
-					unifiedrole.NewViewerUnifiedRole(true),
-					unifiedrole.NewFileEditorUnifiedRole(true),
+					unifiedrole.NewViewerUnifiedRole(),
+					unifiedrole.NewFileEditorUnifiedRole(),
 				},
 			),
 
 			Entry(
 				"NewEditorUnifiedRole",
-				rolesToAction(unifiedrole.NewEditorUnifiedRole(false)),
+				rolesToAction(unifiedrole.NewEditorUnifiedRole()),
 				unifiedrole.UnifiedRoleConditionGrantee,
-				false,
 				[]*libregraph.UnifiedRoleDefinition{
 					unifiedrole.NewUploaderUnifiedRole(),
-					unifiedrole.NewViewerUnifiedRole(false),
-					unifiedrole.NewFileEditorUnifiedRole(false),
-					unifiedrole.NewEditorUnifiedRole(false),
+					unifiedrole.NewViewerUnifiedRole(),
+					unifiedrole.NewFileEditorUnifiedRole(),
+					unifiedrole.NewEditorUnifiedRole(),
 				},
 			),
 
 			Entry(
 				"NewEditorUnifiedRole - share",
-				rolesToAction(unifiedrole.NewEditorUnifiedRole(true)),
+				rolesToAction(unifiedrole.NewEditorUnifiedRole()),
 				unifiedrole.UnifiedRoleConditionGrantee,
-				true,
 				[]*libregraph.UnifiedRoleDefinition{
 					unifiedrole.NewUploaderUnifiedRole(),
-					unifiedrole.NewViewerUnifiedRole(true),
-					unifiedrole.NewFileEditorUnifiedRole(true),
-					unifiedrole.NewEditorUnifiedRole(true),
+					unifiedrole.NewViewerUnifiedRole(),
+					unifiedrole.NewFileEditorUnifiedRole(),
+					unifiedrole.NewEditorUnifiedRole(),
 				},
 			),
 
 			Entry(
 				"GetBuiltinRoleDefinitionList",
-				rolesToAction(unifiedrole.GetBuiltinRoleDefinitionList(false)...),
+				rolesToAction(unifiedrole.GetBuiltinRoleDefinitionList()...),
 				unifiedrole.UnifiedRoleConditionGrantee,
-				false,
 				[]*libregraph.UnifiedRoleDefinition{
 					unifiedrole.NewUploaderUnifiedRole(),
-					unifiedrole.NewViewerUnifiedRole(false),
-					unifiedrole.NewFileEditorUnifiedRole(false),
-					unifiedrole.NewEditorUnifiedRole(false),
+					unifiedrole.NewViewerUnifiedRole(),
+					unifiedrole.NewFileEditorUnifiedRole(),
+					unifiedrole.NewEditorUnifiedRole(),
 				},
 			),
 
 			Entry(
 				"GetBuiltinRoleDefinitionList",
-				rolesToAction(unifiedrole.GetBuiltinRoleDefinitionList(false)...),
+				rolesToAction(unifiedrole.GetBuiltinRoleDefinitionList()...),
 				unifiedrole.UnifiedRoleConditionOwner,
-				false,
 				[]*libregraph.UnifiedRoleDefinition{
 					unifiedrole.NewSpaceViewerUnifiedRole(),
 					unifiedrole.NewSpaceEditorUnifiedRole(),
@@ -222,14 +214,13 @@ var _ = Describe("unifiedroles", func() {
 
 			Entry(
 				"GetBuiltinRoleDefinitionList - share",
-				rolesToAction(unifiedrole.GetBuiltinRoleDefinitionList(true)...),
+				rolesToAction(unifiedrole.GetBuiltinRoleDefinitionList()...),
 				unifiedrole.UnifiedRoleConditionGrantee,
-				true,
 				[]*libregraph.UnifiedRoleDefinition{
 					unifiedrole.NewUploaderUnifiedRole(),
-					unifiedrole.NewViewerUnifiedRole(true),
-					unifiedrole.NewFileEditorUnifiedRole(true),
-					unifiedrole.NewEditorUnifiedRole(true),
+					unifiedrole.NewViewerUnifiedRole(),
+					unifiedrole.NewFileEditorUnifiedRole(),
+					unifiedrole.NewEditorUnifiedRole(),
 				},
 			),
 
@@ -237,7 +228,6 @@ var _ = Describe("unifiedroles", func() {
 				"single",
 				[]string{unifiedrole.DriveItemQuotaRead},
 				unifiedrole.UnifiedRoleConditionGrantee,
-				true,
 				[]*libregraph.UnifiedRoleDefinition{},
 			),
 
@@ -245,7 +235,6 @@ var _ = Describe("unifiedroles", func() {
 				"mixed",
 				append(rolesToAction(unifiedrole.NewUploaderUnifiedRole()), unifiedrole.DriveItemQuotaRead),
 				unifiedrole.UnifiedRoleConditionGrantee,
-				true,
 				[]*libregraph.UnifiedRoleDefinition{
 					unifiedrole.NewUploaderUnifiedRole(),
 				},
@@ -255,29 +244,26 @@ var _ = Describe("unifiedroles", func() {
 
 	{
 		var newUnifiedRoleFromIDEntries []TableEntry
-		for _, resharing := range []bool{true, false} {
-			attachEntry := func(name, id string, definition *libregraph.UnifiedRoleDefinition, errors bool) {
-				e := Entry(
-					fmt.Sprintf("%s - resharing: %t", name, resharing),
-					id,
-					resharing,
-					definition,
-					errors,
-				)
-
-				newUnifiedRoleFromIDEntries = append(newUnifiedRoleFromIDEntries, e)
-			}
+		attachEntry := func(name, id string, definition *libregraph.UnifiedRoleDefinition, errors bool) {
+			e := Entry(
+				fmt.Sprintf("%s", name),
+				id,
+				definition,
+				errors,
+			)
 
-			for _, definition := range unifiedrole.GetBuiltinRoleDefinitionList(resharing) {
-				attachEntry(definition.GetDisplayName(), definition.GetId(), definition, false)
-			}
+			newUnifiedRoleFromIDEntries = append(newUnifiedRoleFromIDEntries, e)
+		}
 
-			attachEntry("unknown", "123", nil, true)
+		for _, definition := range unifiedrole.GetBuiltinRoleDefinitionList() {
+			attachEntry(definition.GetDisplayName(), definition.GetId(), definition, false)
 		}
 
+		attachEntry("unknown", "123", nil, true)
+
 		DescribeTable("NewUnifiedRoleFromID",
-			func(id string, resharing bool, expectedRole *libregraph.UnifiedRoleDefinition, expectError bool) {
-				role, err := unifiedrole.NewUnifiedRoleFromID(id, resharing)
+			func(id string, expectedRole *libregraph.UnifiedRoleDefinition, expectError bool) {
+				role, err := unifiedrole.NewUnifiedRoleFromID(id)
 
 				if expectError {
 					Expect(err).To(HaveOccurred())
diff --git a/tests/acceptance/features/apiSharingNg/mountOrUnmountShare.feature b/tests/acceptance/features/apiSharingNg/mountOrUnmountShare.feature
index 9439ffd4615..72b860deb2d 100644
--- a/tests/acceptance/features/apiSharingNg/mountOrUnmountShare.feature
+++ b/tests/acceptance/features/apiSharingNg/mountOrUnmountShare.feature
@@ -86,65 +86,3 @@ Feature:  mount or unmount incoming share
       | resource      |
       | textfile0.txt |
       | folder        |
-
-
-  Scenario Outline: enable a group share sync by only one user in a group
-    Given user "Carol" has been created with default attributes and without skeleton files
-    And group "grp1" has been created
-    And user "Alice" has been added to group "grp1"
-    And user "Brian" has been added to group "grp1"
-    And user "Alice" has disabled the auto-sync share
-    And user "Brian" has disabled the auto-sync share
-    And user "Carol" has uploaded file with content "hello world" to "/textfile0.txt"
-    And user "Carol" has created folder "FolderToShare"
-    And user "Carol" has sent the following share invitation:
-      | resource        | <resource> |
-      | space           | Personal   |
-      | sharee          | grp1       |
-      | shareType       | group      |
-      | permissionsRole | Viewer     |
-    When user "Alice" mounts share "<resource>" offered by "Carol" from "Personal" space using the Graph API
-    Then the HTTP status code should be "201"
-    And the JSON data of the response should match
-      """
-      {
-        "type": "object",
-        "required": [
-          "@client.synchronize"
-        ],
-        "properties": {
-          "@client.synchronize": {
-            "const": true
-          }
-        }
-      }
-      """
-    And user "Alice" should have sync enabled for share "<resource>"
-    And user "Brian" should have sync disabled for share "<resource>"
-    Examples:
-      | resource      |
-      | textfile0.txt |
-      | FolderToShare |
-
-
-  Scenario Outline: disable group share sync by only one user in a group
-    Given user "Carol" has been created with default attributes and without skeleton files
-    And group "grp1" has been created
-    And user "Alice" has been added to group "grp1"
-    And user "Brian" has been added to group "grp1"
-    And user "Carol" has created folder "FolderToShare"
-    And user "Carol" has uploaded file with content "hello world" to "/textfile0.txt"
-    And user "Carol" has sent the following share invitation:
-      | resource        | <resource> |
-      | space           | Personal   |
-      | sharee          | grp1       |
-      | shareType       | group      |
-      | permissionsRole | Viewer     |
-    When user "Alice" unmounts share "<resource>" using the Graph API
-    Then the HTTP status code should be "200"
-    And user "Alice" should have sync disabled for share "<resource>"
-    And user "Brian" should have sync enabled for share "<resource>"
-    Examples:
-      | resource      |
-      | textfile0.txt |
-      | FolderToShare |
diff --git a/tests/acceptance/features/apiSharingNg/propfindShares.feature b/tests/acceptance/features/apiSharingNg/propfindShares.feature
index 8f9d23beb1d..1b9aaf3a7c6 100644
--- a/tests/acceptance/features/apiSharingNg/propfindShares.feature
+++ b/tests/acceptance/features/apiSharingNg/propfindShares.feature
@@ -120,22 +120,3 @@ Feature: propfind a shares
       | oc:fileid      | UUIDof:textfile.txt |
       | oc:name        | textfile.txt        |
       | oc:permissions | S                   |
-
-
-  Scenario Outline: check file-id from PROPFIND with shared-with-me drive-item-id
-    Given using spaces DAV path
-    And user "Alice" has uploaded file with content "to share" to "/textfile1.txt"
-    And user "Alice" has created folder "folderToShare"
-    And user "Alice" has sent the following share invitation:
-      | resource        | <resource> |
-      | space           | Personal   |
-      | sharee          | Brian      |
-      | shareType       | user       |
-      | permissionsRole | Viewer     |
-    When user "Brian" sends PROPFIND request to space "Shares" with depth "1" using the WebDAV API
-    Then the HTTP status code should be "207"
-    And as user "Brian" the key "oc:fileid" from PROPFIND response should match with shared-with-me drive-item-id of share "<resource>"
-    Examples:
-      | resource      |
-      | textfile1.txt |
-      | folderToShare |
diff --git a/tests/acceptance/features/bootstrap/SharingNgContext.php b/tests/acceptance/features/bootstrap/SharingNgContext.php
index a860d9fe48d..a972082ffcf 100644
--- a/tests/acceptance/features/bootstrap/SharingNgContext.php
+++ b/tests/acceptance/features/bootstrap/SharingNgContext.php
@@ -620,38 +620,4 @@ class SharingNgContext implements Context {
 		);
 		$this->featureContext->setResponse($response);
 	}
-
-	/**
-	 * @Then /^user "([^"]*)" should have sync (enabled|disabled) for share "([^"]*)"$/
-	 *
-	 * @param string $user
-	 * @param string $status
-	 * @param string $resource
-	 *
-	 * @return void
-	 * @throws \GuzzleHttp\Exception\GuzzleException
-	 */
-	public function userShouldHaveSyncEnabledOrDisabledForShare(string $user, string $status, string $resource):void {
-		$response = GraphHelper::getSharesSharedWithMe(
-			$this->featureContext->getBaseUrl(),
-			$this->featureContext->getStepLineRef(),
-			$user,
-			$this->featureContext->getPasswordForUser($user)
-		);
-		$responseBody = $this->featureContext->getJsonDecodedResponse($response);
-		$expectedValue = $status === "enabled" ? "true" : "false";
-		foreach ($responseBody["value"] as $value) {
-			if ($value["remoteItem"]["name"] === $resource) {
-				// var_export converts values to their string representations
-				// e.g.: true -> 'true'
-				$actaulValue = var_export($value["@client.synchronize"], true);
-				break;
-			}
-		}
-		Assert::assertSame(
-			$actaulValue,
-			$expectedValue,
-			"Expected property '@client.synchronize' to be '$expectedValue' but found '$actaulValue'"
-		);
-	}
 }
diff --git a/tests/acceptance/features/bootstrap/SpacesContext.php b/tests/acceptance/features/bootstrap/SpacesContext.php
index 9d508e48194..b01e5504e33 100644
--- a/tests/acceptance/features/bootstrap/SpacesContext.php
+++ b/tests/acceptance/features/bootstrap/SpacesContext.php
@@ -3830,38 +3830,6 @@ class SpacesContext implements Context {
 		}
 	}
 
-	/**
-	 * @Then as user :user the key :key from PROPFIND response should match with shared-with-me drive-item-id of share :resource
-	 *
-	 * @param string $user
-	 * @param string $key
-	 * @param string $resource
-	 *
-	 * @return void
-	 * @throws GuzzleException
-	 */
-	public function asUserTheKeyFromPropfindResponseShouldMatchWithSharedwithmeDriveitemidOfShare(string $user, string $key, string $resource): void {
-		$xmlResponse = $this->featureContext->getResponseXml();
-		$fileId = $xmlResponse->xpath("//oc:name[text()='$resource']/preceding-sibling::$key")[0]->__toString();
-
-		$jsonResponse = GraphHelper::getSharesSharedWithMe(
-			$this->featureContext->getBaseUrl(),
-			$this->featureContext->getStepLineRef(),
-			$user,
-			$this->featureContext->getPasswordForUser($user)
-		);
-		$jsonResponseBody = $this->featureContext->getJsonDecodedResponseBodyContent($jsonResponse);
-		foreach ($jsonResponseBody->value as $value) {
-			if ($value->name === "$resource") {
-				$driveItemId = $value->id;
-				break;
-			} else {
-				throw new Error("Response didn't contain a share $resource");
-			}
-		}
-		Assert::assertEquals($fileId, $driveItemId, "File-id '$fileId' doesn't match driveItemId '$driveItemId'");
-	}
-
 	/**
 	 * @When /^public downloads the folder "([^"]*)" from the last created public link using the public files API$/
 	 *
diff --git a/tests/acceptance/features/bootstrap/SpacesTUSContext.php b/tests/acceptance/features/bootstrap/SpacesTUSContext.php
index 15f97d913ea..6b82c66d986 100644
--- a/tests/acceptance/features/bootstrap/SpacesTUSContext.php
+++ b/tests/acceptance/features/bootstrap/SpacesTUSContext.php
@@ -13,7 +13,6 @@ use Behat\Behat\Context\Context;
 use Behat\Behat\Hook\Scope\BeforeScenarioScope;
 use GuzzleHttp\Exception\GuzzleException;
 use Behat\Gherkin\Node\TableNode;
-use PHPUnit\Framework\Assert;
 
 require_once 'bootstrap.php';
 
@@ -59,8 +58,7 @@ class SpacesTUSContext implements Context {
 	 */
 	public function userHasUploadedFileViaTusInSpace(string $user, string $source, string $destination, string $spaceName): void {
 		$this->spacesContext->setSpaceIDByName($user, $spaceName);
-		$this->tusContext->uploadFileUsingTus($user, $source, $destination);
-		$this->featureContext->setLastUploadDeleteTime(\time());
+		$this->tusContext->userUploadsUsingTusAFileTo($user, $source, $destination);
 	}
 
 	/**
@@ -82,8 +80,7 @@ class SpacesTUSContext implements Context {
 		string $spaceName
 	): void {
 		$this->spacesContext->setSpaceIDByName($user, $spaceName);
-		$this->tusContext->uploadFileUsingTus($user, $source, $destination);
-		$this->featureContext->setLastUploadDeleteTime(\time());
+		$this->tusContext->userUploadsUsingTusAFileTo($user, $source, $destination);
 	}
 
 	/**
@@ -152,18 +149,7 @@ class SpacesTUSContext implements Context {
 		string $spaceName
 	): void {
 		$this->spacesContext->setSpaceIDByName($user, $spaceName);
-		$tmpFile = $this->tusContext->writeDataToTempFile($content);
-		try {
-			$this->tusContext->uploadFileUsingTus(
-				$user,
-				\basename($tmpFile),
-				$resource
-			);
-			$this->featureContext->setLastUploadDeleteTime(\time());
-		} catch (Exception $e) {
-			Assert::assertStringContainsString('Unable to create resource', (string)$e);
-		}
-		\unlink($tmpFile);
+		$this->tusContext->userUploadsAFileWithContentToUsingTus($user, $content, $resource);
 	}
 
 	/**
@@ -227,16 +213,7 @@ class SpacesTUSContext implements Context {
 				$mtime;
 		}
 		$this->spacesContext->setSpaceIDByName($user, $spaceName);
-		$mtime = new DateTime($mtime);
-		$mtime = $mtime->format('U');
-		$user = $this->featureContext->getActualUsername($user);
-		$this->tusContext->uploadFileUsingTus(
-			$user,
-			$source,
-			$destination,
-			['mtime' => $mtime]
-		);
-		$this->featureContext->setLastUploadDeleteTime(\time());
+		$this->tusContext->userUploadsFileWithContentToWithMtimeUsingTUS($user, $source, $destination, $mtime);
 	}
 
 	/**
@@ -259,8 +236,7 @@ class SpacesTUSContext implements Context {
 		string $spaceName
 	): void {
 		$this->spacesContext->setSpaceIDByName($user, $spaceName);
-		$response = $this->tusContext->sendsAChunkToTUSLocationWithOffsetAndData($user, $offset, $content, $checksum);
-		$this->featureContext->theHTTPStatusCodeShouldBe(204, "", $response);
+		$this->tusContext->userHasUploadedFileWithChecksum($user, $checksum, $offset, $content);
 	}
 
 	/**
@@ -307,8 +283,7 @@ class SpacesTUSContext implements Context {
 		string $spaceName
 	): void {
 		$this->spacesContext->setSpaceIDByName($user, $spaceName);
-		$response = $this->tusContext->sendsAChunkToTUSLocationWithOffsetAndData($user, $offset, $data, $checksum);
-		$this->featureContext->setResponse($response);
+		$this->tusContext->userUploadsChunkFileWithChecksum($user, $offset, $data, $checksum);
 	}
 
 	/**
@@ -356,10 +331,7 @@ class SpacesTUSContext implements Context {
 		TableNode $headers
 	): void {
 		$this->spacesContext->setSpaceIDByName($user, $spaceName);
-		$createResponse = $this->tusContext->createNewTUSResource($user, $headers);
-		$this->featureContext->theHTTPStatusCodeShouldBe(201, "", $createResponse);
-		$response = $this->tusContext->sendsAChunkToTUSLocationWithOffsetAndData($user, $offset, $data, $checksum);
-		$this->featureContext->setResponse($response);
+		$this->tusContext->userOverwritesFileWithChecksum($user, $offset, $data, $checksum, $headers);
 	}
 
 	/**
diff --git a/tests/acceptance/features/bootstrap/TUSContext.php b/tests/acceptance/features/bootstrap/TUSContext.php
index 6d980e1fcc4..99404723fa0 100644
--- a/tests/acceptance/features/bootstrap/TUSContext.php
+++ b/tests/acceptance/features/bootstrap/TUSContext.php
@@ -112,20 +112,10 @@ class TUSContext implements Context {
 	 * @throws GuzzleException
 	 */
 	public function userHasCreatedNewTUSResourceWithHeaders(string $user, TableNode $headers): void {
-		$response = $this->createNewTUSResource($user, $headers);
-		$this->featureContext->theHTTPStatusCodeShouldBe(201, "", $response);
-	}
-
-	/**
-	 * @param string $user
-	 * @param TableNode $headers
-	 *
-	 * @return ResponseInterface
-	 */
-	public function createNewTUSResource(string $user, TableNode $headers):ResponseInterface {
 		$rows = $headers->getRows();
 		$rows[] = ['Tus-Resumable', '1.0.0'];
-		return $this->createNewTUSResourceWithHeaders($user, new TableNode($rows));
+		$response = $this->createNewTUSResourceWithHeaders($user, new TableNode($rows));
+		$this->featureContext->theHTTPStatusCodeShouldBe(201, "", $response);
 	}
 
 	/**
@@ -209,30 +199,6 @@ class TUSContext implements Context {
 		int     $bytes = null,
 		string  $checksum = ''
 	): void {
-		$this->uploadFileUsingTus($user, $source, $destination, $uploadMetadata, $noOfChunks, $bytes, $checksum);
-		$this->featureContext->setLastUploadDeleteTime(\time());
-	}
-
-	/**
-	 * @param string $user
-	 * @param string $source
-	 * @param string $destination
-	 * @param array $uploadMetadata
-	 * @param integer $noOfChunks
-	 * @param integer $bytes
-	 * @param string $checksum
-	 *
-	 * @return void
-	 */
-	public function uploadFileUsingTus(
-		?string $user,
-		string  $source,
-		string  $destination,
-		array   $uploadMetadata = [],
-		int     $noOfChunks = 1,
-		int     $bytes = null,
-		string  $checksum = ''
-	) {
 		$user = $this->featureContext->getActualUsername($user);
 		$password = $this->featureContext->getUserPassword($user);
 		$headers = [
@@ -286,6 +252,7 @@ class TUSContext implements Context {
 				$client->upload($bytesPerChunk);
 			}
 		}
+		$this->featureContext->setLastUploadDeleteTime(\time());
 	}
 
 	/**
@@ -306,12 +273,11 @@ class TUSContext implements Context {
 	): void {
 		$tmpfname = $this->writeDataToTempFile($content);
 		try {
-			$this->uploadFileUsingTus(
+			$this->userUploadsUsingTusAFileTo(
 				$user,
 				\basename($tmpfname),
 				$destination
 			);
-			$this->featureContext->setLastUploadDeleteTime(\time());
 		} catch (Exception $e) {
 			Assert::assertStringContainsString('TusPhp\Exception\FileException: Unable to create resource', (string)$e);
 		}
@@ -342,14 +308,13 @@ class TUSContext implements Context {
 		string  $destination
 	): void {
 		$tmpfname = $this->writeDataToTempFile($content);
-		$this->uploadFileUsingTus(
+		$this->userUploadsUsingTusAFileTo(
 			$user,
 			\basename($tmpfname),
 			$destination,
 			[],
 			$noOfChunks
 		);
-		$this->featureContext->setLastUploadDeleteTime(\time());
 		\unlink($tmpfname);
 	}
 
@@ -374,13 +339,12 @@ class TUSContext implements Context {
 		$mtime = new DateTime($mtime);
 		$mtime = $mtime->format('U');
 		$user = $this->featureContext->getActualUsername($user);
-		$this->uploadFileUsingTus(
+		$this->userUploadsUsingTusAFileTo(
 			$user,
 			$source,
 			$destination,
 			['mtime' => $mtime]
 		);
-		$this->featureContext->setLastUploadDeleteTime(\time());
 	}
 
 	/**
@@ -389,7 +353,7 @@ class TUSContext implements Context {
 	 * @return string the file name
 	 * @throws Exception
 	 */
-	public function writeDataToTempFile(string $content): string {
+	private function writeDataToTempFile(string $content): string {
 		$tmpfname = \tempnam(
 			$this->featureContext->acceptanceTestsDirLocation(),
 			"tus-upload-test-"
@@ -457,7 +421,7 @@ class TUSContext implements Context {
 		string $content
 	): void {
 		$tmpfname = $this->writeDataToTempFile($content);
-		$this->uploadFileUsingTus(
+		$this->userUploadsUsingTusAFileTo(
 			$user,
 			\basename($tmpfname),
 			$source,
@@ -465,7 +429,6 @@ class TUSContext implements Context {
 			1,
 			-1
 		);
-		$this->featureContext->setLastUploadDeleteTime(\time());
 		\unlink($tmpfname);
 	}
 
@@ -559,8 +522,7 @@ class TUSContext implements Context {
 	 * @throws Exception
 	 */
 	public function userOverwritesFileWithChecksum(string $user, string $offset, string $data, string $checksum, TableNode $headers): void {
-		$createResponse = $this->createNewTUSResource($user, $headers);
-		$this->featureContext->theHTTPStatusCodeShouldBe(201, "", $createResponse);
+		$this->userHasCreatedNewTUSResourceWithHeaders($user, $headers);
 		$response = $this->sendsAChunkToTUSLocationWithOffsetAndData($user, $offset, $data, $checksum);
 		$this->featureContext->setResponse($response);
 	}