[stable10] On write-only shares do not allow to specify subfolders

In case of a write-only share we should not allow to specify a subfolder as this is unexpected behaviour.

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
This commit is contained in:
Lukas Reschke 2016-12-01 16:10:15 +01:00
parent db2206450f
commit 4045c7be73
No known key found for this signature in database
GPG Key ID: B9F6980CF6E759B1
1 changed files with 10 additions and 3 deletions

View File

@ -56,13 +56,22 @@ if (empty($_POST['dirToken'])) {
die(); die();
} }
} else { } else {
$shareManager = \OC::$server->getShareManager();
$share = $shareManager->getShareByToken((string)$_POST['dirToken']);
// TODO: ideally this code should be in files_sharing/ajax/upload.php // TODO: ideally this code should be in files_sharing/ajax/upload.php
// and the upload/file transfer code needs to be refactored into a utility method // and the upload/file transfer code needs to be refactored into a utility method
// that could be used there // that could be used there
\OC_User::setIncognitoMode(true); \OC_User::setIncognitoMode(true);
$publicDirectory = !empty($_POST['subdir']) ? (string)$_POST['subdir'] : '/'; // If it is a write-only folder no subdirectory can be specified
$publicDirectory = '';
if ($share->getPermissions() & \OCP\Constants::PERMISSION_READ) {
$publicDirectory = !empty($_POST['subdir']) ? (string)$_POST['subdir'] : '/';
} else {
$_POST['file_directory'] = '';
}
$linkItem = OCP\Share::getShareByToken((string)$_POST['dirToken']); $linkItem = OCP\Share::getShareByToken((string)$_POST['dirToken']);
if ($linkItem === false) { if ($linkItem === false) {
@ -165,8 +174,6 @@ if (\OC\Files\Filesystem::isValidPath($dir) === true) {
if(isset($_POST['dirToken'])) { if(isset($_POST['dirToken'])) {
// If it is a read only share the resolution will always be autorename // If it is a read only share the resolution will always be autorename
$shareManager = \OC::$server->getShareManager();
$share = $shareManager->getShareByToken((string)$_POST['dirToken']);
if (!($share->getPermissions() & \OCP\Constants::PERMISSION_READ)) { if (!($share->getPermissions() & \OCP\Constants::PERMISSION_READ)) {
$resolution = 'autorename'; $resolution = 'autorename';
} }