aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel <mail@danielkesselberg.de>2024-09-26 16:20:14 +0200
committerGitHub <noreply@github.com>2024-09-26 16:20:14 +0200
commit0451be763bbd1c85a393c75628e9f9c4b9c7dcd3 (patch)
treeb7b43100ea042156f013591173b3b38d3bb81959
parentc0e0ee9e4e43792969289e5293df83ee9359df26 (diff)
parent13d1cb730f1fd29361f79868c2f6c7bce385c4fc (diff)
downloadnextcloud-server-0451be763bbd1c85a393c75628e9f9c4b9c7dcd3.tar.gz
nextcloud-server-0451be763bbd1c85a393c75628e9f9c4b9c7dcd3.zip
Merge pull request #48366 from nextcloud/fix/files_sharing/ocm-permissions
fix(files_sharing): Parse OCM share permissions from OCM and not OCS prop
-rw-r--r--apps/files_sharing/lib/External/Storage.php19
1 files changed, 13 insertions, 6 deletions
diff --git a/apps/files_sharing/lib/External/Storage.php b/apps/files_sharing/lib/External/Storage.php
index ba237f6c5ef..6e5e219ae69 100644
--- a/apps/files_sharing/lib/External/Storage.php
+++ b/apps/files_sharing/lib/External/Storage.php
@@ -345,14 +345,21 @@ class Storage extends DAV implements ISharedStorage, IDisableEncryptionStorage,
public function getPermissions($path): int {
$response = $this->propfind($path);
+ if ($response === false) {
+ return 0;
+ }
+
+ $ocsPermissions = $response['{http://open-collaboration-services.org/ns}share-permissions'] ?? null;
+ $ocmPermissions = $response['{http://open-cloud-mesh.org/ns}share-permissions'] ?? null;
+ $ocPermissions = $response['{http://owncloud.org/ns}permissions'] ?? null;
// old federated sharing permissions
- if (isset($response['{http://open-collaboration-services.org/ns}share-permissions'])) {
- $permissions = (int)$response['{http://open-collaboration-services.org/ns}share-permissions'];
- } elseif (isset($response['{http://open-cloud-mesh.org/ns}share-permissions'])) {
+ if ($ocsPermissions !== null) {
+ $permissions = (int)$ocsPermissions;
+ } elseif ($ocmPermissions !== null) {
// permissions provided by the OCM API
- $permissions = $this->ocmPermissions2ncPermissions($response['{http://open-collaboration-services.org/ns}share-permissions'], $path);
- } elseif (isset($response['{http://owncloud.org/ns}permissions'])) {
- return $this->parsePermissions($response['{http://owncloud.org/ns}permissions']);
+ $permissions = $this->ocmPermissions2ncPermissions($ocmPermissions, $path);
+ } elseif ($ocPermissions !== null) {
+ return $this->parsePermissions($ocPermissions);
} else {
// use default permission if remote server doesn't provide the share permissions
$permissions = $this->getDefaultPermissions($path);