diff options
author | provokateurin <kate@provokateurin.de> | 2024-09-26 09:41:49 +0200 |
---|---|---|
committer | backportbot[bot] <backportbot[bot]@users.noreply.github.com> | 2024-09-26 14:23:55 +0000 |
commit | 93b634f49795b32b6df8a59bbbf5297ec3e26d05 (patch) | |
tree | 6926757e7ebd0a254b7ab99aaad16fb86c93480e /apps | |
parent | 7f22f3d42dcd72d344bd5c32961362d34600c1b6 (diff) | |
download | nextcloud-server-93b634f49795b32b6df8a59bbbf5297ec3e26d05.tar.gz nextcloud-server-93b634f49795b32b6df8a59bbbf5297ec3e26d05.zip |
refactor(files_sharing): Make permissions prop checks less error prone
Signed-off-by: provokateurin <kate@provokateurin.de>
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files_sharing/lib/External/Storage.php | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/apps/files_sharing/lib/External/Storage.php b/apps/files_sharing/lib/External/Storage.php index 020bbe2fbf9..a85e32f7619 100644 --- a/apps/files_sharing/lib/External/Storage.php +++ b/apps/files_sharing/lib/External/Storage.php @@ -357,14 +357,17 @@ class Storage extends DAV implements ISharedStorage, IDisableEncryptionStorage, public function getPermissions($path): int { $response = $this->propfind($path); + $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-cloud-mesh.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); |