diff options
author | Daniel <mail@danielkesselberg.de> | 2024-09-26 16:20:14 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-26 16:20:14 +0200 |
commit | 0451be763bbd1c85a393c75628e9f9c4b9c7dcd3 (patch) | |
tree | b7b43100ea042156f013591173b3b38d3bb81959 | |
parent | c0e0ee9e4e43792969289e5293df83ee9359df26 (diff) | |
parent | 13d1cb730f1fd29361f79868c2f6c7bce385c4fc (diff) | |
download | nextcloud-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.php | 19 |
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); |