diff --git a/webdav/letodms_webdav.php b/webdav/letodms_webdav.php
index 5f6cab4cf..b495fe000 100644
--- a/webdav/letodms_webdav.php
+++ b/webdav/letodms_webdav.php
@@ -394,7 +394,9 @@ class HTTP_WebDAV_Server_LetoDMS extends HTTP_WebDAV_Server
$format = "%15s %-19s %-s\n";
$subfolders = $folder->getSubFolders();
+ $subfolders = LetoDMS_Core_DMS::filterAccess($subfolders, $this->user, M_READ);
$documents = $folder->getDocuments();
+ $documents = LetoDMS_Core_DMS::filterAccess($documents, $this->user, M_READ);
$objs = array_merge($subfolders, $documents);
echo "
Index of ".htmlspecialchars($options['path'])."\n";
@@ -496,13 +498,19 @@ class HTTP_WebDAV_Server_LetoDMS extends HTTP_WebDAV_Server
else $fileType = substr($name, $lastDotIndex);
}
if($document = $this->dms->getDocumentByName($name, $folder)) {
- if(!$document->addContent('', $this->user, $tmpFile, $name, $fileType, $mimetype, array(), array(), 0)) {
+ if ($document->getAccessMode($this->user) < M_READWRITE) {
+ unlink($tmpFile);
+ return "403 Forbidden";
+ } elseif(!$document->addContent('', $this->user, $tmpFile, $name, $fileType, $mimetype, array(), array(), 0)) {
unlink($tmpFile);
return "409 Conflict";
}
} else {
- if(!$res = $folder->addDocument($name, '', 0, $this->user, '', array(), $tmpFile, $name, $fileType, $mimetype, 0, array(), array(), 0, "")) {
+ if ($folder->getAccessMode($this->user) < M_READWRITE) {
+ unlink($tmpFile);
+ return "403 Forbidden";
+ } elseif(!$res = $folder->addDocument($name, '', 0, $this->user, '', array(), $tmpFile, $name, $fileType, $mimetype, 0, array(), array(), 0, "")) {
unlink($tmpFile);
return "409 Conflict";
}
@@ -556,6 +564,10 @@ class HTTP_WebDAV_Server_LetoDMS extends HTTP_WebDAV_Server
return "403 Forbidden";
}
+ if ($folder->getAccessMode($this->user) < M_READWRITE) {
+ return "403 Forbidden";
+ }
+
if (!$folder->addSubFolder($name, '', $this->user, 0)) {
return "403 Forbidden";
}
@@ -812,6 +824,10 @@ class HTTP_WebDAV_Server_LetoDMS extends HTTP_WebDAV_Server
return false;
}
+ if ($obj->getAccessMode($this->user) < M_READWRITE) {
+ return false;
+ }
+
foreach ($options["props"] as $key => $prop) {
if ($prop["ns"] == "DAV:") {
$options["props"][$key]['status'] = "403 Forbidden";