diff --git a/db/update20.7.sql b/db/update20.7.sql
index 579e5f1422..be6d5098cc 100644
--- a/db/update20.7.sql
+++ b/db/update20.7.sql
@@ -1 +1,3 @@
ALTER TABLE `zt_auditresult` ADD `severity` char(30) NOT NULL DEFAULT '' AFTER `comment`;
+
+REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) SELECT `group`, 'file', 'download' FROM `zt_grouppriv` WHERE `module` = 'file' AND `method` = 'preview';
diff --git a/module/file/model.php b/module/file/model.php
index 6792c972c5..b1f6ad2749 100755
--- a/module/file/model.php
+++ b/module/file/model.php
@@ -1104,7 +1104,7 @@ class fileModel extends model
*/
public function printFile(object $file, string $method, bool $showDelete, bool $showEdit, object|null $object): string
{
- if(!common::hasPriv('file', 'download')) return '';
+ if(!common::hasPriv('file', 'download') && !common::hasPriv('file', 'preview')) return '';
$html = '';
@@ -1123,10 +1123,11 @@ class fileModel extends model
$downloadLink = helper::createLink('file', 'download', "fileID=$file->id");
$downloadLink .= strpos($downloadLink, '?') === false ? '?' : '&';
$downloadLink .= $sessionString;
+ $fileTitleLink = common::hasPriv('file', 'download') ? html::a($downloadLink, $fileTitle . " ({$fileSize})", '_blank', "id='fileTitle$file->id'") : "
" . $fileTitle . " ({$fileSize})
";
$objectType = zget($this->config->file->objectType, $file->objectType);
- $html .= "" . html::a($downloadLink, $fileTitle . " ({$fileSize})", '_blank', "id='fileTitle$file->id'");
+ $html .= "" . $fileTitleLink;
if(strpos('view,edit', $method) !== false)
{
if(common::hasPriv($objectType, 'view', $object)) $html = $this->buildFileActions($html, $downloadLink, $imageWidth, $showEdit, $showDelete, $file, $object);
diff --git a/module/group/packagemanager.php b/module/group/packagemanager.php
index 33e8f1624d..0a555ccbe3 100644
--- a/module/group/packagemanager.php
+++ b/module/group/packagemanager.php
@@ -2940,7 +2940,7 @@ $config->group->package->file->privs['file-edit'] = array('edition' => '
$config->group->package->file->privs['file-delete'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 2, 'depend' => array(), 'recommend' => array('file-edit'));
$config->group->package->file->privs['file-uploadImages'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 3, 'depend' => array(), 'recommend' => array());
$config->group->package->file->privs['file-setPublic'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 25, 'depend' => array(), 'recommend' => array());
-$config->group->package->file->privs['file-preview'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 26, 'depend' => array(), 'recommend' => array());
+$config->group->package->file->privs['file-preview'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 26, 'depend' => array('file-download'), 'recommend' => array());
$config->group->package->commonEffort = new stdclass();
$config->group->package->commonEffort->order = 5;